DEV Community

Evan Lin
Evan Lin

Posted on • Originally published at evanlin.com on

QCon Conference Notes: The Why of Go

Preface

Why learn Go(lang)? Go has many shortcomings: no Generics, error handling is troublesome, Dependency Management... These issues are often discussed. But, have you ever thought about what the advantages of Go are? What made us fall in love with Go(lang) in the first place?

Carmen Andoh's presentation at QCon in 2017 was excellent; she was still working at Travis CI at the time. This presentation includes a lot of language-level organization and performance evaluation data analysis. I recently met her at a Golang Meetup Organizers gathering, where she represented the Google Go team and discussed the Go tenth-anniversary celebration with everyone.

Welcome everyone to read this article:

https://www.infoq.com/presentations/go-concurrency-gc/

QCon2017: Carmen Andoh - The Why of Go

URL

The speaker first described the development evolution of programming languages at the language level. Everyone believes that each language has parts that can evolve, so there are different language evolution processes. The development of the Go language in 2009 was also the case. The items that were often complained about Go language at the beginning are as follows:

(Reference URL: https://github.com/ksimka/go-is-not-good)

  • Lack of syntactic sugar: Compared to other languages, Golang does not have syntactic sugar.
  • No generics: This is not explained.
  • error handling:
    • The complaint is that too much is written.
err := foo()
if err != nil {
    ......
}
Enter fullscreen mode Exit fullscreen mode
  • No macros or templates

More details can be found in this article: https://github.com/ksimka/go-is-not-good

This page mentions that the current environment is different from thirty years ago and requires a more suitable programming language, and focuses on solving the following related issues:

  • Multicore processor
  • Networked systems
  • Massive computation clusters
  • Web programming model

This lists the enhancements Go has made for the needs of the 21st century, which is also the focus of this presentation.

  • Concurrency: Refers to goroutine and channel
  • Distributed Systems: For distributed systems, cross-compile is needed. It is very suitable for deployment as a micro-service in a distributed system.
  • Garbage Collection: This is not explained here.
  • Code Readibility:

Finally, this screenshot is from a quote by Dave Cheney in a seminar, and I personally like this quote very much. It says, "Engineers should be hired to solve business problems, not to try to maintain someone else's code."

But we often hear the term "psychic engineer" (representing that due to handover or insufficient documentation, maintaining someone else's code is like needing psychic abilities), which are all code readability issues.

Because Golang itself does not have complex "language sugar," code maintenance can be relatively simple.

This presentation is quite good and is very suitable for everyone to study carefully.

Refer:

Top comments (0)