4

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"?

gnat
  • 21,442
  • 29
  • 112
  • 288
Maxam
  • 163
  • 1
  • 1
  • 4
  • 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
    see also: [Why is C still in the category of High Level Language?](http://programmers.stackexchange.com/questions/267583/why-is-c-still-in-the-category-of-high-level-language) – gnat Nov 20 '15 at 14:02
  • 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

1 Answers1

16

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.

Lightness Races in Orbit
  • 8,755
  • 3
  • 41
  • 45
  • 1
    In regards to your third point: Wat? I'm pretty sure C is lower level than [Greenspunned Perl](http://i.stack.imgur.com/SzFny.jpg). 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
  • 2
    @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
  • @cdcdcd That makes the code platform dependent. It does not make the language platform dependent. – Lightness Races in Orbit Nov 14 '18 at 17:13
  • @LightnessRacesinOrbit perhaps a better way of putting it is that the implementation of the language (the compiler) can enable platform dependent code. – cdcdcd Nov 20 '18 at 14:43