Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Programming

What Made Golang Become Popular? Its Creators Look Back (acm.org) 52

Created at Google in late 2007, the Go programming language was open sourced in late 2009, remember its creators, and "since then, it has operated as a public project, with contributions from thousands of individuals and dozens of companies."

In a joint essay in Communications of the ACM, five of the language's five original creators explore what brought growing popularity to this "garbage-collected, statically compiled language for building systems" (with its self-contained binaries and easy cross-compilation). "The most important decisions made in the language's design...were the ones that made Go better for large-scale software engineering and helped us attract like-minded developers...." Although the design of most languages concentrates on innovations in syntax, semantics, or typing, Go is focused on the software development process itself. Go is efficient, easy to learn, and freely available, but we believe that what made it successful was the approach it took toward writing programs, particularly with multiple programmers working on a shared codebase. The principal unusual property of the language itself — concurrency — addressed problems that arose with the proliferation of multicore CPUs in the 2010s. But more significant was the early work that established fundamentals for packaging, dependencies, build, test, deployment, and other workaday tasks of the software development world, aspects that are not usually foremost in language design.

These ideas attracted like-minded developers who valued the result: easy concurrency, clear dependencies, scalable development and production, secure programs, simple deployment, automatic code formatting, tool-aided development, and more. Those early developers helped popularize Go and seeded the initial Go package ecosystem. They also drove the early growth of the language by, for example, porting the compiler and libraries to Windows and other operating systems (the original release supported only Linux and MacOS X). Not everyone was a fan — for instance, some people objected to the way the language omitted common features such as inheritance and generic types. But Go's development-focused philosophy was intriguing and effective enough that the community thrived while maintaining the core principles that drove Go's existence in the first place. Thanks in large part to that community and the technology it has built, Go is now a significant component of the modern cloud computing environment.

Since Go version 1 was released, the language has been all but frozen. The tooling, however, has expanded dramatically, with better compilers, more powerful build and testing tools, and improved dependency management, not to mention a huge collection of open source tools that support Go. Still, change is coming: Go 1.18, released in March 2022, includes the first version of a true change to the language, one that has been widely requested — the first cut at parametric polymorphism.... We considered a handful of designs during Go's first decade but only recently found one that we feel fits Go well. Making such a large language change while staying true to the principles of consistency, completeness, and community will be a severe test of the approach.

This discussion has been archived. No new comments can be posted.

What Made Golang Become Popular? Its Creators Look Back

Comments Filter:
  • Did it? (Score:5, Insightful)

    by nagora ( 177841 ) on Monday May 23, 2022 @03:16AM (#62557872)

    It's a long long way from "popular" in the general sense, although I'm sure there are people it is popular with.

    • by Anonymous Coward
      Exactly. Like nerds who are convinced that DnD is "popular"
      • by Ecuador ( 740021 )

        I am pretty sure Drag n' Drop is as popular as ever. Supported by many websites etc.

        • by GoTeam ( 5042081 )

          I am pretty sure Drag n' Drop is as popular as ever. Supported by many websites etc.

          Got any proof?! Cite a study! /s

      • My office phone is ALWAYS set to Do-not-Disturb. When I look around colleagues' desks, I'd say it's the most popular phone setting around.

    • Re:Did it? (Score:5, Interesting)

      by Anonymous Coward on Monday May 23, 2022 @07:35AM (#62558176)

      It's used by all the big boys - Amazon (AWS), Google, Microsoft, Facebook, Netflix; if you're working at a FAANG scale company you can't escape it. It's also used by all the startups modelling themselves around big tech.

      It's not however popular in your generic run of the mill companies, you're right, if all you're doing is working as a dev at your local healthcare provider, financial institution, legal firm, engineering firm, telecommunications firm or whatever, then you're absolutely right, you probably won't see it.

      Articles like this I suspect are written by folks who live in that Silicon Valley bubble and that's the clique you refer to that it's popular with. No one else really has to give a shit.

      I've had to pick it up because I do work in a big tech firm, my impressions of it are "meh". I still think C# is the most well designed multi-paradigm language out there. Go has a few nice features, but it's omissions are painful for anyone whose worked with something like C++, C# or Java. For a language only 5 years younger than C# it does feel very immature in it's design, I'd argue if anything it's evolving a little bit too slowly to the extent it could well just get left behind.

      • Re:Did it? (Score:5, Insightful)

        by molarmass192 ( 608071 ) on Monday May 23, 2022 @09:12AM (#62558416) Homepage Journal

        Go focuses on being readable, maintainable, portable, safe, and fast. It's really hard to deviate from the "expected" way to write Go, and that's the wole point. There are no affordances for clever abstractions and tricks in Go, and the payoff is the code is (usually) instantly familiar, has predictable overhead, and is relatively performant. I've done production work with just about every language that exists and I've seen some borderline unreadable C#, C++ and Java. That said, there 2 things I reproach Go, 1) that they elected to go with a GC instead of reference counting, and 2) the Java-like forced directory layout. Ignoring those "chpices" the compiler is top notch, the tooling arguably the best out there, the test env is a stroke of genius, and the language is dead simple. People who dislike Go tend to be the same whose code is unintelligible to to anyone but themselves since they have some "Einstein level" insight into how to meld inheritance and abstractions to completely obfuscate a code base. If it wasn't for the GC drawback, I'd be huge proponent of Go. I know you can disable the "auto" GC, but you still have to run it manually which is the definition of non-deterministic when dealing with multi-threaded apps.

        • by Anonymous Coward

          If you hate Go because it uses a GC then you're not really picking the right language for the job. What you want already exists, it's called C.

          > People who dislike Go tend to be the same whose code is unintelligible to to anyone but themselves since they have some "Einstein level" insight into how to meld inheritance and abstractions to completely obfuscate a code base.

          This is just drivel, if you don't understand why other languages can churn out cleaner, more readable code than Go, then it's because you

      • by davecb ( 6526 ) <davecb@spamcop.net> on Monday May 23, 2022 @11:16AM (#62558680) Homepage Journal

        I've done concurrent programming in PL/1 and hated it, B and C and hated it, Concurrent Pascal and Java and merely detested it, and now Go and enjoyed it.

        Go allows me to write pipelines like 'distribute | sample | report' inside a program, and have the middle step be an array of goroutines, all running in parallel, all updating private data structures without locks, to implement a multi-way data collection problem in a way that's not only 200-odd times faster, but also understandable.

        The older lock-based schemes are hard to read, and even harder to debug.

        Go makes me effective

        • Note that the same "no-lock" approach is achievable in Pascal, Java and C, but you need to write the code that way.

        • If your Go program is 200x faster than your Java equivalent, that's your failing, not Java's. Go read a book and learn how to use modern Java correctly.

          I've done concurrent programming in PL/1 and hated it, B and C and hated it, Concurrent Pascal and Java and merely detested it, and now Go and enjoyed it.

          So you're idiosyncratic. I've been working in the industry almost 25 years and have never even heard of B in production and never seen anyone doing mission-critical work in Pascal, so I doubt your experience is that typical. However, this is still your opinion. I've done a lot of concurrent Java and if it's painful, you either haven't been doing it in t

          • by caseih ( 160668 )

            If your Go program is 200x faster than your Java equivalent, that's your failing, not Java's. Go read a book and learn how to use modern Java correctly.

            That sounds like youthful arrogance there. You may have been in the industry for 25 years but if the GP said they worked with B in production that means you're a *lot* younger and less experienced (in terms of total time) than he is. B came out in 1969. You may indeed be quite expert in your field, and I'm sure you are, but so likely is the GP. To say tha

    • I especially am puzzled by the article's comment that "Go is now a significant component of the modern cloud computing environment".

      Among which cloud? Google's? Does any other cloud use Go?

      • Probably including kubernetes/containers in general in which go is a huge force and which runs on any of the clouds. It is very much big in the cloud space.
      • Re: (Score:3, Informative)

        by Hadlock ( 143607 )

        go to cncf.io

        Most of those projects are written in go. in particular, kubernetes

        The more software developer-focused devops/SRE folks are writing in python and go

        there are a lot of enterprise .net developers that will never touch go, but the devops space has exploded with go apps. the entire container toolchain is written in go. a lot of hashicorp stuff, terraform, vault, is written in go. In my day job I haven't touched something that isn't python, go or bash in almost seven years, t

      • Given the outrageous memory use of the Go runtime, I bet clouds want you to use it. More RAM demand is more dollars.

      • It's very popular on devops teams. Gitlab uses it, for example. If you want to make custom server software it's really nice.

      • Unfortunately I can't name names without getting in trouble, but from what I recall there are quite a few cloud services in Go. I worked for one and am restricted so I can't say much more than that. We used Go and it *was* fast, but there were three things that really bugged me about Go:
        1. Too immature. Libraries were just not there for everything we wanted.
        2. Kept being annoyed that it was so painful to do some things that are trivial in other languages.
        3. Decent debugging tools don't exist. Print st

    • The set of people with which Go is popular is exactly the set of people who think YAML is not shit.
  • by h33t l4x0r ( 4107715 ) on Monday May 23, 2022 @03:34AM (#62557884)
    I'd rather use javascript for most things, but when I need fast network stuff, it brings the performance.
  • by koko ( 66015 )

    Go long. My #1 called play. My only called play.

    This place sucks with all these ads. Is there nothing better in the firehouse but these payola stories for rats in a maze?

  • Define popular (Score:3, Informative)

    by Viol8 ( 599362 ) on Monday May 23, 2022 @05:17AM (#62557988) Homepage

    I see plenty of dev job adverts for js, python, java and C++ on the job boards I look at. I can count on the fingers of one hand the number I've seen for Go in the last few years.

    • by Ecuador ( 740021 )

      Looking at it from the other side, I've seen an increase in the overall *quality* of applicants when you advertise Go positions vs js, python. And when discussing with devs it is "popular" in the sense that they like the idea of starting a new project with it.

    • Re: (Score:3, Insightful)

      by Anonymous Coward

      It's not used by the sorts of companies that advertise on job boards, it's used by the sorts of companies that find you, or that you apply for directly - Amazon, Google, Netflix, Microsoft, Meta and the entire ecosystem that stems around those companies; i.e. the hundreds of startups and established rapidly growing tech companies staffed by people who previously worked in the aforementioned big tech companies.

      If you're just applying for jobs at your local generic companies then you're right, it's really not

    • Honestly I wouldn't hire a bathroom attendant with less than 5 years of Python. It reeks of lack of initiative, and the guys in my private club need their mints.
  • If you look at the TIOBE index, Go is placed at the 14th place with a 1.11% quality index and a loss of 9% in the past year.

    • (relative loss to its score in the previous year)

    • by Anonymous Coward

      The TIOBE meta-index says that TIOBE is still tied for least useful popularity index, with zero utility due to being based on an easily gamed SEO technique. This represents a 0% change from a month ago, a year ago, and a decade ago.

    • by Anonymous Coward

      Not that I'm pretending Go is particularly popular, I agree, it's not as popular as others, it's definitely gaining traction, and TIOBE is a completely useless bag of wank, it's pointless even trying to ascertain anything of value from TIOBE.

      I mean, look at the state of this:

      https://www.tiobe.com/tiobe-in... [tiobe.com]

      Highest Position (since 2014): #6 in May 2022
      Lowest Position (since 2014): #49 in Jan 2011

      Lowest position since 2014 was number 49 in 2011, what? How is 2011 since 2014? On top of that, it's not clear wh

  • Finally, some news in this website!
  • What made what become popular?

    • by Megane ( 129182 )
      We need a new programming language called "Who", just so that TIOBE and such rankings can say fun things like "Who is gaining in popularity".
  • The only advantage I can think of to learn GoLang is it's fast because it's fully compiled. But not much faster than C#, especially since both are garbage collected. So I don't see the point. C# has better tooling, a better ecosystem, is more concise (despite having longer keywords) and a lot more features. C# can also be partially compiled up front, though the pervasive RTTI complicates that.

    Unity (the game engine) actually allows the use of High Performance C# (HPCS), a subset that only allows valu
  • The main thing that Go provided was the development environment / toolchain. It might be the easiest environment to program in that spits out statically compiled binaries across a variety of platforms with very little fuss. For creating small command-line programs, this is incredibly useful. As a language, however, I've experienced very little in Go that I can't do in something like Java, C++, etc more easily from a programming standpoint. If I'm just building backend server software where the environme
  • Golang was "popular" because it was 1. New 2. Designed by Google (shocker everything google does isn't great) And the worst part about it is that necessary language constructs were omitted to force style and remove abstractions to make development "easier" Now that the buzz has worn off we can see it for the failure that it is
  • comprehensible (Score:5, Insightful)

    by Tom ( 822 ) on Monday May 23, 2022 @09:12AM (#62558418) Homepage Journal

    I learnt Go a couple weeks ago and I've already a few useful programs in it. That's your "why" right there. The design decision to move away from "cool" syntax that needs hieroglyph levels of decyphering before you get what the code is actually doing is a very smart idea. It means I can read the code another programmer was writing and get what it's doing, even though I'm new to the language and he's a pro.

    • I learnt Go a couple weeks ago and I've already a few useful programs in it.

      I accidentally a grammar checker in Go!

  • Good PL, not bloated, zero-fuss cross-platform, wicked fast compilation and "freezing" to native binaries, neat modern concepts supported, purpose-built for the implementation of foundational networked APIs and services right at the time that that was becoming a huge thing.

    There's a good reason Go and Rust are successful. They each solve a bunch of problems that everybody saw but no one had the time, resources and/or skill to solve. I'm not a systems guy, but it was clear to me that when Go and Rust came ab

  • Last year I had an opportunity to move to another team in my company that uses Golang. Or I could stick to doing Java development. I looked on Indeed to see if switching to Golang would be a good decision. There were less than 1000 jobs in my area using Golang. Meanwhile, there were well over 10K jobs in my area using Java (and also Python for that matter).
  • At my company, few years ago I had a project that was suitable for a 6 month internship and we were looking for an intern. At the time I've had quite a bit of experience with java and ruby and just learned Go. I (and my colleagues) liked it quite a bit and decided to do the internship project in Go as well.
    The intern we settled on was 3rd or 4th year university student with only Java experience at the time.
    He was able to learn Go and complete the project on time. I am confident he could have done it in
  • I've been using Go since about v1.4. When Go came on the scene, our main choices for a web or API service were basically:

    • PHP - highly inefficient, terrible support infrastructure, and easily prone to runtime errors
    • Python - somewhat inefficient, prone to runtime errors, and the GIL blocking any form of parallelism to the point that pure Python programmers would actually argue that threads or any form of concurrent execution is bad because it was so bad in Python
    • C/C++ - super efficient but difficult for i
  • Go has become popular with those who work on the rapid deployment of large scale cloud applications. The reason how complex and bloated C++ and Java have become. Go is simpler and more secure and will replace them there. Rust will replace C++ and C in OS development for the same reason.

"The most important thing in a man is not what he knows, but what he is." -- Narciso Yepes

Working...