7 ms·
>- Made by really famous veteran language designers - Backed by Google Looking at decades of how various programming languages gain popularity, those proposed
by jasode 4y ago
>- Made by really famous veteran language designers
- Backed by Google
Looking at decades of how various programming languages gain popularity, those proposed reasons don't seem that convincing when we look at counterexamples.
E.g. counterexamples of unknown (at the time) creators creating popular languages : Bjarne Stroustrup (C++), James Gosling (Java), Rasmus Lerdorf (PHP).
E.g. counterexamples of famous computer scientists creating languages that were not widely adopted : Alan Kay famous for Smalltalk but Squeak is not widely used, and Niklaus Wirth famous for Pascal but later Oberon not widely used.
I think Go's popularity is mostly explained by technical reasons:
1) compiles to a single executable that's easy to deploy. This is a compelling advantage over Java,C#,Python,Ruby that require runtimes or complicated virtual environments.
2) a good enough standard library that's useful for quickly programming middleware type of apps on servers. Server-side infrastructure apps are Go's sweetspot. Go's a better productivity baseline than C++ and Javascript with their bare standard libraries that requires researching "what's the best library?" on Stackoverflow or browsing NPM repos.
3) "go routines" which some think of as the "killer feature" because that concurrency mental model is easier than threads or async/await.
I'm guessing those 3 tech reasons attract more programmers than people that think "Rob Pike and Ken Thompson are famous guys at Google so I'll use Go". Regardless of celebrities, the language itself still has to have some compelling technical advantages for it to grow in usage.
- pjmlp 4y agoC++ was born at AT&T, shared the UNIX throne with C, adoption grew from there. Java was created by Sun, was remarkable in having the JDK available as free beer in the age of comercial compilers, Sun bankrupt themselves pushing Java everywhere. PHP provide a saner way to use a Perl like language on ISPs, whithout the mess of mod_perl, while most ISPs would charge extra for something else. Smalltalk was gaining adoption, before its main backer outside Xerox (IBM) decided to join forces with Sun and Oracle, and move into Java instead, famously rewriting their flagship product into Eclipse. One of the main architects behind this effort is now leading Visual Studio Code development. Compiling to single executables has been the way compilers worked before dynamic libraries became widespread in 32 bit platforms.
- leetrout 4y agoMy email is in my profile. You wanna record a podcast or something? Your breadth of knowledge on the history of a lot of this stuff is really great. Have you written things down anywhere other than HN comments?
- pjmlp 4y agoThanks for the invitation, it would be a quite boring podcast, I am not that interesting really. Sure, I was posting on Usenet, Slashdot, Reddit,...online since 1994.
- hardware2win 4y ago>This is a compelling advantage over Java,C#,Python,Ruby that require runtimes or complicated virtual environments. You can deploy c# app without having to install anything.
- jasode 4y ago>You can deploy c# app without having to install anything. The C# option of self-contained executables is very recent with VS2019 & VS2022 and was not available when Go came out in 2009. Before that, you had extra steps of ClickOnce installer deployment or obscure AOT experiments that nobody was using in production. (Also as trivia, the new C#/NET6 self-contained executables don't work on Windows 7 and Server 2012. You still have to install .NET Framework runtime for those older systems.) So during most of Go's history, the C# executable would get the following error if deployed on a computer without the .NET Framework runtime already installed: https://www.google.com/search?q=%22This+application+requires%22+one+of+the+following+versions+.net+framework+%22do+you+want+to+install%22&tbm=isch https://www.google.com/search?q=%22This+application+requires...
- leeman2016 4y agoLet's not also forget that the .NET self-contained executables are huge in size compared to Go's. An ASP.NET app could be more than 100 MB
- tfigment 4y agoMany go apps are fairly large as well. Most of mine start at 10 MB and quickly reach 70-80 MB for fairly simple functionality for similar reasons (hosting runtime).
- pjmlp 4y agoNGEN, MDIL, .NET Native, Xamarin weren't obscure AOT experiments that nobody was using in production.
- nine_k 4y agoOberon is sort of widely used, at least conceptually. Large parts of it are co-opted into Golang.
- pjmlp 4y agoI wouldn't call the method syntax declaration taken from Oberon-2, and unsafe instead of SYSTEM as large parts. They still don't have a means to load packages dynamically as easy as Oberon allows for.
- imiric 4y agoI think there's another big reason: simplicity. The language spec is very short and readable, and there are very few concepts to learn to be productive with it. Compared to most other popular general purpose languages, this is a refreshing–if at times frustrating–quality to have.
- vlunkr 4y agoI would also add that the tooling is very good. A few examples: - Built-in test suite that is simple but extensible. Also fast because it can test different packages simultaneously. - Building is easy. Unless you're doing something unusual, you probably don't need a Makefile or any configuration, you just run go build . - Gofmt means that everyone's code looks the same and you don't have to waste your time arguing about indentation or whatever. Some may see this as a downside.
- eweise 4y ago"1) compiles to a single executable that's easy to deploy. This is a compelling advantage over Java,C#,Python,Ruby that require runtimes or complicated virtual environments." Docker makes deploying Java about the same as Go
- klodolph 4y agoEvery Java app I've ever deployed, I needed to tune the JVM. Well, not when I'm running something locally. Every app I've deployed professionally in corporate environments (which is most of my experience running Java), I needed to tune the JVM.
- eweise 4y agoI'm surprised. Latest JVM versions are tuned really well out of the box. Tuning is a good thing by the way. Its the reason Java can handle areas that Go can't.
- klodolph 4y agoYeah, although it seems to be taking a while for everyone to update to the latest and greatest JVM versions.
- pjmlp 4y agoWhile in Go it gets rewritten in Rust instead, because it lacks the tuning knobs.
- coldtea 4y agoA.k.a.: Why just have a single thing (a statically compiled binary), when you can have several moving pieces and different levels of infrastructure and configuration to worry about (the hypervisor, the container runtime, the container cli, the open ports and shared volumes configuration, the host OS image, the JVM inside the image, java memory and gc tuning, and so on)
- eweise 4y ago
- morelisp 4y agoIf James Gosling was an unknown I wonder what your criteria for renown is.