What do you think, is C programming language low or high level?

There are some information, in one is said that C is low level, and another C is high level? When I read book of Dennis Ritchie and Brian Kernighan, there is written "C is a relatively "low level" language"?

  • 4
    the "level" of a language is relative. C is high-level compared to assembly but low leveled compared to javascript. – ratchet freak Nov 20 '15 at 13:59
  • 2
  • C is by far the most low-level programming language of all general purpose, architecture-independent programming languages in existence. The only thing which is lower level than C is Assembly, which is not architecture-independent. – Mike Nakis Nov 20 '15 at 14:02
  • There is no official definition, but historically assembler/machine code was considered low-level and any language more abstracted was high-level. But C is one of the high-level languages which is closest to the machine level, which is why it is sometimes designated "mid-level", while scripting languages like Python have sometimes been designated "very high level". But these are all informal categories and somewhat subjective. – JacquesB Nov 20 '15 at 14:17
  • ya know. i'm kinda like Goldilocks and i think that C is "just right". – robert bristow-johnson Nov 20 '15 at 20:08

It's completely context dependent.

  • Compared to PHP, C is low level;
  • Compared to x86 assembly, C is high level;
  • Compared to the instructions I used to construct this universe in which you reside, C is so high level you can barely see it.

It depends who you're talking to, and about what, as to what the answer is. C is a bit of a unique beast, though, because (as Mike pointed out in comments), it's the lowest-level of all general-purpose, architecture-independent programming languages, and these are the languages you're most likely to encounter in modern reality. So, in practice, you're likely to hear C being deemed "low level" unless you're talking to someone who fiddles bits in registers with a soldering iron for a living.

  • 1
    In regards to your third point: Wat? I'm pretty sure C is lower level than Greenspunned Perl. I mean, sure since Lisp machines were a thing, certain implementations of Lisp could be considered lower level than C, but I don't think a Lisp interpreter cobbled together in Perl would count. – 8bittree Nov 20 '15 at 14:18
  • 1
    @8bittree Are you saying God created the universe using Lisp? No argument there. – Robert Harvey Nov 20 '15 at 14:21
  • @RobertHarvey That's my understanding of Mr. Munroe's vision. And it seems reasonable enough. – 8bittree Nov 20 '15 at 14:24
  • Some C implementations process a low-level language. Others implement a dialect which uses low-level syntax but than generates a high-level program whose behavior will only match the semantics implied by the syntax if the code doesn't need do exploit low-level features. – supercat Feb 10 '17 at 19:32
  • The C language can be platform dependent. It depends what the compiler offers you. So for example the use of intrinsics means your C code can target a particular CPU where you choose the instruction and, implicitly, the type of register you want to use. – cdcdcd Nov 14 '18 at 16:55

Not the answer you're looking for? Browse other questions tagged or ask your own question.