Assuming one language does take the throne from C/C++, even the ultimate winner may have a significantly smaller niche than C/C++ ever had - for a large part of their life they were used as general purpose languages rather than just "system" or "perf matters" languages.
Conversation
Agreed.
Hopefully we'll be left with a systems language focused on system stuff. My bet is on Rust or a future entrant. Swift is an Apple thing and Apple things usually stay Apple things. Of course, if Apple takes over the world, we'll all be writing OSes in Swift I guess.
3
1
it has to be Rust or something new, unless I'm wrong about Swift or unless Swift evolves quite a bit
3
2
Rust has some great engineers and researchers working on it too. It's the first mainstream usage of region types, and lots of innovation / research has had to happen to make that work well. Cyclone laid some of the earlier groundwork for it too. I'm sure others will build on it.
1
2
Whether or not Rust displaces C substantially, it making these features usable enough to have widespread adoption makes it very successful. It's still pushing the boundaries of the region typing model, including very nice libraries designed around it, safe data parallelism, etc.
2
1
C is irreplaceable. Even more than C++. (These are two very different language.)
The portability of C is unbeaten. There is a C compiler for *everything*. Rust may have the power of LLVM, but that may not be enough.
2
2
Is Rust still on LLVM? I thought it was an independent framework now?
2
Yes, it still uses LLVM as the backend for the official compiler toolchain. They switched to using their a mid-end intermediate representation internal to the Rust compiler (MIR) like Swift rather than generating LLVM IR directly. It leads to much leaner, more optimized LLVM IR.
1
1
LLVM compilation is very slow, so generating lean LLVM IR is important for compile-time along with LLVM being designed for low-level optimizing with very weak support for thorough optimization based on strong guarantees for types, aliasing, etc. It can't represent most of it.




