58

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

Robert Harvey
  • 198,589
  • 55
  • 464
  • 673
interstar
  • 1,449
  • 10
  • 15
  • This video was excellent: http://www.youtube.com/watch?v=jgVhBThJdXc .. The people who gave that talk have been using Go for nearly two years now. – ixtmixilix Sep 25 '10 at 11:27
  • 21
    ruby becomes popular after rails, objective-c after iphone, what's the `after` for go? – ohho Mar 21 '11 at 09:06
  • 1
    Terrible, it doesn't solve anything for most people. – Daniel Little Mar 24 '11 at 05:22
  • 6
    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 07:56
  • I think Go's killer feature is supposed to be concurrency so depending on how that plays out it will probably become if not mainstream then maybe a viable options among the concurrency oriented languages. –  Apr 30 '11 at 13:13
  • 1
    @Rein Henrichs - you will get one, although the committee will require a few changes to the final thesis – Martin Beckett Jun 14 '11 at 20:25
  • 1
    @Lavinski: You probably know nothing about Go. You must know and try all the key features before you judge like this. – Zippo Jul 22 '11 at 14:25
  • @Garet Claborn: Please add "I think" in the beginning. – Zippo Jul 22 '11 at 14:27
  • There is absolutely nothing about Go that is terrible. That's a silly, slashdotty opinion. – Adam Crossland Nov 08 '11 at 20:23
  • 3
    Google should really consider developing an Android SDK for Go language. At least as a start. – setzamora May 10 '12 at 05:55
  • 1
    @Lavinski well... I like it because it's C++ done **right** – dsocolobsky May 27 '12 at 19:33

12 Answers12

46

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.

Mason Wheeler
  • 82,151
  • 24
  • 234
  • 309
  • 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
  • 13
    @ixtmixilix: Are you serious? [App Engine](http://code.google.com/appengine/) and [GWT](http://code.google.com/webtoolkit/) 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
  • 1
    if a language can solve problems, , faster , clearer , smaller and more secure than then it will be adopted by programmers that need to solve these problems. Have a play, you just might like it – The Unix Janitor Nov 17 '10 at 02:13
  • @ixtmixilix isn't GWT used for GMail, Google Calendar etc.? – Armand Jan 18 '11 at 14:02
  • 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
  • 1
    Ruby is one example of a programming language that was not brought up by big names yet it is very popular. – Joshua Partogi Jan 21 '11 at 08:46
  • 1
    @jpartogi - Ruby got popular because of 37Signals and RubyOnRails. Ruby without RubyOnRails is not that popular. – Niklas H Mar 19 '11 at 22:59
  • 1
    @user7410: I would not call Go "safe", fast and clear maybe, but definitely not safe. It's been built from C and it shows. – Matthieu M. Mar 21 '11 at 17:19
  • 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 02:46
  • 2
    AT&T didn't really push C or C++. C got popular because it was the language of Unix, and later because it was better than Pascal for larger programs. C++ just kind of spread, according to Stroustrup's book "Design and Evolution of C++". Typically, languages need a killer app or large corporate sponsorship to hit it big, but languages can hit it big without that or miss with it. – David Thornley Jun 14 '11 at 21:11
  • 1
    Let me tell you a secret. Google haven't even started sponsoring it :) They probably wait for a "let's Go" confirmation from the Go team. – Zippo Jul 22 '11 at 14:39
  • 3
    It's been five years - what do you think now? – hippietrail May 06 '15 at 09:13
  • 2
    @hippietrail: It came in at #12 in [the recent Code2014 poll](http://www.code2014.com/). (By comparison, Objective-C--and the entire iOS platform by association--came in at #16.) Everything above it is a major language that pretty much every developer knows about even if they don't actually use it. So it would seem that it's gotten pretty big pretty quickly. Granted, it's a pretty informal poll, but it gives a decent "finger on the pulse" snapshot of current developer attitudes. – Mason Wheeler May 06 '15 at 16:37
  • @hippietrail not popular. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html – Evorlor Jun 25 '15 at 13:02
  • 2016: still not popular. – Den Aug 19 '16 at 16:54
17

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.

Jonas
  • 14,867
  • 9
  • 69
  • 102
  • 17
    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
  • 14
    @ixtmixilix Linux doesn't have anything to do with echo, thats part of GNU. – alternative Sep 25 '10 at 13:55
  • I stand corrected. – ixtmixilix Sep 26 '10 at 01:02
  • 3
    have you ever seen anything written in erlang? that's not god awful. – The Unix Janitor Nov 17 '10 at 02:14
  • @user7410: Yes, I have done quite a bit of Erlang programming, it is very nice. But mostly for system programming and not UI Programming. – Jonas Nov 17 '10 at 02:18
  • 2
    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
  • @j0rd4n: I think that Google's OS mostly will be about JavaScript and not Go. Go is mainly for servers and Google's OS will be a client operating system. – Jonas Mar 21 '11 at 15:45
  • 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 09:46
  • @Jonas Erlang is used mainly for system programming, not for embedded systems. – Chiron Apr 22 '11 at 16:48
  • 1
    @4bu3li: Aren't telecom-switches embedded systems? That's the main domain for Erlang. – Jonas Jun 15 '11 at 09:43
15

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.

dsimcha
  • 17,224
  • 9
  • 64
  • 81
  • 7
    re "it didn't even have exceptions" It is a major decision was made - http://golang.org/doc/go_faq.html – mmmmmm Mar 25 '11 at 18:14
  • 1
    @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
  • 3
    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 01 '11 at 21:38
  • 3
    "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. – Zippo Jul 06 '11 at 10:10
10

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.

Philip
  • 1,659
  • 1
  • 15
  • 19
  • 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 08 '11 at 20:13
5

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.

Emmaly
  • 159
  • 1
  • 3
5

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

mbq
  • 1,210
  • 10
  • 20
3

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

Donal Fellows
  • 6,347
  • 25
  • 35
  • Great summary of what “mainstream” means. I think Go has all of these, except for “customers demand you use it.” – Wildcard Feb 13 '19 at 18:13
2

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.

mrhassell
  • 98
  • 2
1

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.

SnowMonkey
  • 29
  • 1
  • 2
1

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.

Richard
  • 1,868
  • 15
  • 18
0

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

Chris Buckett
  • 1,829
  • 16
  • 20
  • 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. –  Mar 19 '11 at 22:18
  • It's actually in the [roadmap](http://golang.org/doc/devel/roadmap.html) to add support for Go in App Engine. – Dean Harding Apr 30 '11 at 12:24
  • 3
    Well [that just happened](http://code.google.com/appengine/docs/go/overview.html). Now let's see if it takes off... – Elad May 11 '11 at 07:40
  • 3
    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 08 '11 at 20:21
0

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