I’m currently reading the book The Go programming language.

I’ll write posts about my Go journey here.

I’m interested to learn Go for the following reasons.

I’ve seen some excellent videos about Go on YouTube. I’ve also gone through some video lectures by William Kennedy (On O’Reilly Safari). The below is mostly from what I gathered from those videos and from initial reading of the book.

Go aims to be simple. I’m attracted to anything that has simplicity as a goal. I’ve programmed in Java a lot and I always felt that I should rather program in a language that reduces unnecessary abstractions and is concise. This always led me to functional programming languages. However, I did not find any opportunities to work in functional programming languages professionally. So I couldn’t pursue them. So I remained with Java and other languages that were being used in places I worked.

Go is fast. There is no virtual machine in between. Go compiles to the machine code. The focus on speed in a language is a good thing. It attracts all the right kind of people with good intentions to keep things fast. One of the most energy sapping things about software development is how various forces at play in a typical setting conspire to slow development down to a crawl. There is hope that with Go, things will remain fast.

Go is practical. People who have created it and those that use it talk about the language in glowing terms. This is true with many languages that do not have much traction. But Go has a got lot of traction and is quite practical. We know this because Docker and Kubernetes are written in Go. Both of these are now mainstream. The popularity of these killer applications ensures that there is enough attention given to Go by serious professionals. That is a major advantage. This ensures that all the bases are covered. There will not be any serious flaws in the language.

Go brings concurrent programming within easy reach. Concurrent programming is a necessity as multi-core processors are the norm now. I’ve done a bit of concurrent programming in Java and it was never a pleasant experience. I like the idea of Concurrent Sequential Processes (CSP). This model is a lot more intuitive for me.

Go aims to have few features and one right way of doing things. This is essential for productivity. It enables us to move on to what we want to do with the language rather than constantly trying to find better ways of doing the same thing.

Go is geared for systems and backend programming. I have always worked in backend and mostly dealt with messages, queues, brokers and services. Go seems to be a good fit for programming in this domain.

Go is a modern language and yet is already 10 years old. The creators had a good measure of all the current successful languages and cherry-pick the features that were proved to be good in practice.

There are a few more considerations, however, the ones mentioned are the ones that I’m concerned with most.