6 ms·
> Modern C++ is kind of a mess with how much stuff they’ve added to the language. This is not relevant. Yeah and C++ would be a way better language to write c
by adev_ 6y ago
> Modern C++ is kind of a mess with how much stuff they’ve added to the language. This is not relevant.
Yeah and C++ would be a way better language to write critical system daemon in 2020 than C. Both safer and more productive while keeping the exact same portability and performance as C when necessary.
Most safety issues of C (buffer overflows, use-after-free, stack smash) are not a problem anymore in modern C++.
Yes, writing new userland software in C in 2020(1) is non-sense.
- Use at least C++ if you are conservative.
- Use Rust if you aim for absolute safety.
- Use Go if you accept the performance hit and do not need libraries.
There is zero excuses to C in userland in 2020.
The only excuse is some Red Hat folks seems to practice C++ hating as some kind of religion.
That exactly what give us "beautiful" monstrosities like systemd or pulseaudio with their associated shopping list of CVEs [^1]
Even GCC maintainers switched to C++, by the sake of god, do the same.
----
[^1]: https://www.cvedetails.com/product/38088/Freedesktop-Systemd.html?vendor_id=7971 https://www.cvedetails.com/product/38088/Freedesktop-Systemd...
- MaxBarraclough 6y ago> There is zero excuses to C in userland in 2020. I wouldn't go quite that far. I'm generally in the C++ camp (rather than C, that is) but there are significant advantages to a compact and stable language, and real disadvantages to a sprawling disaster like C++ that grows still more monstrously complex every few years. This topic turned up a year ago: https://news.ycombinator.com/item?id=21946060 https://news.ycombinator.com/item?id=21946060 Your point stands though: well written modern C++ should be much less prone to memory-safety issues than well written modern C.
- damudel 6y agoIt's not feasible nor desireable to abandon C. Rather it is better to incrementally move to things like checked C, apply static analysis and perform formal proofs of correctness through Frama C and other tools. Do not use C++. Use Ada or Rust. GCC did not move to C++ for safety, but for the convenience C++ can provide. C++ is a very problematic language. It does not replace C due to its complexity.