Who here is learning Go? Are other companies looking at using it? Is it likely to become widely used?
12 Answers
When it comes to programming languages, the old adage, "it's not who you are, it's who you know" definitely holds true. C and C++ were sponsored by AT&T, Java was brought to us by Sun, the .NET family came out of Microsoft, and all of them got very popular very quickly. Then we have Objective-C and Python, which were around for quite a while and stayed really obscure until they were discovered and hyped up by Apple and Google, respectively, and then suddenly they really took off. But languages without a major sponsor tend to languish in obscurity, no matter how good they are.
Go is sponsored by Google. It's not difficult to arrive at the right conclusion here. Give it five years and it's gonna be huge.
- 83,213
I actually don't think that Go will be that successful. A reason to why it will not reach the big masses is that it is intended to be a language for system programming.
- 14,887
- 10
- 70
- 103
There is a real need for a systems language with more modern features. C and C++ are too bound by legacy code and backwards compatibility here to improve much. That said, I don't think Go fulfills that role in its current form. Its design is too minimalist. While its concurrency model is exciting, it brings few other features from higher level languages to the systems world. (Last time I checked, which was admittedly a while ago, it didn't even have exceptions.) Furthermore, at least to the extent that the Computer Language Benchmark Game is a good measure (it's admittedly a very rough indicator), it's not nearly as fast as a "real" systems language needs to be.
I think the language with the best chance to fill the void of a more modern systems language is D. D is technically much stronger than Go but politically weaker. It's not backed by a major corporation. What it really needs is some libraries (this is rapidly being addressed now that the language spec is stable) and a killer app.
- 17,284
I am learning Go and yes, it is used productively besides Google and Heroku.
Go is definitely a nice language for System Programming. Simple code as in C, powerful structures as in C++ and safety features as in Java. Since it is a very young language a lot of nice things from other languages have been inherited:
- iteration over ranges
- Channels (forget mutexes etc.)
- no type hierarchy, only interface inheritance
- in fact Go doesn't even know classes but more flexible "Types": interfaces are automatically inherited when defined methods match
- less boilerplate:
i := 1instead ofint i = 1,func f(x, y, z int)instead ofvoid f(int x, int y, int z),type Foo struct { a, b int }; bar := Foo{1, 2}instead ofclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2); - exceptions ("panics") only for really exceptional cases: in the other cases error-prone function can return an extra error parameter which you can easily ignore
Considering all these nice things and the safety and performance only known from statically typed languages a lot of people from the dynamic languages community have started to like Go. In most cases Go-code is not much longer than Ruby-code, but in every case safer and better structured.
But in the end I guess the killer argument for Go is concurrency. It is a C-like language that has a powerful concurrency support that is only known from functional languages.
- 1,669
It might be a little late for this, but Go is becoming a popular language now and will likely enter the mainstream with Google pushing it forward. It's being pushed as being a language used for systems and products within Google and is being pushed as a language to use with Google App Engine. There are some very sharp folks on the backend of Go building and enhancing it. There are some very clever and imaginative people working on third-party libraries for Go.
Go fills a void that other languages have not quite filled. For me, I used to try to fill that void with Perl and a bunch of workarounds and tricks. I don't believe it's the perfect language for all situations and all people, but it certainly is a candidate for quite a large number of situations. For example, it works great for web apps while also working great for desktop apps or server-based apps. It does such a fantastic job with HTTP and WebSocket (which means you can skip Apache or nginx altogether) while also running very well on Windows, Linux, and OS X for both daemons and for regular ol' desktop apps. Right now the only situation that it fails for me is for Android apps, which I hope is remedied soon. I use it for Windows desktop apps, Linux desktop apps, and Linux-based web apps. It feels good to get real work done and not have to tinker with workarounds.
I believe it will be several years before it really hits the mainstream, but it will get there. I think it needs to get more third-party libraries built, much like the sort of number and selection that Perl has with CPAN. It'll get there.
- 159
I would say that this mainly depends on the libraries/services/software that will be created in/for/using Go. People use something in three situations (order matters): when they have practically no other option (Objective-C), when their surroundings use it (FORTRAN), when it makes their live easier (Ruby).
- 1,220
What does “mainstream” mean anyway? Without knowing that, it's ever so hard to answer this question. Let's look a bit at that.
There are many possible definitions. Here are a few:
Management view:
- Have customers demanding you use it
- Have management demanding you use it
- Won't get criticized by management for using it
Developers' view:
- Language tools commonly available (e.g., in Linux distributions)
- Language tools will be commonly available for 10 years
- Creates software artifacts that will persist and be used for at least 10 years
Careerist view:
- Language-specific skills are transferrable to other jobs
- Recruiters ask for it
Given all of the above, I'd argue that the only honest answer is probably “too soon to tell” but I believe the best indicator of any real longevity is the number of small businesses that use the language. Big organizations are all very well – they might even be essential to growth of a language or system of tools because of the scale of investment they can apply – but they're rather prone to passing fashions (with a few exceptions). By contrast, if a small business has built itself up around using the language to deliver products and services, they're very likely to want to contribute towards ensuring that they will still be able to do so in the future. They also form the bedrock of a strong job market in the area, and demand for tools too. Funnily, those are several indicators of mainstream-ness on my list (possibly more, depending on the whims of management).
So, how many people outside Google are using Go for their work? I have no idea. (I'm not. My needs are currently well served by a mixture of Java, C and Tcl. YMMV.)
- 6,427
It is already more popular than some languages.
There is a possibly, that Go is the most important language in 20+ years. It really does present some great benefits in terms of massive datasets, which social media sites, cloud computing, Search and Mobile present.
Sites like Facebook, Twitter, Linkedin, YouTube and Ad-Serving networks have much more use for Google Go than Ruby On Rails, at least in some contexts.
- 98
I looked into Go when I heard of it. As a complete beginner I'm still learning the beginner languages (in my case Java, C#, Python and Scheme) which is a lot to take in, but if I wasn't engrossed in so many different languages I would have seriously considered it
I figure at my level, there's no harm in getting the basics down before jumping on bandwagons. Though, if I remember right, when I was looking up Go, I became very attracted to Erlang for some reason.
- 29
I've only just looked at Go because of this question so I can't really comment on whether it will take off as a mainstream language, but one thing has just got me really excited:
http://golang.org/doc/go_spec.html#Channel_types
I first came across the concept of Channels in Occam-pi and I must say it is one of the best programming concepts ever. It makes concurrency seem so easy where doing the same thing in a C-type language can sometimes be a pain.
From what I've seen (in the 10 minutes I've looked), Go looks to be trying to combine many different programming concepts, but that does have the risk of it being a Jack of all trades, a master of none.
- 1,908
- 15
- 18
I suspect that whether it becomes mainstream will depend upon whether Google adopt it as a supported language for appengine and / or GWT.
- 1,819
I wish Go will become popular.
It's powerful in syntax. (Learn the advantages from python, C, Java). It's good for multi-core CPU. (The channel function much better then thread programming). The design prevent many programmer's pitfall. (wrong pointer, same coding style by tool gofmt, prevent variable uninitialized bug, At first time, I try it at first time as it is python + C but with the speed near 1/2 speed of C.
But, after deeply learn I found it may suitable to develop fault tolerance and scalable architecture
- 117