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.
It Went and is now Gone.
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.
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.
.... still cares.
No generics, less space than a Nomad. Lame.
SJW n. One who posts facts.
45 years and going strong for real programmers.
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.
Well, I hope they provide backwards compatibility.
Cool, but does it work on TempleOS?
Was this posted by some Google Shill?
I literally have never heard of Go.
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.
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.
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
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.
Bruce Perens.
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.
the rest is history
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.
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).
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.