Rather than the purpose of C being an optimizable low-level language, it's more accurate to say that is the niche it carved out for itself.
There's plenty of crap in C that doesn't help with either optimization or a good ABI.
Rather than the purpose of C being an optimizable low-level language, it's more accurate to say that is the niche it carved out for itself.
There's plenty of crap in C that doesn't help with either optimization or a good ABI.
No, not really. C was always, right from the start, a kin to portable assembly. You'd be hard pressed to come up with a language from the 70s which was at the same level or lower than C. Neigher Fortran nor COBOL nor ALGOL nor Lisp nor BASIC were lower level than C. Precisely which language, other than assembly, leads you to believe that C ever was considered a high-level language?
I don't understand what leads anyone to argue otherwise.
C as a low-level language is revisionist history. Rust is a high-level language and yet it is a "lower level" language than Java. Same as C vs Pascal. You could write very low level code in Turbo Pascal back in the 80s, the demoscene used it a lot alongside assembly, it had inline assembly even.
EDIT: and to answer your question on what else was "low-level", Forth.
The only interpretation where this assertion rings remotely true is if you follow a definition of "high level language" which boils down to "it's not assembly", which has not been the case for around half a century.
It makes absolutely no sense to claim that languages such as COBOl and C are even close at the same level of abstraction, just because C is compiled, has loops, and has a standard library.
It was the interpretation back then which is what we're discussing :)