Earlier quoted context omitted.
What are some things that make it well managed?
The reluctancy to introduce new syntax too quickly (looking at you, TC39 and Babel) makes go an almost maintenance free language. If you learned idiomatic go, you can maintain and patch other libraries in the ecosystem very quickly. Unified codestyle, unified paradigms, unified toolchain. It's a language with harsh opinions on everything. If you manage to get over your own opinions, you'll realize that any opinion up…
Russ Cox is stepping down as the Go tech lead
241–250 of 396 posts
Re: Russ Cox is stepping down as the Go tech lead
#242Earlier quoted context omitted.
False things programmers believe: All reference types should be able to take a null value. It's impossible to write complex and performant programs without null. It's impossible to write complex and performant programs without pointers. References always hold a memory address in a linear address space. (Not even true in C!) Every type is comparable. Every type is printable. Every type should derive from the same comm…
> It's impossible to write complex and performant programs without null. Well, clearly there is a need for a special value that is not part of the set of legal values. Things like std::optional etc. are of course less performant. If I can dream, all of this would be solved by 72-bit CPUs, which would be the same as 64-bit CPUs, but the upper 8 bits can be used for garbage collection tags, sentinel values, option type…
There's a neat trick available here: If you make zero an illegal value for the pointer itself, you can use zero as your "special value" for the std::optional wrapper, and the performance overhead goes away.
This is exactly what Rust does, and as a result, Option, Option>, etc are guaranteed to have zero overhead: https://doc.rust-lang.org/std/option/index.html#representati...
Re: Russ Cox is stepping down as the Go tech lead
#243Earlier quoted context omitted.
What are some things that make it well managed?
Almost zero drama and almost no feature creep or breaking changes. The team seems to have a focus, and does not change it easily. That is important for a programming language, and it doesn’t happen organically.
Hm. Wasn't (the lack of) generics pretty drama filled? Especially the way they fought against it for so long.
Re: Russ Cox is stepping down as the Go tech lead
#244gofmt probably has alone saved so much time across the world (and is upstream from every other language ecosystem basically saying "ok let's just autoformat"). I hate what autoformatters do to my code, but I love not having to talk about spacing anymore.
Interestingly enough, I hate autoformatters (and use spaces instead of tabs) in every other language , but in Go you just get used to the way gofmt formats your code from the beginning, and then start to appreciate that you don't spend as much time on it anymore, so it's not a problem (at least for most people).
Re: Russ Cox is stepping down as the Go tech lead
#245Earlier quoted context omitted.
Wow, that's painful to read. Separating the concept of pointers and nullable types is one of the things that I think go having from the beginning would have made it a much better language. Generics and sum types are a couple of others.
> Wow, that's painful to read. And the dismissive tone of some people including Ian. But to be fair before Rust there was definitely this widespread myth in the dev hivemind that nullable pointers is just the cost of performance and low level control. What’s fascinating is how easy and hindsight-obvious it was to rid code of them. I’ve never had to use pointers in Rust and I’ve worked on quite advanced stuff.
Re: Russ Cox is stepping down as the Go tech lead
#246Earlier quoted context omitted.
That's what he said
In part of the comment yes, kind of, but the comment begins by saying "Iterators definitely have one of the strangest syntaxes I've seen". As there is no syntax specific to iterators in Go, I find this a bit hard to understand.
It's not that hard to understand what OP means.
Re: Russ Cox is stepping down as the Go tech lead
#247Thank you, rsc, for all your work. Development in Go has become much more enjoyable in these 12 years: race detector, standardized error wrapping, modules, generics, toolchain updates, and so on. And while there are still things to be desired (sum types, better enum/range types, immutability, and non-nilness in my personal wishlist), Go is still the most enjoyable ecosystem I've ever developed in.
I’m sure if Go had nullable types and/or sum types from the beginning, it’s have been much more popular
Re: Russ Cox is stepping down as the Go tech lead
#248Earlier quoted context omitted.
I’m sure if Go had nullable types and/or sum types from the beginning, it’s have been much more popular
Perhaps, but other languages that look a lot like Go with these additions (e.g. OCaml) have not gained much popularity, despite getting much more love on forums like HN. It's important to remember that the people expressing strong opinions about sum types on the internet are a tiny and non-representative fraction of working programmers.
Re: Russ Cox is stepping down as the Go tech lead
#249Earlier quoted context omitted.
The reluctancy to introduce new syntax too quickly (looking at you, TC39 and Babel) makes go an almost maintenance free language. If you learned idiomatic go, you can maintain and patch other libraries in the ecosystem very quickly. Unified codestyle, unified paradigms, unified toolchain. It's a language with harsh opinions on everything. If you manage to get over your own opinions, you'll realize that any opinion up…
Clutter death that creeps in any language, as I see it. To this day, only a small subset of JS syntax is used; I cannot recall anyone besides me ever using method chaining like .map .filter, etc. There is a reason why almost every good language is somewhat akin to C to this day, and maybe people started over to get rid of the noise.
Interesting. That's all anyone on my team ever used once it became available.
But, it highlights the point with Go. Working with Go for just a little while means I can easily read and work with nearly any Go project with a very short ramp up.