I remember when the C++ subreddit got depressing after the memory-safety debacle. I wrote in plain-text that it's not about memory-safety and it never will be. C and C++ has a major problem: Managing large projects with multiple dependencies is horrible, and integration is horrible, and all the work-arounds and special features (like precompiled headers) all have problems, footguns. There is no end to the complexity of managing a large C++ project, for example.
I know this because I manage several. To this day, building on Windows is a chore and a half, and I consider my build process to be barely working, and it will one day break simply because the packages I depend on will have some new dependency. As a very recent example is protobuf suddenly depending on parts of abseil.
Memory safety is that extra thing that makes the decision easier.
As for Rust, there are problems too, but to a much smaller degree. As an example, compiling for RISC-V requires a cross-compiler (or at least the linker). Cross-compiling to RISC-V with Go does not.
A final anecdote at the end: I recently added support for Common Access Token in a Rust project, and it was exactly as easy as I thought it would be. I'm not much of a Rust programmer, but I cannot express strongly enough just how big of a difference this makes to productivity. In C++ land we sort of ended up agreeing to never agree on how to get proper networking. It's absurd.
fwsgonzo•1h ago
I know this because I manage several. To this day, building on Windows is a chore and a half, and I consider my build process to be barely working, and it will one day break simply because the packages I depend on will have some new dependency. As a very recent example is protobuf suddenly depending on parts of abseil.
Memory safety is that extra thing that makes the decision easier.
As for Rust, there are problems too, but to a much smaller degree. As an example, compiling for RISC-V requires a cross-compiler (or at least the linker). Cross-compiling to RISC-V with Go does not.
A final anecdote at the end: I recently added support for Common Access Token in a Rust project, and it was exactly as easy as I thought it would be. I'm not much of a Rust programmer, but I cannot express strongly enough just how big of a difference this makes to productivity. In C++ land we sort of ended up agreeing to never agree on how to get proper networking. It's absurd.