I spent a good chunk of last year learning go, and felt dumber for doing so. I feel like Rust is the way to go in 2023 and beyond -- particularly if the rustaceans can get past their own stupidity.
I haven't used go for some reason but it always looked nice. I like the simplicity, for some things. I know old C programmers trying to write web services in C (with hand rolled json...) and I wish I could get them using Go. :)
Rust is neat. I wrote a decent sized side project backend (weatherfy.com) in Rust, with sqlx, postgres, and axum. Shared cache was tough to figure out but everything else was easy.
The whole backend has like one lifetime annotation, so that wasn't too bad. Honestly, I'd use it again, but the compile times scare me.
There's a bunch of negatives I found. I'll gloss over them here.
- New libraries can't just be deployed to the OS, they must be compiled into the project.
- A check for thing==nil doesn't always work for all types of nil. Yes nil does not always equal nil.
- Panics aren't necessarily a bug. They could be a feature (?). Crashes are always a bug in C.
- Garbage collection is mandatory in go. C people are used to managing memory themselves like going for a walk. It's kinda natural.
- GC causes hard to debug performance issues. This was true in Java. And it's true in Golang.
- Golang channel primitives has bugs of their own with deadlocks and other interesting behaviors, whereas a lot of the threading issues in C are pretty well understood.
Rust is neat. I wrote a decent sized side project backend (weatherfy.com) in Rust, with sqlx, postgres, and axum. Shared cache was tough to figure out but everything else was easy.
The whole backend has like one lifetime annotation, so that wasn't too bad. Honestly, I'd use it again, but the compile times scare me.