Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The article itself has 4 definitions or "attributes" for low-level languages that can be considered contradictory:

* "A programming language is low level when its programs require attention to the irrelevant."

* Low-level languages are "close to the metal," whereas high-level languages are closer to how humans think.

* One of the common attributes ascribed to low-level languages is that they're fast.

* One of the key attributes of a low-level language is that programmers can easily understand how the language's abstract machine maps to the underlying physical machine.

So basically the entire article's premise (the title) hinges on the last bullet- which can be contested. All the other mentioned attributes can be applied to Java, C, C#, C++. So failing the last bullet point doesn't apply to just C.



I think the author's point is that despite being perceived as low-level, C doesn't really differ from, say, Java on the last bullet.

In other words, a programmer who sits down and uses C and not Java might think, "I am being forced to pay attention to irrelevant things and think in unnatural ways, but that's because I am writing fast code using operations that map to operations done by the physical machine. In a higher-level language like Java, more of these details are out of my control because they are abstracted away by the language and handled by the compiler."

I think the article does a great job dismantling this point of view, and telling the story that C is not so different from Java, aside from being unsafe and ill-specified.


Maybe true but I think the Java example is not that good. Java is still not that different from C. Java is more like a decendant to C and C++ - and to be honest both languages force you to pay attention to lots of irrelevant "low-level" detail, fictionally low-level since its not actually the machine but language itself (that is stuck in the PDP11 mental mode...)

Compared to something different like Erlang, Haskell, Lisp


High-level and low-level are relative, to be sure, but Java is definitely considered higher-level than C -- it was designed to target a virtual machine, for example, while C was designed to target real machines -- so I think it illustrates the article's point perfectly.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: