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).
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.
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.
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.
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.
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".
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.
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.
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.
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 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).
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>
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.
50 comments
[ 3.1 ms ] story [ 122 ms ] threadI think Go will boom but will take the stage with multiple other languages.
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.
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.
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.
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.
http://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Syste...
Or at Xerox PARC in the early 80's
http://bitsavers.trailing-edge.com/pdf/xerox/parc/techReport...
https://en.wikipedia.org/wiki/Betteridge's_law_of_headlines
[1] http://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines
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 :)
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 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.
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.
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 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).
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.
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>
People need to pay the supermarket.