Live data from Hacker News

The Go Programming Language and Environment

cacm.acm.org

71–80 of 250 posts

Re: The Go Programming Language and Environment

#71

For me it's development speed through compile time and easiness. Extending my service is so fast. Just write the the code, compile it in seconds and it mostly works 90% first try. Love it so much.

> Extending my service is so fast. Just write the the code, compile it in seconds and it mostly works 90% first try.

This basically describes... every popular programming language. How would this be different in f.e. C#? Compile times might be a tad bit faster but that's about it?

Re: The Go Programming Language and Environment

#72
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.

Re: The Go Programming Language and Environment

#73
post #59

Started a project in Golang this week. Looked into web frameworks and was underwhelmed. Settled with Echo as it seems to have the only decent documentation. Still no good templating library, will settle with html/template and try to add something else for template inheritance. (I chose Golang for the best async scheduler and the very fast compile times).

Take a look at GoBuffalo

Thanks!

Re: The Go Programming Language and Environment

#74
post #30

I think it misses * Made by really famous veteran language designers * Backed by Google Not saying it doesn't deserve its popularity, but most of the things listed are not necessary for explaining its popularity, and none of them (even taken together) are sufficient.

In my case "backed by Google" was a deterrent, not a feature. I gave the language a chance after trying Rust (backed by Mozilla - which was a feature to me ;-) and I found it easy to start. Go is very well documented: That was the killer feature for me. No more search tutorials / videos etc. - just get the go book, read it, and start coding. Of course there are tutorials and videos everywhere for fun stuff. But good…

I suspect that documentation quality is part of "by veterans", people old enough to have a considerable part of their programming biography set in the days before Google driven development. Slightly ironic.

Re: The Go Programming Language and Environment

#75

I think it misses * Made by really famous veteran language designers * Backed by Google Not saying it doesn't deserve its popularity, but most of the things listed are not necessary for explaining its popularity, and none of them (even taken together) are sufficient.

>- Made by really famous veteran language designers

- Backed by Google

Looking at decades of how various programming languages gain popularity, those proposed reasons don't seem that convincing when we look at counterexamples.

E.g. counterexamples of unknown (at the time) creators creating popular languages : Bjarne Stroustrup (C++), James Gosling (Java), Rasmus Lerdorf (PHP).

E.g. counterexamples of famous computer scientists creating languages that were not widely adopted : Alan Kay famous for Smalltalk but Squeak is not widely used, and Niklaus Wirth famous for Pascal but later Oberon not widely used.

I think Go's popularity is mostly explained by technical reasons:

1) compiles to a single executable that's easy to deploy. This is a compelling advantage over Java,C#,Python,Ruby that require runtimes or complicated virtual environments.

2) a good enough standard library that's useful for quickly programming middleware type of apps on servers. Server-side infrastructure apps are Go's sweetspot. Go's a better productivity baseline than C++ and Javascript with their bare standard libraries that requires researching "what's the best library?" on Stackoverflow or browsing NPM repos.

3) "go routines" which some think of as the "killer feature" because that concurrency mental model is easier than threads or async/await.

I'm guessing those 3 tech reasons attract more programmers than people that think "Rob Pike and Ken Thompson are famous guys at Google so I'll use Go". Regardless of celebrities, the language itself still has to have some compelling technical advantages for it to grow in usage.

Re: The Go Programming Language and Environment

#76
post #60
post #50

Earlier quoted context omitted.

The amount of Go projects in Cloud Native Foundation shows otherwise. Most people pick languages based on platforms, not a language in isolation and go hunting for projects. As for the point migrated to a compiled language from Python, if it wasn't for the shinny thing, the migration would have been to a compiled language with proven record in prodution like C and C++, as it is common on the ecosystem. And regarding…

> The amount of Go projects in Cloud Native Foundation shows otherwise. That says nothing at all, actually. Beyond the transparent appeal to authority, why would anyone take decisions seriously when they are made without any technical merit in mind and just follow a mix of cargo curlting and pushing in-house tools, such as the case of the kubernetes migration to Go? > Most people pick languages based on platforms, no…

> This personal assertion ignores the fact that there are plenty of alternatives that considerably improve over C++, let alone C (?!)

While it is easy to improve on C++ it's proven difficult to improve on C[1].

C++ is an exceptionally large language, with lots of features that interact in subtle ways which trip-up even experienced programmers from time to time. It includes all the footguns from C, and adds an order of magnitude more.

C is a dead-simple language with only a few really dangerous footguns (which are also present in C++), mostly related to memory errors (corruption, leaks, races, etc).

I view C++ as "C with more footguns".

I view Go as "C without the memory error issues".

It's not really comparable to C++ because it is a better C, not a better C++.

[1] I think that only Go has managed to improve on C.

Re: The Go Programming Language and Environment

#78
post #60
post #50

Earlier quoted context omitted.

The amount of Go projects in Cloud Native Foundation shows otherwise. Most people pick languages based on platforms, not a language in isolation and go hunting for projects. As for the point migrated to a compiled language from Python, if it wasn't for the shinny thing, the migration would have been to a compiled language with proven record in prodution like C and C++, as it is common on the ecosystem. And regarding…

> The amount of Go projects in Cloud Native Foundation shows otherwise. That says nothing at all, actually. Beyond the transparent appeal to authority, why would anyone take decisions seriously when they are made without any technical merit in mind and just follow a mix of cargo curlting and pushing in-house tools, such as the case of the kubernetes migration to Go? > Most people pick languages based on platforms, no…

Docker took the decision to pick Go when it was at version 1.2, hardly that much proven into the battlefield.

In 2014 unless we are talking about Ada, there were hardly any better alternatives to C++.

If Go is so much better, why does Python eco-system keeps using C++ instead of Go for ML libraries?

Re: The Go Programming Language and Environment

#79
post #30

Earlier quoted context omitted.

In my case "backed by Google" was a deterrent, not a feature. I gave the language a chance after trying Rust (backed by Mozilla - which was a feature to me ;-) and I found it easy to start. Go is very well documented: That was the killer feature for me. No more search tutorials / videos etc. - just get the go book, read it, and start coding. Of course there are tutorials and videos everywhere for fun stuff. But good…

To me, in the old Go vs Rust debate, there are two things that are abundantly clear in making a compelling case for Go. First, I don't think even the most devoted rustacean can deny that Rust has a hell of a learning curve. But perhaps most importantly is that Go has a strong and extensive standard library that covers many 21st century applications (e.g. talking to REST APIs). The problem to me with the Rust "no stdl…

The most interesting thing about the go vs rust debate is that it happened. In hindsight it seems abundantly clear that they aim for entirely different fields with negligible overlap, almost as if you'd lump together tennis and golf because they are both ball games with a somewhat upperclass bias ("how different can they be? And I hear polo is the same but with horses!").

But back then? Yeah, I was kind of expecting one of them to "win".

Re: The Go Programming Language and Environment

#80

Started a project in Golang this week. Looked into web frameworks and was underwhelmed. Settled with Echo as it seems to have the only decent documentation. Still no good templating library, will settle with html/template and try to add something else for template inheritance. (I chose Golang for the best async scheduler and the very fast compile times).

Go has the same problem as Python when it comes to web frameworks. It's just so easy to whip op your own middleware on top of the standard library, so there is no One True Option for middleware/framework.

What do you mean? I don't do Python, but I know of at least three Python web frameworks: Django, Flask, and FastApi.
Post reply on HN