Having used both C and C++ they both have strengths and weaknesses and each is better suited for certain kinds of problems:<p>C: simple, ubiquitous, FFI with practically everything, practical direct access to the hardware; requires significant effort to build bigger things, feels more fragile at larger scales.<p>The power of C in a single page of code: <a href="https://www.jsoftware.com/ioj/iojATW.htm" rel="nofollow">https://www.jsoftware.com/ioj/iojATW.htm</a><p>C++: powerful, complex, efficient, builds upons C's strengths <i>and</i> C's weaknesses; can be difficult to debug, has grown immensely complex and difficult to "keep it all in your head".<p>"Why should I have written ZeroMQ in C, not C++": <a href="https://250bpm.com/blog:4/" rel="nofollow">https://250bpm.com/blog:4/</a><p>But C and C++, while ubiquitous are not safe:<p>"A Guide to Undefined Behavior in C and C++": <a href="https://blog.regehr.org/archives/213" rel="nofollow">https://blog.regehr.org/archives/213</a><p>I resisted Rust at first and then I decided to try out Rust for Advent of Code. It was impressive. I read "Programming Rust, 2nd Edition" by Jim Blandy, Jason Orendorff, and Leonora F. S. Tindall (<a href="https://learning.oreilly.com/library/view/programming-rust-2nd/9781492052586/cover.html" rel="nofollow">https://learning.oreilly.com/library/view/programming-rust-2...</a>) and was more impressed by the design decisions and pitfalls that Rust avoids. We started using Rust at $WORK to replace a tool written in C and discovered many hidden bugs in the C implementation and gained maintainability and better performance.<p>Today, I view C and C++ as legacy languages that will be replaced with safer alternatives like Rust.