Some Were Meant for C: The Endurance of an Unmanageable Language [pdf]
This is a long paper and the author has 2 main claims:<p>1) C Language popularity is more to do with cognitive ease of <i>memory addresses</i> as a conceptual model for inspection and change.  Author claims memory address mental model overshadows <i>runtime performance</i>.<p>2) switching to &quot;safe&quot; languages like Java&#x2F;C#&#x2F;Rust is not necessary.  With no changes&#x2F;violations to existing C Language specification, a new&#x2F;different <i>implementation</i> (compiler) can add more runtime safety checks similar to <i>managed</i> languages.  An example from the paper:<p><i>&gt;Consider unchecked array accesses. Nowhere does C define that array accesses are unchecked. It just happens that implementations don’t check them. This is an implementation norm, not a fact of the language.</i><p>Those 2 ideas look orthogonal but he ties them together at the end.<p>I&#x27;ll take some poetic license (e.g. a little exaggeration) to reword the author&#x27;s idea to help spur discussion...<p>Consider the idea of the <i>Sufficiently Smart Compiler</i>[1] that claims that a &quot;slow&quot; and &quot;high-level&quot; language like Python&#x2F;Ruby could be <i>theoretically</i> analyzed and compiled to be as fast as C or handcrafted assembly.<p>In a way, the author is coming from the opposite direction.  If you had a <i>&quot;Sufficiently Smart Runtime&quot;</i> for a new C Language compiler implementation, it could (theoretically) do all sorts of extra checks and bookkeeping that wouldn&#x27;t require any changes to C source code and wouldn&#x27;t violate the existing C Language standard.  (E.g. Imagine a new C runtime that did many checks similar to Valgrind + UBSAN + ASAN + debugger memory fences, etc.)<p>Would the program execution be slower?  Well yes, but that&#x27;s not really an issue because according to author&#x27;s claim #1, what programmers really like about C is the mental ease of accessing memory addresses.  The performance is important, but it&#x27;s a secondary benefit -- according to the author.<p>[1] <a href="http:&#x2F;&#x2F;wiki.c2.com&#x2F;?SufficientlySmartCompiler" rel="nofollow">http:&#x2F;&#x2F;wiki.c2.com&#x2F;?SufficientlySmartCompiler</a>