4 ms·
I don't want to disdain the success of Go, and I think the whole building of the community from the ground up is an achievement that few can say they were able
by leovonl 10y ago
I don't want to disdain the success of Go, and I think the whole building of the community from the ground up is an achievement that few can say they were able to do.
However, what I dislike about all this is the generalization issues (like I saw on "Moving from Scala to Go"), which misses the point of history, and what to expect next.
First, saying "look how Go simplified our code by not allowing anything too complex" and using that example is very biased against someone that usually programs using applicative functors and don't really see anything overly complex in that code - besides some overly compacted structure which makes reading a bit hard. And that comes from someone that is not a Scala programmer, BTW.
In fact, from the "applicative functor" guys, most OO code would be deemed overly complex - and TBH with some sound arguments - but the "improved Java" camp would think that reasoning about shared mutable state is easier...
Second, the article tries to reason that it's a matter of being opinated, but it's not a matter of just being opinated: it's a matter of having that particular opinion, which means using simplified concepts without any ways to really elaborate them further, and having a more lax approach about exact semantics, types, etc. Very nice for beginners, as you don't really have much to learn, but most programmers that like it now would start hitting that expressivity ceiling soon.
Which brings me to the history part: it's funny to think that Java was born in a very similar way: no generics, tried to follow the most popular paradigm of the time as closely as possible and stay simple.. then people started using it, requesting improvements, and it became more and more complex after each release - until everyone realized that the very same thing that got everyone using it (simplicity) was not really there, as the complexity moved from the language to your code. Boilerplate over boilerplate, ever-increasing tightly-coupled frameworks, and there you go.
If I had to guess, I'd say 10 or 20 years in the future we may see the same happening with Go (if it tries to become more expressive) or it being put aside as a niche language (if it stays the same). But only time will tell it's fate.