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
 

An intresting talk on Is Everything a File, IO Models, Is C a Low Level Language, and a quick comparison on Interfacing with USB devices on Mac OS, Linux and Windows.

you are viewing a single comment's thread
view the rest of the comments
[–] Scoopta@programming.dev 3 points 3 days ago (3 children)

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.

[–] avidya@programming.dev 2 points 3 days ago (1 children)

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.

[–] Scoopta@programming.dev 0 points 2 days ago (1 children)

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)

[–] Quibblekrust@thelemmy.club 1 points 22 hours ago* (last edited 22 hours ago)

DisclaimerDear 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.

As long as you're turing complete

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.

load more comments (1 replies)