C is not a low-level language (2018)

6 pdubroy 7 5/13/2025, 2:43:14 PM queue.acm.org ↗

Comments (7)

variadix · 10m ago
If it has inline assembly it’s low-level in my opinion. This feature (or at a minimum the ability to link against and interface with assembled objects) is _the_ requirement for all hardware-facing programming, since general purpose programming languages cannot represent all possible hardware minutiae within the language.
Const-me · 26m ago
> it is possible to make C code run quickly but only by spending thousands of person-years building a sufficiently smart compiler

Just because some of the C++ code I write heavily relies on ISA-specific SIMD intrinsics doesn’t replace the language with some other one, it’s remains to be C++. Compared to solving the general problem by making a sufficiently smart automatically vectorizing C compiler, learning SIMD intrinsics is way more manageable.

BTW, a few years ago I wrote an article about SSE 1-4 and AVX 1-2 ISA extensions, as exposed to C and C++ languages: http://const.me/articles/simd/simd.pdf

efitz · 1h ago
Yes it is. I’m unswayed by your arguments. You start out by defining a low level language, concede that C meets your definition, and then go on to argue that even so, it’s not a low level language.
OSDeveloper · 2h ago
I would say it is only a low level language if it's a form of assembly or used in systems programming like Linux or OpenBSD or whatever else in the kernel land
Detrytus · 1h ago
I would say that any language that has if-else instruction, for loop, and the ability to define functions/procedures is "high level".
renewedrebecca · 1h ago
You can do all those things with a macro assembler.
andrewmcwatters · 38m ago
>> "A programming language is low level when its programs require attention to the irrelevant."

Wow, today I learned there are only low-level programming languages.