
C is too low level - signa11
https://blog.erratasec.com/2018/05/c-is-too-low-level.html?m=1
======
wahern
This article confuses the language, C, with C implementations.

C is a high-level language. It's just that its abstractions are sparse and the
guarantees so slim that there doesn't need to be significant runtime machinery
that divorces logical control flow from machine code control flow. But a C
implementation is also perfectly free to implement machinery such as fat
pointers and mark & sweep garbage collection[1] for compliant C code. And even
though few implementations bother with such machinery the C committee still
expends significant effort in an attempt to preserve the high-level character.
To this day, for example, there's still debate about whether and to what
extent you can legally export pointer values outside the runtime and
subsequently reimport them, and in particular what that means for
implementations (largely hypothetical) which carefully track objects and
object lifetimes.

[1] I mean precise GC, not conservative GC.

------
badrabbit
Does it not depend on your objective? Would an embedded controller programmer
have the same perspective as a desktop application programmer?

Like the author mentions,some even think assembly is too high level
([http://xlogicx.net/?p=626](http://xlogicx.net/?p=626))

As a general purpose language,C is too low level today (thanks to modern
languages alleviating the need to painstakingly manage memory and pointers ).
Even for a desktop app,C would not have been too low level 10+ years ago in my
opinion.

------
rurban
C is not the fastest compiled language. Those are faster: Fortran, Pony, ATS,
C++ and I guess several more, but we are having a long standing trouble with
the hostile takeover and pythonization of the alioth benchmark site, so we
don't know.

------
Koshkin
TL;DR: C was not designed with modern CPUs in mind.

