
Does the next decade belong to Go? - rahulroy
http://blog.joshsoftware.com/2014/02/04/does-the-next-decade-belong-to-go/
======
Silhouette
_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.

~~~
MetaCosm
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/](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](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...](http://adambard.com/blog/top-github-languages-for-2013-so-far/) \--- Go
is tracking darn close to Scala, despite being 8 years younger.

~~~
Silhouette
_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](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.

~~~
dclara
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.

------
kasey_junk
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?

~~~
enneff
Sugu Sougoumarane from YouTube discussed his Go-based "Vitess" MySQL scaling
system
([https://github.com/youtube/vitess](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.

------
tejinderss
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.

~~~
thescrewdriver
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.

~~~
MetaCosm
Compare Go in early 2014 to Scala early 2006, that is when they were about the
same age.

~~~
thescrewdriver
If it really is set to "take over the world" it will need to be growing
subtantially faster than 2006's Scala.

------
norswap
By Betterige's law of headlines [1], I can safely answer this question by
"No".

[1]
[http://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines](http://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)

------
jenandre
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.

~~~
themightykevdog
Once you write a decent amount of Go code, you won't miss generics.

------
cies
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.

~~~
enneff
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](http://golang.org/LICENSE)) and includes a patent
grant ([http://golang.org/PATENTS](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).

~~~
pjmlp
Where would Go be if it wasn't a Google language?

~~~
enneff
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.

~~~
pjmlp
Exactly, it would be as sucessful as Limbo was.

------
thescrewdriver
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".

~~~
enneff
But Go does compete with C on performance for many tasks. If you're going to
make a negative assertion, please back it up.

~~~
thescrewdriver
I have yet to encounter such a task, and "competing" is not the same thing as
matching or beating.

~~~
dsymonds
You said "Go can't compete on performance with C". It sounds like you are now
moving the goalposts.

~~~
thescrewdriver
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 :)

~~~
dsymonds
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.

~~~
thescrewdriver
That should be covered by the "I" in "I have yet to encounter..."

------
ixmatus
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.

~~~
camus2
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.

~~~
ixmatus
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.

------
NigelTufnel
It's always a safe bet that any new language will fail spectacularly. Also
everybody is not Google and have massive speed/concurrency needs.

~~~
gallamine
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.

------
gatestone
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.

------
pjmlp
As much as web development belongs to Rails outside SV.

~~~
thibaut_barrere
Fwiw, I work outside SV (France) and plenty of startups rely on Rails for web
dev here...

~~~
pjmlp
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.

~~~
thibaut_barrere
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.

------
zaph0d
The next decade could belong to Julia.

~~~
norswap
The next decade could belong to Fortran. It just could. Because of time travel
and stuff.

