I personally think that alot of languages create too much abstraction; hiding the core basics of machine programming. They get to learn what programming is, and some concepts, and can even produce software focusing on the software's design itself.
This is great, of course. After all, it does indeed increase productivity. However, as they are never taught the core fundamentals of machine programming, it makes it much more harder for them to grasp the concepts involved. (I have seen alot of BASIC programmers give up on learning C and C++ because they deemed it to difficult and confusing.)
One of the reasons why I like C and C++ is because, while attaining abstraction, it is still low enough to control everything you want in it, without the headaches and problems of assembly languages (ie, portability.)
Then again, it might just be personal taste. Some people may learn better from the core fundamentals, while others may learn better starting from abstract concepts learned from other higher level languages.
[.:EvolutionEngine][.:MicroOS Operating System][Website :: OS Development Series]