Stuff like ReadOnlySpan and IMemoryOwner are awesome to have as built-in language concepts.
Startups choose Go because no one I know is excited about working with GoF-style OO code these days. It’s easier to hire for and faster than C# for most workloads.
Yes, you can write C# in a data-oriented way, but no one does. So diving into an existing codebase means dealing with OO encumbrances, and not everyone wants that.
The compilation time is fast, and so is the startup time. Cross-platform compilation with a single command and a single binary makes life easier. On top of that, most infra tooling—Grafana, Prometheus, Kubernetes, Terraform—is written in Go, so choosing Go for the backend comes with a ton of advantages over C#. I can personally attest that this is exactly why Uber and now DoorDash have chosen Go over the alternatives.
Not once have I ever had to interact with these technologies in a way that would benefit from my application using the same language. The language they are written in is irrelevant.
Why do I need to understand that? Why can I not put an abstraction layer that provides me with the illusion of exactly-once delivery?
> There is no library that can make that just go away
Well, this is the thing that I dispute. I believe that there is a library I can write to make it go away if I have at-least-once delivery. In fact, I claim that writing such a library is an elementary exercise. The TCP protocol is an existence proof. Where is the flaw in my reasoning?
There is no guarantee that the application reads from that buffer (e.g. the process could crash), so the client on the other end believes that the application has received the message even though it hasn't.
The kernel is handling at-least-once delivery with the network boundary and turning it into at-most-once with the process boundary.
I don't really buy the gaming one, in every other domain where a community of people are gathering to do a thing they enjoy together it's on the community and not the tool maker to figure out how to avoid bad behavior. If you don't wanna play with cheaters then just play with somebody else.
Relying on the community to police cheaters is not an effective strategy for online skill-based matchmaking games. There's a reason game companies spend money and effort on anti-cheat and it's not because they're ignoring cheaper alternatives.
And I took my new quadcopter drone out and did some flying last night for the first time. As in, my first time flying a drone, ever. The results were... predictable. Let's just say, I bought a cheap (< $100) drone for a reason. This thing will wind up destroyed. In less than an hour I managed to crash it into fences, walls, bushes, cars, dumpsters, the ground, an armadillo, Elvis Presley, a 1974 AMC Gremlin, and Nickelback. Well, more or less.
It brought to mind this famous scene[3] from the movie Days of Thunder:
Harry: I want you to go back out on that track and hit the pace car.
Cole: Hit the pace car?
Harry: Hit the pace car!
Cole: What for?
Harry: Because you hit every other god-damned thing out there and I want you to be perfect.
[1]: https://jacamo-lang.github.io/