Live data from Hacker News

The Go Programming Language and Environment

cacm.acm.org

61–70 of 250 posts

Re: The Go Programming Language and Environment

#61
post #41
post #33

Easy, - Backed by Google - Plan 9 and UNIX people as designers - Docker migrated from Python to Go - Kubernetes migrated from Java to Go - After Docker and Kubernetes explosion, all Cloud Native Foundation projects start using the same language, thus adoption

> - After Docker and Kubernetes explosion, all Cloud Native Foundation projects start using the same language, thus adoption This take sounds highly unrealistic. No one in their right mind would ever say "well Docker/Kubernetes were developed in Go, thus that means it's a good idea to develop a totally unrelated application that bares no resemblance or shares any use case in Go as well". Also, migrating away from an…

There's a number of things at work in these situations, but I people who start out and/or want to work for Docker are highly incentivised to learn Go, and have a Job with Go in the description. In the current job market, if developers want to use a specific language, it is often times a good idea for companies to just go with that language, even if it isn't the perfect fit for the project... And then again, project leads aren't immune to hype either, a new, popular language will be used more, simply through being hip and attractive.

Re: The Go Programming Language and Environment

#62
post #12

Earlier quoted context omitted.

Like Go, C# has also always been a decade behind on the tooling side. For a recent project I wanted very fast HTML templating and I/O. Went with C# instead of Go and it's looking pretty good so far. The tooling is close to the level Ruby was ten years ago, and that was really acceptable. I was very happy with my previous project that I did in Go as well, you just can't go wrong with Go for implementing network protoc…

Why people always mention tooling but never explicitly mention which tooling they miss? I use Java for 4 years and I constantly find stuff that's missing here where other languages have it baked in from day one

> I constantly find stuff that's missing

You didn't mention which tooling you miss.

Re: The Go Programming Language and Environment

#63
post #41

Earlier quoted context omitted.

> - After Docker and Kubernetes explosion, all Cloud Native Foundation projects start using the same language, thus adoption This take sounds highly unrealistic. No one in their right mind would ever say "well Docker/Kubernetes were developed in Go, thus that means it's a good idea to develop a totally unrelated application that bares no resemblance or shares any use case in Go as well". Also, migrating away from an…

There's a number of things at work in these situations, but I people who start out and/or want to work for Docker are highly incentivised to learn Go, and have a Job with Go in the description. In the current job market, if developers want to use a specific language, it is often times a good idea for companies to just go with that language, even if it isn't the perfect fit for the project... And then again, project l…

> And then again, project leads aren't immune to hype either, a new, popular language will be used more, simply through being hip and attractive.

Resume-driven development does sound like a key factor, even in the decision by Go advocates in Google that pushed for Kubernetes to be rewritten in Go.

But somewhere along the line people are forced to consider technical aspects.

Re: The Go Programming Language and Environment

#64
post #45
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…

Note that Golang is older than Rust. When it came out it made a splash, despite not having any books or videos yet, despite not having any libraries available yet. It didn't die in obscurity (like someone else's "Go" language that existed before!) precisely because it had names of Rob Pike & Google associated with it.

Yes! The "killed by Google" meme is young. Back in the days it was like "i want to be like Google" (ignoring the fact that most people don't have scale like Google and very different problems) and anything out of Google must be good!

Re: The Go Programming Language and Environment

#65
I'd add one more thing: it doesn't change.

Compared to most languages, Go hasn't changed at all over its 12+ year history. It took that long to get generics, ffs.

It can be a good thing. It certainly reduces the cognitive load needed to learn the latest and greatest addition to C++ or JS.

Re: The Go Programming Language and Environment

#66
post #41
post #33

Easy, - Backed by Google - Plan 9 and UNIX people as designers - Docker migrated from Python to Go - Kubernetes migrated from Java to Go - After Docker and Kubernetes explosion, all Cloud Native Foundation projects start using the same language, thus adoption

> - After Docker and Kubernetes explosion, all Cloud Native Foundation projects start using the same language, thus adoption This take sounds highly unrealistic. No one in their right mind would ever say "well Docker/Kubernetes were developed in Go, thus that means it's a good idea to develop a totally unrelated application that bares no resemblance or shares any use case in Go as well". Also, migrating away from an…

There is a well known article (which I am totally blanking on) arguing that many successful programming languages are the Native/System Languages of a major platform.

So C is the System Language of Unix, Javascript is the Native Language of the Browser, C++ for most operating systems.

Kubernetes and containers are a major platform. You could say the System language for it and related projects is Go.

Re: The Go Programming Language and Environment

#67
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…

I agree here. Using the two examples go and rust, Go's documentation is on another level compared to rust, it's more common to see examples in Godoc's than in Rust documentation... That's not a failure of Rust or the maintainers, it's just a different culture I guess. If I want to do something in Go with a new lib, i can easily put together what I need to do using the documentation. Where as with Rust, it's often con…

I don't think Go's documentation is better than Rust, Go is just a lot simpler than Rust. Especially if you are a programmer with a background in any of the C-ish syntax languages (C,C++, javascript, Java, C#, etc), its just really easy to pick up.

Rust is a mind bending ordeal by comparison with both the borrow checker and other foreign ideas that take a while to come to terms with.

Re: The Go Programming Language and Environment

#68
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…

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 stdlib" model is it leaves you with two equally unattractive options:

      1) Write the library yourself (and leave yourself with the associated technical debt of maintaining it)
      2) Figure out which of the often dozens of third-party Rust crates you want to use (and rinse and repeat the selection process for every library, and then expose yourself to third-party maintenance debt).

Re: The Go Programming Language and Environment

#69
post #45

Earlier quoted context omitted.

Note that Golang is older than Rust. When it came out it made a splash, despite not having any books or videos yet, despite not having any libraries available yet. It didn't die in obscurity (like someone else's "Go" language that existed before!) precisely because it had names of Rob Pike & Google associated with it.

Yes! The "killed by Google" meme is young. Back in the days it was like "i want to be like Google" (ignoring the fact that most people don't have scale like Google and very different problems) and anything out of Google must be good!

It still is. Google may be killing off its site-products, but not its own software. A lot of open source software Google made for its own consumption (Kubernetes, Tensorflow, etc.) has become pretty much industry standards, despite everyone saying they're a lot more awkward to use outside of Google than inside.

Re: The Go Programming Language and Environment

#70

What I'm more interested in is the comparison between the cases of Go and Dart, which both are languages developed by Google. Why Go is so much more successful (in the system programming domain) than Dart (in the web/mobile/desktop domains)? Many of the listed good choices (e.g. being developer-focused) can be (had been?) applied to Dart as well.

I think the issue was, what was dart useful for that JavaScript or typescript didn't already solve? You had a new language that needed a separate VM to execute that offered basically nothing that typescript/JavaScript didn't already offer. There was no compelling reason for it to exist apart from "just because" - I think that had typescript taken off a few years earlier then they'd probably not have bothered with dar…

Not to turn this into a language debate, but I think it's worth pointing out that Dart is a completely new language that has a more succinct syntax and more sensible semantics than JavaScript. TypeScript is different in that it intentionally is just JavaScript with type annotations. That makes TypeScript easy to adopt but it also means it inherits a lot of JavaScript's flaws.

For example, in TypeScript you still have nonsense like "this.method = this.method.bind(this)" while in Dart, method tear-offs just work. In Dart it's trivial to implement classes with value semantics that can be used as keys in a Map or Set, which is basically impossible in JavaScript. And so on.

I think most people would agree that Dart is just a much better language than JavaScript or even TypeScript. So the succcess of TypeScript is best understood as building on JavaScript's existing popularity.

> I think that had typescript taken off a few years earlier then they'd probably not have bothered with dart.

I always suspected that Google's investment in Dart was related to the Oracle lawsuit over the use of the Java API in Android. Remember that Dart is also the language behind Google's cross-platform app framework Flutter, which was developed while the Oracle case was still in court.

I suspect that Google wanted to ensure that for Flutter they used a language and API that Google unambiguously owned the rights to, to avoid another debacle.

(Then a better question might be: why didn't they just use Go for Flutter? The technical answer could be that Go is more of a systems language like C/C++ and less suitable for UI code. In truth it might just be a common case of Google starting multiple indepent projects that accomplish vaguely the same goals.)

Post reply on HN