50 comments

[ 3.1 ms ] story [ 122 ms ] thread
No. I don't see any benefit of using it over java or JVM languages like clojure/Scala which have huge ecosystem attached to them and now even clojure supports Go like concurrency too.
I've actually seen more Scala adoption than Go. In my experience Scala is getting used in production whereas Go is something people play around with from time to time.
Because there are multiple mature web frameworks for Scala, I think. Go has yet to produce one (Revel? I think is coming close). I think web frameworks help drive adoption. I see that happening with Haskell too (as web frameworks mature more people get into it through that).
Compare Go in early 2014 to Scala early 2006, that is when they were about the same age.
If it really is set to "take over the world" it will need to be growing subtantially faster than 2006's Scala.
Haskell has been getting a lot of attention in the last two years too...

I think Go will boom but will take the stage with multiple other languages.

Go is nice but not great(lack of generics). Haskell is great but FP is not for everybody.

I'm still waiting for a C like alternative with garbage collection and "leaner" syntax. If anybody knows such a language, i'm opened to suggestions.

I agree, I'm not a Go lover but I'm learning it though because it will be prominent - like Javascript, no matter how much I hate that language.

Haskell on the other hand is incredible but the learning curve is pretty rough.

I haven't played with Rust much but I think that looks promising; also what about D? I played with it a bit and it's a wonderful language I think; none of these languages meet my desire for Haskell's type system though so I've mostly been writing software in that.

As much as web development belongs to Rails outside SV.
Fwiw, I work outside SV (France) and plenty of startups rely on Rails for web dev here...
I do enterprise consulting across Europe.

The only Rails applications I saw so far, on the projects I am part of, was to report build status information.

It was written by an external startup company that disliked using the existing Java infrastructure.

Then we just happen to work for different customers, I think :-)

But these companies definitely exist out of SV (your previous point): apart from working for startups, I also do enterprise data integration consulting using Ruby alone or together with Rails. I also use JRuby in that setup, to interface with existing Java apps etc.

It's always a safe bet that any new language will fail spectacularly. Also everybody is not Google and have massive speed/concurrency needs.
The author is providing evidence why the "safe bet" may not be so safe as you say. You'd need to provide counter arguments to his to refute him.
People keep saying that Go can be used for systems programming, but not backing that up. It has a non-optional garbage collector and it's garbage collector isn't nearly as good as the state of the art. Why do we expect it to be able to handle systems programming tasks?
I think that's what Rust is coming on to the stage for, no? It's going to be a while before it's ecosystem is mature enough but I think that's a promising language.
Sugu Sougoumarane from YouTube discussed his Go-based "Vitess" MySQL scaling system (https://github.com/youtube/vitess) at FOSDEM over the weekend. The system powers every single youtube.com page load with sub-2ms latency and each instance serves ~50kqps (with more than 500kqps globally). That's serious systems programming in Go, and it works great for them.
The next decade could belong to Julia.
The next decade could belong to Fortran. It just could. Because of time travel and stuff.
It's missing some key features (Generics anyone?) that put it somewhere in terms of usability between C and Java, and it has nowhere near the same tooling or performance characteristics as the JVM. So, it has a while to go yet I think but would love to see a serious JVM competitor here.
In terms of ecosystem and performance only .NET.
Once you write a decent amount of Go code, you won't miss generics.
Go can't compete on performance with C and has a fairly primitive GC. It also isn't nearly as expressive as python or ruby. It seems like Go fans hope that if they repeat it often enough that Go will somehow "own the next decade".
But Go does compete with C on performance for many tasks. If you're going to make a negative assertion, please back it up.
I have yet to encounter such a task, and "competing" is not the same thing as matching or beating.
You said "Go can't compete on performance with C". It sounds like you are now moving the goalposts.
I also said that I had yet to encounter a task where Go competed with C, which is completely consistent with "Go can't compete on performance with C".

I also went on to point out that since Go can't even compete with C it then clearly cannot match or beat it either :)

Perhaps if you had added a qualifier like "... for the tasks I encounter" in your original message then you would have been more accurate. There are plenty of tasks that other people do where Go is competitive with C. You were making a generalisation that is not true in general.
That should be covered by the "I" in "I have yet to encounter..."
Go is the most exciting new mainstream language to appear in at least 15 years

I'm not sure Go even counts as a mainstream language, as I see no evidence of significant penetration in the industry. It has a couple of interesting features (goroutines might be an example), but it's missing other useful features that numerous modern languages provide (generics probably the most obvious example), it has a not-quite-C syntax that seems to be different but without really improving very much, its GC strategy doesn't seem to fit with positioning it as a systems programming language, it has limited facilities for robust error handling... I'm not sure many people would even have noticed it if Google hadn't been behind it.

What is "significant penetration" from your perspective? It is very young (as a 1.0, not even 2 years old). What language would you compare it to, and where was that language at 2 years old?

What was Java adoption in 1998? What was Scala adoption in 2006? What was Python adoption in 1996.

Unless the trend lines shift, Go is a IMHO something of a phenomenon. It seems to hit a lot of sweet spots in deployment, tooling and simplicity that is making a lot of groups happy. It is already being used to build tools people depend on (docker [just raised 15M], packer, nsq, juju, heka, coreOS), it is fast (http://www.techempower.com/benchmarks/) ... additionally, it seems to have decent penetration on both ends of the spectrum, large enterprises and tiny start-ups are choosing it (http://code.google.com/p/go-wiki/wiki/GoUsers), DevOps and Software Engineers are living together in rare harmony due to painless deploys and handoffs.

If you want to use GitHub as a barometer of language popularity ... http://adambard.com/blog/top-github-languages-for-2013-so-fa... --- Go is tracking darn close to Scala, despite being 8 years younger.

What is "significant penetration" from your perspective?

I don't know exactly how I'd quantify it, but seeing evidence that a broad range of substantial projects are using it in production and/or a substantial proportion of practising software developers were at least aware of its existence would be a good start.

What language would you compare it to, and where was that language at 2 years old? What was Java adoption in 1998? What was Scala adoption in 2006? What was Python adoption in 1996.

Hardly anyone uses languages that immature for real work. None of the languages you mentioned could reasonably have been called mainstream at the times you mentioned. Scala still can't today.

it seems to have decent penetration on both ends of the spectrum, large enterprises and tiny start-ups are choosing it (http://code.google.com/p/go-wiki/wiki/GoUsers)

That's an impressive list for a language so young, but when you start reading the supporting links, it turns out that quite a few of the "Go users" are minor supporting projects. For example, the gov.uk project is vast, but it appears Go was only used to write a routing tool; the main sub-sites are written using languages like Ruby and Python. Another popular project I noticed is GitHub, but it turns out that the cited blog post is about "a really simple, low traffic service to dip our toes in the Go waters."

There's nothing wrong with these early experiments, of course, but if you want to claim mainstream status, get back to me when all of a site like GitHub or gov.uk is written in Go, or when the big G themselves are using it for something like the back-end of Google Mail or Google Search rather than the Santa Tracker.

If you want to use GitHub as a barometer of language popularity

Well, I don't think GitHub is a particularly useful barometer, but OK...

Go is tracking darn close to Scala, despite being 8 years younger.

Enough said.

Sorry if this post comes across as a bit snooty, but it's hard to reply entirely seriously when almost everything I'm replying to is making my point for me. I have absolutely nothing against putting new languages out there or even just new language features that might be interesting to explore. But the idea that a language that is mostly an incremental development of what we already have in abundance and that is barely out of prototype stage will somehow take over the world for the next decade is just silly, and it's still silly even if the language happens to be promoted by Google.

Well said. Java in 1998 was already overwhelming although there were lot of debating. The entire system of Java is so solid, especially in handling multi-threading. Coding is not that simplified, but very robust. Comparatively, using GO and raft protocol in the CTF 3.0 sounds weak and problematic.
Most of the attention Go has been getting so far has been due having the Google name associated with it. If it had been $RANDOM_LANGUAGE from Google that would also have receive a bit of attention.
Go, Java, C#, ... => controlled by a large corp.

C/C++, Python, Ruby, D, Haskell, (Rust,) ... => controlled by a community.

I think this "large corp" control is not beneficent in the long run.

Go is not "controlled by a large corp". Sure, its development is led by a small core team employed by Google, but there are hundreds of contributors from outside Google and more non-Google committers than Google committers.

Go has a BSD-style license (http://golang.org/LICENSE) and includes a patent grant (http://golang.org/PATENTS) meaning that it is truly owned by the community. This is very different to C# (which is more or less entirely a commercial venture) and Java (of which Oracle aggressively defends its ownership).

Where would Go be if it wasn't a Google language?
It wouldn't have had the amount of engineering time put into it that it has. Google employs a bunch of people to work on it full time.
Exactly, it would be as sucessful as Limbo was.
Your list is a bit skewed.

C and C++ were created by a large corporation (AT&T). Have their features driven by standards bodies composed by employees of compiler vendors. The official version of the standards are only available for a fee.

Haskell and OCaml enjoy the sponsorships of Microsoft Research, Facebook, Galois among others.

Guido has been on the payroll of many corporations.

thanks for pointing that out.. i knew i had to do more research before posting it, but i was a bit in a hurry and mostly wanted to get my gut-feeling out.

when it comes to sponsorship and creator-payrolling, i dont think that counts as being "controlled by large corp". if M$ really controlled haskell, how could it possibly create such solid programs? </joke>

> when it comes to sponsorship and creator-payrolling, i dont think that counts as being "controlled by large corp"

People need to pay the supermarket.

People don't know the skill, experience and the wisdom of the designers. Every freaking detail in Go has been thought out over decades deeper than most people ever can...go ;-). And it is a language of Pike, Thompson, Griesemer & al. not Google. It is more Bell Labs than Google.