Slashdot Mirror


Programming Language Go Turns 8 (golang.org)

On this day, eight years ago, a group of programmers at Google released Go, a brand-new open-source programming language that they hoped would solve some of the problems they faced with Java, C++ and other programming languages. In the past eight years, Go has gotten a tremendous traction, with Go helping drive several services running inside Google. The company, on its part, has added a handful of features to Go, including a revamped garbage collector in 2015, and support for various ARM processors. From a blog post: Go has been embraced by developers all over the world with approximately one million users worldwide. In the freshly published 2017 Octoverse by GitHub, Go has become the #9 most popular language, surpassing C. Go is the fastest growing language on GitHub in 2017 in the top 10 with 52% growth over the previous year. In growth, Go swapped places with Javascript, which fell to the second spot with 44%. In Stack Overflow's 2017 developer survey, Go was the only language that was both on the top 5 most loved and top 5 most wanted languages. People who use Go, love it, and the people who aren't using Go, want to be. [...] Since Go was first open sourced we have had 10 releases of the language, libraries and tooling with more than 1680 contributors making over 50,000 commits to the project's 34 repositories; More than double the number of contributors and nearly double the number of commits from only two years ago. This year we announced that we have begun planning Go 2, our first major revision of the language and tooling.

67 comments

  1. Go? by nospam007 · · Score: 2

    It Went and is now Gone.

    1. Re:Go? by kelemvor4 · · Score: 1

      It Went and is now Gone.

      I was going to ask about that. I didn't think anyone was still using GO. 8 years is venerable for a "fashion" language.

    2. Re:Go? by PolygamousRanchKid+ · · Score: 4, Insightful

      I didn't think anyone was still using GO. 8 years is venerable for a "fashion" language.

      The Hyperledger Blockchain system uses Go for writing chaincode contracts: https://www.hyperledger.org/

      I have no idea why that was chosen . . . but I think your "fashion" statement has a lot to do with it.

      On the other hand, serious potential blockchain users, banks and insurance companies, are very wary about using such a "young" language. At least with Java, we have spent a lot of time identifying security issues, and programmers have had a lot of time to learn it well.

      With Go . . . we'll be just starting with the security issues and other quirks with the language.

      So, when is Google going to offer Go as a development option on Android . . . ?

      --
      Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
    3. Re:Go? by Anonymous Coward · · Score: 0

      Actually it's massively well-used in exactly the kinds of situations its authors hoped.

      It's used more in China than the west though.

      Go is a successful language.

    4. Re:Go? by phantomfive · · Score: 3, Informative

      Go is really popular with devops type jobs (github and gitlab use it, for example). It was designed to fit in that kind of niche (which Google has a lot of need for) and it does it well.

      It annoys me that they are making a backwards incompatible version, though. All the time I spent learning the language gone to waste.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:Go? by Anonymous Coward · · Score: 0

      Go is a successful language.

      So is PHP.

    6. Re:Go? by RenaiRevolution21 · · Score: 1

      Unless something has changed since gophercon when it was clearly stated that backwards compatibility was one of the requirements of Go 2, I think you have been misinformed.

    7. Re:Go? by angel'o'sphere · · Score: 1

      Android is supporting Go since years.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:Go? by datavirtue · · Score: 5, Interesting

      Go is lame and pointless until you learn about go routines, channels, channel buffers, directions. All the other stuff is in there cause it has to be in order to serve as a programming language. Message passing between lightweight threads compiled to binary....and you get the point. Pivotal Cloud Foundry is built in Go. Docker, which is along the same lines is built in Go. Should you use it to build enterprise business apps? Nope. High performance middle tier and server processes? Yeah.

      --
      I object to power without constructive purpose. --Spock
    9. Re:Go? by angel'o'sphere · · Score: 1

      DevOps jobs usually involve scripting languages, Shell and Python, depending on the tools you use you could also stumble over Ruby.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:Go? by datavirtue · · Score: 1

      Go on Android? This is why technologies come to be hated. They are used out of context and people wonder why it is such a piece of shit. Do you run android on your server architecture? There is your answer.

      --
      I object to power without constructive purpose. --Spock
    11. Re:Go? by Anonymous Coward · · Score: 0

      Its already being implemented. x/mobile is already available to do android dev with go

    12. Re:Go? by phantomfive · · Score: 1

      My understanding of it was more like interoperability rather than backwards compatibility. So you could call into go1 code from go2.

      --
      "First they came for the slanderers and i said nothing."
    13. Re:Go? by K.+S.+Kyosuke · · Score: 1

      What security issues do you think Go has that would be any different from a cleaned-up version of C with saner memory management? Because that's what Go is, effectively.

      --
      Ezekiel 23:20
    14. Re:Go? by Gr8Apes · · Score: 2

      Go is a successful language.

      So is PHP.

      So is COBOL.

      --
      The cesspool just got a check and balance.
    15. Re:Go? by lucm · · Score: 2

      Docker, which is along the same lines is built in Go.

      Docker is a layer of convenience over existing technologies like cgroups. They could have written it in QBasic for that matter, it does nothing special.

      --
      lucm, indeed.
    16. Re:Go? by K.+S.+Kyosuke · · Score: 1

      Running Go on Android makes perfect sense. As per Mozilla's measurements with Servo, running code in multiple threads at lower frequencies in mobile chips can slash power consumption compared to doing the job in a single high-frequency core by almost one half, and Go is pretty well suited for finer-grained decomposition of computational workloads.

      --
      Ezekiel 23:20
    17. Re:Go? by jimbo · · Score: 1

      I seriously doubt the changes will be that severe. It will not be a whole new language...

    18. Re:Go? by jez9999 · · Score: 1

      It annoys me that they are making a backwards incompatible version, though. All the time I spent learning the language gone to waste.

      This is Google we're talking about. Angular2 broke Angular1. Don't use them if you don't want your stuff to break.

  2. Well... slightly off topic but by Baron_Yam · · Score: 2, Funny

    Seeing the name "Go" in this context reminded me of Logo, which is probably much more limited.

    Thanks to a Windows app that emulates Logo, tonight my kids will be learning how to program by telling a triangular turtle how far to move and how far to turn. Or they'll tell their dad it's boring and they're not going to do it. We'll see.

    1. Re:Well... slightly off topic but by Anonymous Coward · · Score: 0

      Seeing the name "Go" in this context reminded me of Logo, which is probably much more limited.

      Thanks to a Windows app that emulates Logo, tonight my kids will be learning how to program by telling a triangular turtle how far to move and how far to turn. Or they'll tell their dad it's boring and they're not going to do it. We'll see.

      Appity-App Turtle App--Turtle goes "Moo! MOOoo!"

      Chimeras are cool.
      (sorry too much berer)

  3. Dead end language by Anonymous Coward · · Score: 3, Interesting

    The question is how many months will it be before Rust surpasses Go in every significant metric; libraries, active developers, popular projects, etc. Go doesn't offer anything other than being part of Google's "mind share." It's another garbage collected managed application language in a market stuffed to the gills with such tools. What success Go has had is almost entirely due to Google marketing.

    1. Re:Dead end language by Anonymous Coward · · Score: 0

      And Rust isn't just Mozilla's "mind share"?

      I actually like Go better than Rust. Another reason I do not like Rust is that they are so PC these days like Mozilla has become.

      Hey, let me create my own crappy programming language - let me see - i will call it "turd."

    2. Re:Dead end language by tender-matser · · Score: 1

      What success Go has had is almost entirely due to Google marketing.

      Do not underestimate the snobbery factor. Go is supposedly designed[1] by a bunch a unix/plan9 luminaries, and that alone makes a lot of wannabe high-flying programmers fret in their pants.

      [1] based on its underwhelming its design is, the actual work was probably done by some less talented imitators, and Ken Thompson &co just gave it a stamp of approval after fixing some long held pet peeves with C and C-like languages.

    3. Re:Dead end language by Megol · · Score: 1

      I see that you haven't even looked at Go and what makes it different. Rust isn't the same type of language, doesn't have the same type of built-in support and would be a bad fit for the use-cases Go was designed for.

      While I don't like the language it does fill a niche.

    4. Re:Dead end language by Megol · · Score: 2

      That tells more about you and your misconceptions rather than Go.

      C was a simple language designed for one thing. The bloated C and C++ is actually pretty damn far away from the original ideas and use cases.
      The same applies to Unix (and indirectly Posix). Complicated systems where some parts no longer make sense and bloating of many kinds.

      Plan 9 was one attempt of returning to the roots of the Unix idea, making it simpler but still compatible with the evolved world. If they succeeded? Matter of opinion.
      It used a new programming language Alef which was relatively clean design with C like syntax but with support for a CSP inspired programming model - channels sending data between co-operating processes.

      A later OS design called Inferno used a virtual machine model with yet another C-inspired programming language directly supporting the CSP model - Limbo.
      Limbo also supported GC, one of the reasons Alef (which didn't) was ultimately replaced by C.

      So a language with GC and direct CSP support was known to work and be a good design for a number of tasks. If it wasn't it would have been dropped earlier.

      Go use GC and directly support CSP. It is a clean design and bears the mark of an experienced team.

      While I don't like Go it isn't designed by "less talented".

    5. Re:Dead end language by tender-matser · · Score: 1

      A later OS design called Inferno used a virtual machine model with yet another C-inspired programming language directly supporting the CSP model - Limbo.
      Limbo also supported GC, one of the reasons Alef (which didn't) was ultimately replaced by C.

      But it was inferno's vm which supported GC and CSP natively. Of course, if you go through the trouble of building a Lisp machine, you better use Lisp than C to program it.

      This is different from go; go programs are executables which run on platforms which do not offer GC services at hardware or system level.

      You're like someone touting namespaces, shared envvars between processes, etc as features of the rc shell language instead of features of the plan9 system as a whole -- an rc port which simulates those features in userland would be a stupid toy.

      So a language with GC and direct CSP support was known to work and be a good design for a number of tasks. If it wasn't it would have been dropped earlier.

      Which is exactly what they did! adding GC to alef was not a winning proposition, so they did the smart thing and rewrote rio, acme, etc in C.

      Unfortunately for us, they didn't give up on the idea.

  4. And nobody.... by Anonymous Coward · · Score: 0

    .... still cares.

  5. no generics by serviscope_minor · · Score: 1

    No generics, less space than a Nomad. Lame.

    --
    SJW n. One who posts facts.
  6. C for the win by Anonymous Coward · · Score: 0

    45 years and going strong for real programmers.

    1. Re:C for the win by davecb · · Score: 0

      I do like go, but primarily because it's another language like C, where they took stuff out. (And yes, I did use Multics PL/1, so I can sympathise with Kernighan: "You don't need this, or this, or that either. See?")

      --
      davecb@spamcop.net
    2. Re:C for the win by Anonymous Coward · · Score: 0

      The reason people still develop new languages is because they lack discipline. They get lazy, shoot their own foot off, and blame the language rather than themselves.

      There really isn't a need for anything other than C, C++, and the many languages which have been around for the last two decades. Everything else is simply developers who lack discipline looking to create a language to satisfy they laziness and lack of responsibility.

    3. Re: C for the win by Anonymous Coward · · Score: 0

      Meh. I'll take a language that can handle strings properly, thanks.

    4. Re:C for the win by Megol · · Score: 1

      LOL! Thanks! Needed that.

      Wild guess: you aren't a programmer?

  7. Horrible language by cjonslashdot · · Score: 5, Interesting

    It's my opinion, yes, but Google and see the number of websites and posts about "go gotchas". It is the only language I know where you can check for null, then do a type inference and check for null on that and get a different result; or how about the fact that an argument passed as a method target gets treated differently than an argument passed in an argument list. And the culture of go is terrible - short little variable names like "unm" and "d" instead of expressive names like "userName" and "documentId" - try searching for all instances of "d" when you want to find where it is used. And then the fact that you can't look at an object and tell what type it is, or what methods might actually apply to it. It is the _MOST_ difficult language for examining someone else's code and trying to figure out what is going on.

    1. Re:Horrible language by joeslugg · · Score: 4, Insightful

      It is the _MOST_ difficult language for examining someone else's code and trying to figure out what is going on.

      AHEM. Perl much?

    2. Re: Horrible language by pchasco · · Score: 4, Interesting

      I think the language is alright, and I use it regularly because it is the best alternative to C and C++ that I have discovered so far (need to look into rust). That said, I share your annoyances and add some more: * No method overloading. Itâ(TM)s annoying to have to come up with a new name for permutations like: func (matrix *Matrix4) SetTranslation(x, y, z float32), func (..) SetTranslationVector3(vector *Vector3), SetTranslationMatrix4(matrix *Matrix4), ad infinitum. * I find the previous issue ironic given their reason for omitting overloads, that it makes code less readable, yet their habit of using abstract, one or two character identifiers for everything * Public members are PascalCase, private are camelCase as a rule. This was especially annoying before go-aware refactor tools were available.

    3. Re:Horrible language by cjonslashdot · · Score: 1

      Touche!

    4. Re:Horrible language by datavirtue · · Score: 2

      Go is very attractive to lazy, untalented (bad?) developers for the wrong reasons. It is attractive to talented developers for the right reasons. The use cases or justifications for using a talented developer or Go are usually pretty slim. The popularity of Go, which should be a fairly obscure language, is linked to the perception of the bad developers. Don't hate Go because a bunch of losers start using it for the wrong reasons.

      --
      I object to power without constructive purpose. --Spock
    5. Re:Horrible language by cjonslashdot · · Score: 1

      Interesting. What use cases do you think that Go is well suited for?

      It seemed to me that it became popular among the Linux container tool community because it was early in having libraries for LXC. But that doesn't make it a good language - just a lucky one.

      One caveat in my bad opinion of it is that the alternatives each have deficits as well. What are your thoughts?

    6. Re: Horrible language by cjonslashdot · · Score: 2

      Yes, since C and C++ have their own issues, Go is a reasonable alternative. I also am looking at Rust - looks very promising. I spent a year with Go and have walked away from it. Another aspect that seems a mess - the library/import mechanism.

    7. Re:Horrible language by Anonymous Coward · · Score: 0

      Get back to me when GO reaches 40yrs. Then we are talking about a language. Right now it is equal to a brain-fart like many "languages" that came a went.

      And say "improved garage collection", mean it is garage, because the fundamentals were missed. You work clean, you write clean.

    8. Re:Horrible language by Anonymous Coward · · Score: 0

      Go's "nil" is actually a value for "uninitialized variables", not "null".
      NULL's are bad! When you allow them, they cause trouble everywhere at runtime! *cough cough*
      So you can't assign "nil" to but a few choice types.
      A type inference isn't the same as its value.

      Reading the language spec is recommended. It's incredibly much shorter and simpler than Java's.

    9. Re:Horrible language by Anonymous Coward · · Score: 0

      Go is a systems language. So suited to make stuff like databases, queues, system/command-line tools, compilers, text editors, etc. It's compiles rapidly, so developing with it feels like a scripted language (Ruby/Python), so can also be used for all kinds of automation. Since Go is lightweight and fast with few dependencies, it can also replace most middleware / middletier software with simpler services, aka microservices or stream processing executors. Ie. anything you could use C/C++ for, but faster development time and lightweight binaries. Speed is comparable to Java with less memory footprint, and they're working on making it faster while Java has matured.

      Some people are investigating using Go on web and games development, but not especially suited for that, yet, but could serve as services and backbone.

    10. Re: Horrible language by jez9999 · · Score: 1

      Public members are PascalCase, private are camelCase as a rule.

      What's bad about that? I really like that style of C# naming. Makes public members nice and clear.

    11. Re: Horrible language by pchasco · · Score: 1

      That it is forced on you.

  8. Go 2? by Anonymous Coward · · Score: 0

    Well, I hope they provide backwards compatibility.

    1. Re:Go 2? by Anonymous Coward · · Score: 0

      *rimshot*

    2. Re:Go 2? by Anonymous Coward · · Score: 0

      Some habits keep repeating themselves ...

    3. Re: Go 2? by Anonymous Coward · · Score: 0

      Or âoeGo 2 Considered Harmfulâ?

    4. Re:Go 2? by Anonymous Coward · · Score: 0

      Everyone knows that using Go 2 in your code is bad programming practice.

      No, that's wrong. But using dogma can be fatal.

  9. What OS? by AndyKron · · Score: 1

    Cool, but does it work on TempleOS?

  10. Never HEard of It by Anonymous Coward · · Score: 0

    Was this posted by some Google Shill?

    I literally have never heard of Go.

  11. 58 Years of COBOL by sycodon · · Score: 1

    And it STILL is running the majority of infrastructure applications.

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
  12. Go 2? by cfc-12 · · Score: 5, Funny

    This year we announced that we have begun planning Go 2, our first major revision of the language and tooling

    No thanks. Everyone knows that using Go 2 in your code is bad programming practice.

  13. Introspection by DulcetTone · · Score: 0

    When you think that is a "thing", you're going to write a language I neither understand nor find well-focused on my needs.

    You'll really drive it home when you make the underscore character a keyword (or whatever it is).

    --
    tone
  14. About that next version by Bruce+Perens · · Score: 1

    Hopefully you can resolve some of the complaints about Go in the next version. But I'm afraid you're going to have to call it something else. Because Edsger Dijkstra says Go 2 Considered Harmful.

    1. Re:About that next version by Megol · · Score: 1

      Actually that was what Niklaus Wirth said: https://en.wikipedia.org/wiki/...

      With Wirth in mind I hereby propose the new version to be named Goberon. Can't find any harmful in that.

  15. Much hyperbole here by OneHundredAndTen · · Score: 1

    It's just another language. It has nice things, it lacks nice things. It is fine for certain things, not so fine for other things. It is not a silver bullet, the end-all, be-all. Currently using it, I expect to use it again in the future, when appropriate. This aside, I couldn't care less about it, one way or the other.

    1. Re:Much hyperbole here by Anonymous Coward · · Score: 0

      This is an excellent point. It would be good if the next language could simply be called "Silver Bullet" and then we could declare victory and go home. (pun intended!)

  16. once you understand C by Anonymous Coward · · Score: 1

    the rest is history

  17. TIOBE Index shows Go dropping by Anonymous Coward · · Score: 0

    The TIOBE index for October shows Go dropping significantly in popularity year over year, so the blog post is certainly cherry picking sources to tell a very different story. In fact, if it drops any further, Go is out of the Top 20 and going to be relegated to the âoeOther languagesâ category.

    1. Re:TIOBE Index shows Go dropping by Megane · · Score: 1

      What we really want to know is what Netcraft says about it.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  18. Go problems by Anonymous Coward · · Score: 0

    Approaching Go as you would any existing language, will show problems with coding in general. Having read "go gotchas", it seems clear the authors just didn't see all the videos and learn the "go way". Most of these "gotchas", especially the compiler errors, these are actually design choices, and you can find explanations for all of them why they were designed so in the first place. Most of them were after collaborative discussions in a group of the most competent programmers in the world.

    When you learn the "go way", if your code compiles, usually, it logically works OK too. It's a systems language, like C/C++, so not designed to replace Java. This means you can use Go to directly interface with the computer, like memory layout and predictable code generation and execution. Stuff you'd expect with C, but without most pitfalls. This is why a string is a string, not nil, and why it supports stronger type safety at compile level. So it's a bit more pedantic than Java, Ruby, etc. Which means, if it compiles, and it's not too hard to do that, usually on 1-2 tries for me (30+ years of programming experience), it usually just works after that (there's no 0 tries, so hard to beat).

    You can still write procedural, functional-style or object oriented code, as well as use its concurrency features. It's still very possible to write obscure code in Go too, but some of that magic is actually designed for loosely coupled components that can share execution/data-flow, without explicitly having to know about each other. It's kind of like streams in C++ and pipes in UNIX, but in a good way. You have to really learn the language and it's simplicity, to appreciate it though. And if you don't need to complicate things, it's actually recommended to write the simplest code first.

    For me, Go is finally a language that makes sense. It evolves C/C++ paradigms and support concurrency. It supports simple code styles, but yes, even though it minimizes it, you can still shoot yourself in feet.

    I think Go is a good first language to learn, or to unlearn many of the pitfalls of other languages. There's no other language quite like it, which is why one need to learn the "go way" (just make simplest code first).

    1. Re: Go problems by Anonymous Coward · · Score: 0

      I donâ(TM)t have the technical wherewithal to really comment on any of the body of your post but I do think not naming the subject âoeGo Money Go Problemsâ is a real lost opportunity

  19. They need to ditch Rob Pike by Anonymous Coward · · Score: 0

    Rob Pike is Go's biggest weakness. He opens his mouth about other languages and total nonsense spills out, and I have trouble separating Go fanboyism fact from Pike's fictions.