Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Who here is learning Go? Are other companies looking at using it? Is it likely to become widely used?

share|improve this question

closed as not constructive by Caleb, Graham Lee, Yannis Rizos May 27 '12 at 14:37

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

18  
ruby becomes popular after rails, objective-c after iphone, what's the after for go? –  ohho Mar 21 '11 at 9:06
1  
Terrible, it doesn't solve anything for most people. –  Daniel Little Mar 24 '11 at 5:22
5  
The chances are between 0 and 1. Anything more specific would require a PhD in Prognostication, which I do not possess. –  Rein Henrichs Apr 30 '11 at 7:56
2  
@Martin I already knew that, thank you. –  Rein Henrichs Jun 14 '11 at 20:28
3  
Google should really consider developing an Android SDK for Go language. At least as a start. –  Joset May 10 '12 at 5:55
show 7 more comments

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.

share|improve this answer
1  
Java is popular at Google when it comes to handheld devices, but they don't use it internally as far as I know. –  ixtmixilix Sep 25 '10 at 11:15
12  
@ixtmixilix: Are you serious? App Engine and GWT say otherwise. –  imgx64 Sep 25 '10 at 17:41
1  
@imgx64 By internally, I mean on their servers. App Engine and GWT are for other people's benefit. ChromeOS and Android are both built on Java. But their servers use Go, as far as I know. The guts of Google, not its shiny white teeth. –  ixtmixilix Sep 27 '10 at 19:29
4  
@ixtmixilix - Guice (a Java based IoC framework) is written by Google and used in the AdWords front end and Wave. Google seam to use a number of languages. –  mlk Jan 18 '11 at 16:57
3  
+1 I agree with your main argument (FORTRAN, COBOL, and C are live and well), but I disagree about Go, because it is just an experiment far for having corporate sponsorship. –  Apalala Mar 23 '11 at 2:46
show 7 more comments

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.

share|improve this answer
16  
I disagree. Take a look at the Linux source code for 'echo', then take a look at the Go implementation of echo. If the language can shave thousands of lines off a simple command like that, it can probably shave lines off of stuff like graphics processing libraries. And if it can shave lines off of graphics processing libraries, maybe the folks at id software (for example) will someday find it more useful than C/C++. And since id has a habit of releasing source code for their games, 3d graphics in Go could be huge within 5 years. –  ixtmixilix Sep 25 '10 at 11:17
11  
@ixtmixilix Linux doesn't have anything to do with echo, thats part of GNU. –  alternative Sep 25 '10 at 13:55
3  
have you ever seen anything written in erlang? that's not god awful. –  user7410 Nov 17 '10 at 2:14
1  
I think Go will only surpass C/C++ as a system language is if Google's OS takes off. If Google's OS doesn't take off, I think it is going to have a much harder time hitting the mainstream. –  Jordan Parmer Mar 21 '11 at 15:32
2  
Neiter I thik that Go will grow very fast. My Reasons: 1. Syntax is quite strange 2. Too much Limbo 3. Library not exhaustive 4. Concurrency model is better on Erlang –  Daniel Voina Mar 24 '11 at 9:46
show 5 more comments

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.

share|improve this answer
5  
re "it didn't even have exceptions" It is a major decision was made - golang.org/doc/go_faq.html –  Mark Mar 25 '11 at 18:14
    
@Mark: Interesting. Panic and recover look like cripped exceptions. D has scope statements, which are roughly equivalent to defer(), but with normal exceptions. –  dsimcha Mar 26 '11 at 16:50
2  
It does not have exceptions, but does not need them. Instead, it allows multiple return values, making foo, err := SomeFunc() commonplace. For major issues, or spots where err doesn't work very well, you can use panic() and recover(). However, these are intentionally used very rarely; there is no way to pass exceptions way up the stack if the stack is very short, and short stacks are commonplace where there are many concurrent threads. –  crazy2be May 1 '11 at 21:38
2  
"D is technically much stronger than Go", "Its design is too minimalist". Interesting how you say this like it's a fact. It's just your opinion, face it. –  Zippoxer Jul 6 '11 at 10:10
add comment

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 := 1 instead of int i = 1, func f(x, y, z int) instead of void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2} instead of class 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.

share|improve this answer
2  
I've recently fallen in love with Go while learning it for AppEngine programming, and I couldn't have said it better then you did. Well done. –  Adam Crossland Nov 8 '11 at 20:13
add comment

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

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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

share|improve this answer
add comment

I suspect that whether it becomes mainstream will depend upon whether Google adopt it as a supported language for appengine and / or GWT.

share|improve this answer
2  
How would a systems language be useful for Google App Engine? –  ixtmixilix Sep 25 '10 at 11:22
    
I would say that just because it is a systems language compiled to machine code at present wouldn't stop Google from targeting other platforms in future. Just look at what they've done with java- compiling to JavaScript in the case of GWT and tafgetting the dalvik vm for android. Likewise Facebook compiling PHP. I could envisage an output of Go which could be installable into appengine at somepoint in the future . –  Chris Buckett Sep 25 '10 at 15:30
    
+1 - the important thing is for it to be useful for something. Just look at what the iPhone did for Objective-C. –  user1249 Mar 19 '11 at 22:18
3  
Well that just happened. Now let's see if it takes off... –  Elad May 11 '11 at 7:40
2  
For the record, I am currently developing a large, ambitious web application on the AppEngine Go runtime. Go is enormously productive and fast. The code is very readable. It's a wonderful language. –  Adam Crossland Nov 8 '11 at 20:21
show 1 more comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.