26 Comments

Summary:

The Go language is gaining momentum among PaaS and IaaS vendors, says Apcera founder and CEO Derek Collison. Research shows the language gaining ground, although it hasn’t cracked the top 20. JavaScript and Java remain top dogs among overall programing languages.

golangotter

The Go programming language doesn’t show up on Github’s list of top ten languages, but it’s on the rise, at least for many important workloads, according to Derek Collison, founder and CEO of Apcera, a stealthy startup building a platform as a service.

Collison sparked a discussion about Go’s prospects when he tweeted that he felt Go will become the dominant language for systems work in infrastructure as a service, orchestration and platform as as service.

Reached by email, Collison said Go or “Golang” appeals to people working above the kernel or the driver layer which is typically written in C or C++. Go’s support of static typing is key and makes it suitable for  building high-performance systems.

“Static typing essentially means explicitly declaring everything prior to a compile,” said RedMonk analyst Stephen O’Grady via email. “Dynamically-typed systems are much more loose, and therefore generally faster to code in. The advantages of static typing tend to be in high performance systems, because there is no decision to be made about the type at run time, or systems of substantial complexity, because looser [dynamic] typing can lead to difficulty in debugging errors.”

Spurred by the discussion, O’Grady did his own analysis using Github and StackOverflow data. The resulting RedMonk language rankings found JavaScript, Java, PHP, Python and Ruby still ensconced as the top five languages overall although Go has made some progress, moving from number 32 in 2011 to number 30 this week. 

O’Grady wrote that this progress may sound modest

” … but means that in that time [Go] has improved more in popularity than Scala or Haskell and as much as Java, at least from a rankings standpoint (obviously growth becomes more difficult the more popular the language becomes). Second, there’s its age. At a bit less than three years of age, Go’s position as a solidly second tier language is enviable, given the fact that there are much older languages like Smalltalk that have yet to break that barrier.”

Apcera is using Go, Collison said, as are Heroku, CloudFoundry, Google where the language got its start,  and other companies. In his view, C will always have its place but Ruby and Python code bases will go to Go.

  1. It has already replaced PHP and Python for me. Its as easy on the lines of code for the most part with improved performance and none of the environment baggage. The tradeoff is having to compile for different systems.

    Share
    1. @philh interesting! thanks for the comment. How big a deal is this static typing thing??

      Share
      1. “How big a deal is this static typing thing??”

        Sorry, but this is hilarious.

        Share
      2. If you are asking questions like “How big a deal is this static typing thing?” you don’t have the expertise to be writing an article like this.

        Share
      3. Very big deal, it’s great to immediately prevent errors at compile-time.

        Share
      4. “How big a deal is this static typing thing??”
        Blown away by this. It’s not some technical nuance you’re asking about – it’s a fundamental criteria of the language. I understand that tech journalists don’t need to know every detail, and you’re correct to say “if i were a programmer, i’d be programming”. However this is such a basic issue that it calls into question everything else in the article.

        Share
      5. Wow, I just love it when all the sexist trolls come out of the woodwork.

        Barb writes lots and lots of columns on a vast variety of subject and she is more than qualified to write this article.

        Get a life, you guys.

        Share
    2. if i were a programmer, i’d be programming! i’m a reporter so i ask the stupid questions! that’s the job.

      Share
      1. Hard to disagree with that! Go has a so-called short variable declaration feature where the compiler figures out the variable type for you. In my experience I use that feature most of the time, and in that case Go has the feel of a high-level language with dynamic typing. When the short variable declaration feature isn’t an option I sometimes have to look up the type in the Go documentation. It’s not that big of a deal and well worth the effort to get higher performance, in my book.

        Share
      2. It’s a night and day difference. Let me try a writing analogy with Word + Notepad.

        Say you’re trying to write a text for a particularly picky client that will reject your text if you make any mistake or use any unclear phrase. Then dynamic typing is like Notepad: you better be careful, have lots of proofreaders, and expect to have your text rejected often. And when you print it, it’s in a slow-to-read monospaced font.

        Static typing is like Word with all the grammar checking turned up to 11 (it won’t let you print or email any text with what it thinks is an error). It’s harder to learn, and sometimes your PC runs slowly, and the grammar checker will find lots of irrelevant stuff, and to keep it happy you might need to change your style, but it *will* make certain types of error irrelevant (e.g. spelling), and occasionally catch more complicated mistakes too. Also, as a bonus that might or might not be relevant, word prints in a font you can read much more quickly.

        The point being: they’re totally different ways of doing things.

        Share
    3. @eamonnerbonne that’s a great analogy — and one that a dim journalist can understand. thanks.

      Share
      1. Unfortunately, it’s a highly dubious analogy. For one thing, Python _is_ statically typed; its just not _declarative_ in its typing. _Declarative_ typing (which is allowed by Go, and required by other languages) allows (or forces) one to be specific about what types of data a symbol (loosly, a “variable”) can point to. This makes it easier/faster for an interpreter (Python) or compiler (C, Go, etc.) to do it’s job. The Word/Notepad analogy is just wrong — don’t pay any attention to it.

        Share
      2. @tvaught I think you should read a little more. Python is by no means statically typed.
        http://en.wikipedia.org/wiki/Type_system#Static_typing

        FWIW I don’t think the Word/Notepad analogy is great either though.
        Here’s another one, probably equally dubious:

        Imagine you’re filing hundreds of documents.

        Using a static type system is a little like choosing to file everything in strict alphabetical order – it’s a little harder work up front (you have to look at the title and decide where to put it), but you can find things easily and if someone else arrives, they can find things too.

        Using a dynamic type system is a little like having an ad hoc system that you might or might not adhere to all the time. It’s very easy to start with, but things can quickly become chaotic unless you’re extremely disciplined.

        Share
      3. @Roger You’re absolutely right — I meant to say “strongly” typed which isn’t actually what the OP was asking about. My mistake. I guess I was so upset by the Word/Notepad analogy, I confused the terms and gave my stock strong/weak-type schpeel. Thanks for the gentle correction.

        Share
  2. I’d be surprised if Golang displaces much Ruby, as Ruby is a language of choice for extreme liberals, and Go is moderately-conservative.

    I think many Python programmers I know are actually not liberal, but also on the conservative spectrum, just they’ve only had the aging choices of C, C++, and Java.

    As a non-programmer I’ll watch the Python vs Go battle with mild interest, but I really wonder how the language politics will play out at Google, the biggest backer and user of both languages.

    Share
    1. “””I’d be surprised if Golang displaces much Ruby, as Ruby is a language of choice for extreme liberals, and Go is moderately-conservative.”””

      Those are BS distinctions made by Steve Yegge that have been debunked to death already…

      Share
  3. Whilst Go might replace Python for networking applications, it has a very long way to go to replace Python for interactive scientific computing. Numpy and Scipy support a large ecosystem of such packages.

    I say this as a long-time Python programmer who is enamoured of Go.

    Share
    1. As a short-time Python programmer who is head-over-heels smitten with Go, I cannot wait for the day when there is a nice interactive Go environment for Scientific & Quantitative computing. If I had the time, I would be working on it myself. :-)

      I have, however, had the pleasure of meeting some people making steps in that direction, making some classification and visualisation libraries, so things are happening, albeit slowly.

      Share
  4. OMG, it’s so shiny. I cant’ keep my eyes off it.

    Share
  5. My own experience:

    Go is replacing Nodejs because it develop almost as fast, and also does well on network programming.

    No more interest on learning Scala/Haskell/Clojure … because I like the concurrency model Go has.

    Replacing Java not yet because it is not mature enough.

    To me compile for different systems is the right choice as a server guy.

    Static typing to me is more about performance tradeoff. I don’t believe too much in preventing bug by compiler. I’ve seen enough buggy code in static typing language, and quality code in dynamic typing language.

    Share
    1. Yeah, we need a Go compiler for the JVM, that could help it get embraced in enterprise more…

      Share
  6. We currently use Doozerd in our PaaS architecture, which is a distributed configuration management system which was originally created by Herkou and written Go. https://github.com/ha/doozerd

    Share
    1. ActiveState Stackato also supports both Go (via Buildpacks) and Python – so regardless of which language you favor, Stackato has got you covered. http://docs.stackato.com/deploy/languages/go.html

      Share
  7. Larry Page has already killed many useless projects at Google after he took over CEO. He should put Go on his list of projects to cut next. This is oxymoron. It doesn’t solve any problem except Barb Darrow learned static typing!

    Larry Page should know by now why Google failed miserably in social space by funding these type of morons to keep themselves busy by building useless thing and using Google name to market it.

    Share
  8. Is there a decent IDE for Go yet?

    When I first investigated Go couple of months ago, the lack of modern tooling was what put me off. It’s no longer 1980, so I think it’s reasonable to expect that any claims-to-be-serious language provides an editor with code completion, automated basic refactorings and a debugger… As soon as this becomes available, I will be glad to jump onto the Go bandwagon – until then I’ll be glad to stick with Java.

    Share
    1. That’s one of Go’s strong points. Everything is built into the language itself, so that you don’t have to have a huge, bloated IDE to use it. All you need to do is write the code in a simple text editor (The best in my experience is Sublime Text 2. And I’ve used it for every single language I’ve used since it came out) and then type in “go X ” (run, build, install, get, doc, etc). Why do you use a huge IDE? Because you have to because manually doing everything is complicated. If nothing is complicated, an IDE is just bloat.

      Share

Comments have been disabled for this post