Why I like go
I’ve been using Go as my main programming language at work for the last 6 months. Here’s why I absolutely adore the language.
Go is remarkably simple. It’s an object oriented programming language but instead of the more typical classes you find in C# or Java it only has structs. Structs cannot inherit, meaning you can’t end up in inheritance hell. I won’t go into detail why inheritance is bad, but if you want an explanation Inheritance is Inherently Evil is a good read on that. All you want to achieve with inheritance can instead be done through composition and the use of interfaces. It also gets rid of generics. This means that the code you read will be clear and simple. It might be more verbose than many other languages but you also carry more control.
The standard library is pretty damn good. Rarely do I ever need to step out of it. The usual suspects here are the ORM and testing/mocking frameworks. I will add that testing and logging are pretty sub-par compared to other standard lib packages, as Or Hiltch states in his article but hopefully will be improved on sometime in the future. If these are improved, I will only need to use external libraries for exotic projects.
Go is a compiled language. It’s not as fast as C or C++ but in many cases it’s faster than Java. I’d expect it to become even quicker once it becomes more mature. For a comparison versus other languages, you can take a look here. I know that benchmarksgame is not an authority in any regard but it’s probably as close as we can get to a reliable benchmark at the moment. With the Go’s excellent performance and easy to understand syntax it’s a pleasure to develop applications that are rather quick.
Making code concurrent can be pretty daunting in many languages. Even if it’s not too hard to achieve it will come with the caviat of using a lot of memory per thread. Go was designed for this, meaning that goroutines are both inexpensive and easy to add to your code. Golangbot has a nice short tutorial on goroutines if you’re curious to see how they work. The built in concurrency capability of go makes for an excellent experience when writing concurrent code. It does take some time to get used to but once you get the hang of it - it starts happening naturally in the code you end up writing.
Many open source projects fail a few years after their initial launch. Having a serious backer like google behind Go makes me certain that the language is here to stay. What is more the process for making software is demanding both in time and money. Even more so for large caliber projects such as a programming language.
Opensource.com has an excellent article on why Go is growing in popularity. What this means is that as time passes more and more companies are going to look to hire Go developers. Having a head start here will make me a potentially better candidate than those who will not have the prior experience.
The ability to cross compile allows to build the binaries on any machine for any target, allowing for easy deployments and no headaches related to OS or architectures.
I mean… just look at it.
Makes my day every time I see it.
Why do you like/dislike Go? Let me know in the comments below.