this post was submitted on 15 May 2026
8 points (83.3% liked)
Linux
13691 readers
499 users here now
A community for everything relating to the GNU/Linux operating system (except the memes!)
Also, check out:
Original icon base courtesy of lewing@isc.tamu.edu and The GIMP
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
A lot of people like to call C low level, maybe in modern times that's fair? It misses the historical context of why it's not usually considered one though and it's ultimately sort of relative.
If I am not mistaken, the argument made by papers like "C is not a low level language" is that C used to be a low level language, because it fit the architecture of a PDP, but a modern computer isn't a PDP, and so C isn't low level.
I've honestly not heard that particular argument for why C isn't low level. I'm not even sure I see what design choices they made which are PDP specific. C seems to fit pretty well on top of computer architecture as a whole. As long as you're turing complete, have RAM, and the ability to issue function calls you basically have everything you need for C. The main reason I'm familiar with for why it's high level is because it's ISA independent. C comes from a time where most software was written in assembly and so highly CPU specific. C isn't that, you write C for one platform and it works everywhere, just need a recompile (provided all the APIs you use are available)
Disclaimer
Dear commenters, I have done very little research on this topic, and I am not a computer scientist. Just an average programmer who has written at most a few hundred lines of C. Feel free to (politely) tell me all the ways I am wrong.I think you can stop there. Any computable function can be run on any Turing complete machine. You just need the right machine code. So you don't really need to add further qualifications.
However, if you do... If you say C needs to be able to read input, write to files and devices, allocate and randomly access memory, or talk to an operating system in any way, then you've tied it to a particular (abstract) architecture. So, I'd say that's a pretty low level language on the abstraction spectrum. Most other languages are higher than it. If you were to rate programming languages from 0 to 10, C would be about a 3. Maybe even 2 for kernel code. Python would be like a 7, and SQL would be like an 8.
Anyone saying a language is strictly either "high" or "low" is missing a lot of nuance, and C is definitely on the low end.