The lingering issue was package management but then came Go modules and slowly but surely the community is migrating to it from godep and other tools.
Go let me run “go build”, and everything Just Worked. It has since become a little more complicated with the introduction of modules, but still vastly better than C++, Java, or Python.
I picked it up early on and still use it (and F#) today. I've written a lot of custom desktop applications in it.
It was actually released in 2001.
Unless you are speaking about the alphas that MSFT Certified Partners had access to.
There's no advertising today, either. What happens is (for example) Rust/Mozilla foundation's people set out to make every thread on every popular forum about Rust.
In contrast, Go's "marketing" is much more aimed at programmers. It's got programmer-level details. It's not trying to sell your manager on the language.
> What happens is (for example) Rust/Mozilla foundation's people set out to make every thread on every popular forum about Rust.
I completely disagree with this characterization.
That is why people that write about technology are called advocates.
Also, Rob mostly doesn't work on Go anymore. Russ Cox now leads it and has for some time.
1. The pedigree of the creators 2. Google's developer marketing
And now we are stuck with it thanks to traction.
I still love functional languages more but for using something in the 'industry', I wouldn't want to use something else anymore.
I love some aspects of it, for example, I love that you can generally look at a piece of Go code and grok it quickly. I love the lack of exceptions, but I strongly dislike the lack of good error handling facilities.
The standard library is really solid..., it has tons of very high quality implementations for low level OS and systems work and the API's are consistent.
The lack of Generics annoys me a fair bit. I do not love the module system at all. The Go folks somehow still managed to fuck up logging despite plenty of history in Python and Java about how not to do it, and how to build a good logging system. Also the lack of a good immutability construct really upsets me.
Now look at the standard library and appreciate the fact that it comes with every crypto algorithm that are useful, heck it even comes with a crypto random function and a TLS implementation! Wait, it actually comes with a http(s) library. And with a json serializer/deserializer as well. Who does that?
> Who does that?
Have you taken a look at the Python standard library?
Like Google did marketing for Dart and it picked up?
Giliad is also a personality from language research hardly known by UNIX fans.
The chrome team had "been wanting to fix Webkit for a very long time, and the Blink fork made that possible"
Moving Blink from ref counting to a traced GC was part of that fix, it also was required to be completed to allow the Dart VM to be added to chrome. What was supposed to take months took years and with no end in sight the Dart team announced that its VM would not ship with chrome.
Lars announces the oilpan project Google I/O 2013. https://www.youtube.com/watch?time_continue=2850&v=huawCRlo9...
With Dart going down the flutter path, work on the dart iot project, dartino stop. Thanks again, just starting to watch the video now.
What this has got to do with Dart's popularity outside Google?
> Giliad is also a personality from language research hardly known by UNIX fans.
So unix fans did not let a superior language which was designed by real language researcher like Dart win?
Just like WebAssembly wouldn't be a thing had PNaCL been accepted by others.
For UNIX fans, whatever a former Bell Labs researcher states is gold, no criticism whatsoever allowed.
In my workplace Go is the preferred language, but I don't enjoy it, its type system stands in the way on every step.
PS:I use Golang everyday.
It used to have in 2012, 2013, 2014, etc...
Pretty sure Go was a huge 'failure' for a long time (in terms of marketshare)
I observe this without celebration. It simply is.
Even Google's other languages, some of which have been around just as long, aren't even doing as well as Go.
And while at it, offering less features as Algol used to have.
It happens all the time.
Language gets introduced at the sound of simplicity trumpet, tons of boilerplate libraries eventually appear, then if the language manages to make it in the mainstream, half baked features get introduced 'cause backwards compatibility.
Java was once like Go, and ironically DisVM also had support for Java, back in those days.
And adding half baked features to keep relevant while avoiding a Python 3, which any language that wants to survive in the market has to do, as not everyone can afford to alienate their user base.
If anything, Java complexity is the Ghost of Christmas yet to come of Go's future.
By the way, it’s fine that Java takes a different philosophy on simplicity; Go’s trade offs won’t suit every use case. But I think Go’s tradeoffs are better for more use cases by a pretty wide margin.
If Go's wants to stay relevant it will eventually grow such features, no matter what.
Even C now has such niceties like _Bool and _Complex, because adding them was not considered relevant, let alone the bags of money that have been spent trying to retrofit security solutions while keeping backwards compatibility with the "C Spirit".
Oh and even if it is quite limited, modern C also has _Generic.
Go is outstanding for the latter.
In fact, the Go core team themselves have said time and again that they preferred simple implementations and implementation convenience over more powerful but complex ones...
In my view, if Cranelift had been around when Go was announced, it would have been the clear best choice over LLVM, due to compile times and relative simplicity allowing for easy modifications to add things like precise moving GC and moving stacks.
Too bad cranelift is written in a language which wasn't even invented when Go was announced ^^.
"No typed programming languages" aren't a thing. Some type is inherent to any programming language that runs on a computer, because at some point you have to shove the data into a range of memory and it will either fit or it won't. Assembly has types. They are very weak types, but they are types.
On a continuum of weak vs. strong types, Go is very much a weakly-typed language. If you think it's strongly typed, it's probably because of two things: 1) you don't have any experience with a strongly typed language like Haskell or OCaml, and 2) you don't know the difference between strong/weak types and static/dynamic types. There's a widespread misconception among Go programmers that Go has a stronger type system than Python, which is pretty false: Go's type system is more static than Python's, but it's definitely weaker than Python's in a few ways. Go does have a stronger type system than C, but that's not saying much.