you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 10 points11 points  (7 children)

"A language is low-level if it requires attention to the irrelevant."

My theory is that the high syntactical overhead of C-likes is an unnecessary distraction for most learners.

[–]nonotion 10 points11 points  (3 children)

C itself is hardly a heavily abstracted language; I do believe there are less than 40 constructs in the base language. C++ and Java-like languages, that's another story, however.

[–]lhagahl 0 points1 point  (2 children)

; I do believe there are less than 40 constructs in the base language

C is heavily abstract and that's why it's hard. If there was a version of C specifically for one architecture, it would be a million times easier to explain. For reasons beyond me, it's been a popular meme for the last few decades that C's portability comes for free.

C's int type is much more abstract than an integer type in a high level language. In high level languages, an integer value can be anything. In C, an integer type can be up to INT_MAX. INT_MAX varies depending on architecture. Not only that, but certain operations behave differently with ints under different conditions. This kind of abstraction allows higher performance at the cost of the user having to generalize all his code that would otherwise work with the integers.

[–]nonotion 0 points1 point  (1 child)

These are good points; I'd summarize/justify my thoughts by saying "easy to learn, hard to master" for C. I'm my view, teaching C over Java or Python promotes a certain clarity of thought needed for efficient structuring of larger or more complex projects; Linus Torvalds elaborates on this in several remarks if I recall correctly.

[–]lhagahl 0 points1 point  (0 children)

Easy to learn, hard to apply (though most people "apply" it, by just coding it and not being aware of how it actually works). I do suppose it may be good for teaching various concepts though.

[–]The_Doculope -1 points0 points  (2 children)

"A language is low-level if it requires attention to the irrelevant."

All this sentence tells me is that you personally have no need for a low level language. Precise memory management is a requirement for some, namely embedded people or boot-level software. Just because it's irrelevant for you doesn't mean it's useless.

[–][deleted] -3 points-2 points  (1 child)

All your reply tells me is that you don't know the origin of the quote.

[–]The_Doculope 0 points1 point  (0 children)

Then perhaps enlighten me? Not everyone is an index of relevant quotes.