58

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

11
  • 21
    ruby becomes popular after rails, objective-c after iphone, what's the after for go?
    – ohho
    Mar 21, 2011 at 9:06
  • 1
    Terrible, it doesn't solve anything for most people. Mar 24, 2011 at 5:22
  • 6
    The chances are between 0 and 1. Anything more specific would require a PhD in Prognostication, which I do not possess. Apr 30, 2011 at 7:56
  • 1
    @Rein Henrichs - you will get one, although the committee will require a few changes to the final thesis Jun 14, 2011 at 20:25
  • 3
    Google should really consider developing an Android SDK for Go language. At least as a start.
    – setzamora
    May 10, 2012 at 5:55

12 Answers 12

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.

16
  • 13
    @ixtmixilix: Are you serious? App Engine and GWT say otherwise.
    – imgx64
    Sep 25, 2010 at 17:41
  • 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, 2011 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, 2011 at 2: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. Jun 14, 2011 at 21:11
  • 3
    It's been five years - what do you think now? May 6, 2015 at 9:13
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.

10
  • 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, 2010 at 11:17
  • 14
    @ixtmixilix Linux doesn't have anything to do with echo, thats part of GNU. Sep 25, 2010 at 13:55
  • 3
    have you ever seen anything written in erlang? that's not god awful. Nov 17, 2010 at 2:14
  • 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. Mar 21, 2011 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 Mar 24, 2011 at 9:46
15
+50

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.

4
  • 7
    re "it didn't even have exceptions" It is a major decision was made - golang.org/doc/go_faq.html
    – mmmmmm
    Mar 25, 2011 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, 2011 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 1, 2011 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 6, 2011 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.

1
  • 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. Nov 8, 2011 at 20:13
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).

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.

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

1
  • Great summary of what “mainstream” means. I think Go has all of these, except for “customers demand you use it.”
    – Wildcard
    Feb 13, 2019 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.

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.

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.

0

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

6
  • 2
    How would a systems language be useful for Google App Engine?
    – ixtmixilix
    Sep 25, 2010 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 . Sep 25, 2010 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, 2011 at 22:18
  • 3
    Well that just happened. Now let's see if it takes off...
    – Elad
    May 11, 2011 at 7: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. Nov 8, 2011 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

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