One of Go’s features is that it doesn’t have an excess of features, and frankly, I think that feature is undervalued.
There’s an interesting discussion on Quora about the differences between Golang and Scala.
As a former academic with tendencies towards functional programming, I used to be very tempted by Scala.1 It offers all the functional goodness without the exoticism of Haskell, and came with reasonably good tools and frameworks. Like Clojure, it’s a functional language you can actually do some work with.
The problem with Scala is, the more advanced you get, the more complicated (unreadable?) your code becomes. I remember that back in grad school the dude who was able to doodle the craziest and mathematically most challenging solution to some problem in Haskell was someone everyone looked up to. But it turns out in the “real world” simplicity always trumps virtuosity and sophistication, which is one of the many reasons I love Golang so much. A language with no “magic,” good concurrency support, great documentation and community that compiles into machine code and runs faster than Python? Yes, please.
Read the whole Quora thread, though, there’s a lot of interesting stuff there.
- This is not to say that I don’t like Scala. I really do, it’s just that my love for it is, hm, not as unconditional as it used to be. ↩