C Is Not a Low-level Language (2018)
Something about this constantly appearing trope bugs me.<p>I began programming C and assembler on the VAX and the original PC. At that time, C was a reasonable approximation of the assembly code level. We didn&#x27;t get into expanding C to assembly that much but the translation was reasonably clear.<p>As far as I know, what&#x27;s changed that mid-80s world and now is that a number of levels below ordinary assembler have been added. These naturally are somewhat confusing <i>but</i> they aim to emulate the C&#x2F;assembler model that existed way back then. These levels involve memory protection, task switching, caches and all things involved with having the current zillion-element Intel CPU behave approximately like the 16-register CPU of yore but much-much faster.<p>I get the &quot;there&#x27;s more on heaven and earth than your flat memory model, Horatio&quot; (apologies to Shakespeare).<p>BUT, I still don&#x27;t see any of that making these &quot;Your Ceeee ain&#x27;t low-level no more sucker&quot; headlines enlightening. A clearer way to say it would &quot;now the plumbing is much more complicated and even c programmers have to think about it&quot;.<p>Because... adding levels below C and conventional assembler still leaves C exactly as many levels below &quot;high level&quot; language as it was before and if there&#x27;s a &quot;true low level language&quot; for today I&#x27;d like to hear about it. And the same sorts of programmers use C as when it was a low level language and the declaration doesn&#x27;t even give any context, doesn&#x27;t even bother to say &quot;anymore&quot; and yeah, I&#x27;m sick of it.<p>Edit: plus this particular actual article is primarily a rant about processor design with C just pulled into the fight as a stand-in for how people normally program and modern processors treat that.