The C juggernaut illustrated (2012)
I love C. As far as I can tell, there isn&#x27;t anyone on the face of the planet trying to build anything like C in order to replace it. Rust isn&#x27;t it. Rust is decidedly a &quot;C++ replacement,&quot; if anything. Go is the closest in terms of philosophy, but Go isn&#x27;t it either, because its standard implementation is garbage collected, among a number of other concerns.<p>There is almost certainly SOMEONE out there, a random nobody on GitHub or elsewhere actually trying to write something that is as close to C in terms of philosophy and execution but utilizes some modern niceties, but I don&#x27;t know who they are.<p>If you want to replace C, though, you actually have to get in C&#x27;s skin, and undulate and move like C does.<p>But here&#x27;s the kicker: absolutely no major language seems to want to do this, so they&#x27;re all dead on arrival.<p>No other language has the same ability to interop with other languages. No other language gets nearly as close to writing something that you can have an idea of what the underlying assembly looks like when you write it. No other language seems to care about the surrounding ecosystems C operates in or think about topics like ELF&#x2F;Portable Executable&#x2F;Mach-O.<p>Why? Because all of them operate in their own little bubble. No other language wants to expose those details to you. They want you to operate in the world of MyWorldLang. What&#x27;s &quot;name mangling?&quot; What are &quot;shared libraries?&quot;<p>But you can&#x27;t displace C if you don&#x27;t care at all about POSIX or FFIs or assembly output or the host OS, and none of them do.<p>If you operate in the world of VegetableLang, they want you to work with &quot;CarrotLib&quot; and &quot;Tomato constructs,&quot; and &quot;VegThreads.&quot; And all of this other nonsense that has nothing to do with hardware. And then we end up with all of this garbage software and fewer and fewer opportunities for people to learn how to utilize their hardware, because guess what, there is no abstraction layer that will automagically help you get your records into cache lines. You HAVE to count those bytes yourself somewhere, sometime.<p>C is so powerful and long lasting because people who want to displace C and related languages aren&#x27;t even in the same ballpark. They&#x27;re on another planet. In another universe. Apparently working with a CPU or RAM to them is like asking how relevant it is for someone to be able to throw a golf ball into a basketball hoop from the three-pointer line in the fourth quarter of a football game.