The people of Earth live relatively cushy lives at the expense of the belters. The UN and corporations extract resources from the belt, they overthrow democratically elected leaders to prop up corrupt puppet leaders to do Earth's bidding. All the while, the belters see little of the riches that they're force to extract. Also, unfortunately for the poor of Earth, that wealth also doesn't trickle down to them.
It is a pretty accurate analogy of the current state of affairs of Earth today, but the divide is between the Global North and the Global South.
The people of Global North live relatively cushy lives at the expense of the belters. The governments and corporations of the Global North extract resources from the belt, they overthrow democratically elected leaders to prop up corrupt puppet leaders to do Global North's bidding. All the while, the working class of the Global South see little of the riches that they're force to extract. Also, unfortunately for the poor of Global North, that wealth also doesn't trickle down to them.
The Earth of The Expanse is a warning, not an aspiration.
Not only our their websites painful which discourages use, websites are more sandboxed.
We have SSB, audio in/out, and cat control, so all the pieces are there.
A programming language without sum types and exhaustive pattern matching in its type system is unable model this real world concept in its type system.
I'm maintaining 4 kubernetes operators written in Rust with a team of devs who are _not_ brilliant developers, and it's all async, and once I setup the patterns, they were able to jump in and start contributing business logic immediately.
Is it the most performant possible implementation? Definitely not! But once I told them how to stop using unwrap() everywhere, they have literally _never_ crashed or panic'd in over a year. When we were working in go, nil pointer exceptions were the bane of our existence.
Whenever we pass by value as opposed to by address, Go makes a copy. Use .clone() in Rust, it is fine most of the time. Optimize it out if you find it is a performance bottleneck.
I have changed my mind.
Why? Well, I started writing Go again, so I had experience writing both Rust and Go within a close timeframe to each other. These are very different languages with very different strengths. I think choosing one over the other largely comes down to what you are writing. For deep, complex typed algo code esp. things that need to be very fast, I would likely still choose Rust, but Go really excels at writing infra code. Code that needs to be fast, but more importantly needs to be iterated quickly, and Go compiles MUCH faster than Rust.
Most of my objections to Go I find in the "programming language theory part of my brain". I am a language designer at heart, and by that, I mean I iterate on language designs and have a deep love for PLT. The issue I have found is that, while Rust is awesome in theory (and still one of my favorite languages), actually building things quickly is more satisfying to me, and I am finding I can build in Go about 2x the rate as in Rust. I didn't think this was the case until I actually started tracking my own iteration speed. Things like compile time DO matter, because you are always compiling at some level, even if just running tests. Also, every language feature is just a tiny bit of friction, and Go is so simple that friction is nearly non-existent.
Most of my Go language objectionss, such as nil pointers, lack of enums, multi return vs tuples are much less an issue in practice than they are in theory, and once you sit down and actually think on 'why' Go might have done what it did, it actually makes some sense. I had a few lightbulb moments I could expand on in a different post.
In summary, Go and Rust are very different languages. I really like both, but in different use cases. I am back to writing more Go than Rust, but I expect to write some of both going forward.
If there was a version of Rust was garbage collected, I think it would be more popular.
I'd love TypeScript if it didn't inherit the foot guns of Javascript and didn't have the ever changing tool chain.