5 ms·
Go is successful for similar reasons as Java. - Backed by a well known Company with a good image (at the time). - Made by well known experts at the top of the
by dgb23 4y ago
Go is successful for similar reasons as Java.
- Backed by a well known Company with a good image (at the time).
- Made by well known experts at the top of their field.
- Most of the risky, complex and powerful stuff is in the runtime.
- The language surface is small, familiar, conservative and consists of mostly orthogonal features.
- Very straightforward to integrate libraries and a good standard library.
- Portability and deployment are primary concerns.
- Came out at just the right time.
- Evolves without breakage.
There are significant differences between those languages, for example the JVM is a much more dynamic runtime. But I think the conservative surface paired with powerful internals is what makes it so attractive for wide adoption. It is the "blue collar" language strategy.
Languages that have more unique value propositions, lean stronger on niche paradigms and give more power to the programmers are scarier from a mainstream business perspective. I think these kind of languages have a firm stand in their respective niches and will continue to grow steadily, but will stay specialized and at the edge, while mainstream languages slowly adopt features that have been proven to work in other ecosystems.
Go is a language that belongs to the mainstream category, like Java, C#, JavaScript, Python etc. They are "Worse is better" languages that trick you into adopting some good stuff unknowingly and they all have a laser focus on pragmatism and growth.
- DonaldPShimoda 4y agoOne area in which Go lacks is its static type system. Until recently, it was practically straight out of the '70s. Static type systems are a mechanism for outlawing the compilation of programs that are known to be problematic at the expense of outlawing comparatively few good programs — a worthwhile trade-off for a language meant to be used in industry, especially when writing complicated code. It's a shame because they absolutely could have built a better type system on the backs of all the advancements of the past half-century, but deliberately chose not to due to what I can only see as being the perspective of people who had only previously used obnoxious static type system (e.g., Java's) and decided "well we don't want that, and 'that' means types, so let's provide as inexpressive a type system as possible."
- Jabbles 4y agoAre you responding to the parent's post and suggesting that this is something to do with Go's success, or are you simply complaining?
- DonaldPShimoda 4y agoAh, you're absolutely right. I rewrote some parts of my comment a few times and accidentally removed the bit that actually connected it haha. My point was that Go seems to have managed to be successful (for some reasonable definitions of "successful") despite at least one large deficiency. In fact, it is the same deficiency for which Java's success can be said to be surprising, though Java had ~20 years fewer history to draw upon. (Java is relevant because it's what the parent comment was comparing Go to.) It is disappointing to me that Go had a really good position to provide a new language in a specific niche, but they squandered at least one significant aspect of the language design due to (in my opinion) a lack of knowledge in the relevant area. This despite being designed by "experts at the top of their field", as the parent comment noted.
- wahern 4y ago> they squandered at least one significant aspect of the language design due to (in my opinion) a lack of knowledge in the relevant area. Why do you believe the reason was lack of knowledge?
- AnimalMuppet 4y agoOne of HN's guidelines is "charitable assumption". It specifically is required toward other posters. But you might extend that charity to Go's creators. They actually were experts at the top of their field. Assuming a lack of knowledge is both uncharitable and, frankly, arrogant. It would be better to assume that they made choices other than the ones you would have made, and did so with eyes wide open and full knowledge.
- dgb23 4y agoYou can safely assume that there was no such thing as lack of knowledge about type systems and language design.
- Karrot_Kream 4y ago> scarier from a mainstream business perspective I wouldn't just say mainstream business perspective. Go's small surface area makes it a great language for a team with large turnover. What better example of that than open source, where contributors come in, contribute a change, and then leave.
- jbergens 4y agoI think it has a very different timing than java. When java came out c++ was the standard and java was clearly easier (although slower). Go is not that much easier than java or c# and it is not much faster. I don't think the standard library is much better, or even better at all and when it was new it had a lot less 3rd party libraries. Go will probably continue to grow in usage a while but I'm not certain it will pass even c# in usage. I think there is too little to gain from rewriting java or c# code and for speed I think rust is better. We will see what happens the next 5 years or so.
- anthk 4y ago>and it is not much faster You wish.