StudlyCaps wrote:
This is totally incorrect, and hasn't been remotely true for freaking decades. Machine generated code from well written high level source is faster than hand rolled assembly for any non-trivial task.
Yes, that's a pretty common misconception. I tend to believe that generated code is good, but every time I put that assumption to a test, it turns out that my hand written code is way better. Last time I run into an issue where the compiler was unable to optimize dot product calculation for vectors. SSE4 has a direct instruction for that, which I can use if I use hand rolled Assembly.
I think the confusion originates from the fact that "hand rolled Assembly" is not well-defined. Hand rolled by whom? If we are talking about an average programmer, then the answer is yes, compiler generated code is better than their hand-written Assembly. However if we are talking about experienced low-level programmers (like OSDevers for example), then the answer is most definitely no, those devs can write better code than a compiler.
StudlyCaps wrote:
As for lazy, is mechanized agriculture lazy? Was the industrial revolution powered by laziness? Of course not, the point of labour saving is to perform the same task with fewer resources, so the same people can do more in the same time. It's reductive to the extreme to call it lazy, and the result of some real intellectual laziness.
What are you talking about?
(And about the industrial revolution you are extremely naive, the point never was to save time for the people. They saved labour because machines were cheaper. Machines do not want expensive health-care, nor do they strike for better working conditions, and most definitely they don't sleep, so that the factory could go around the clock. It was all about profit maximalization, nothing like being humane or good-hearted, you're naive if you think that.)
Back on the topic, high level languages take the burden of low-level machinery from the shoulders of the developer. For example in C, you have to take care of your heap variables by explicit use of malloc()/free(). In a "higher" language, C++ for example new and delete takes that away and automates allocation in many cases when you construct instances. The more "higher" level the language is, the more of these are abstracted away. You don't need to care for delete either with Java or Python for example. This also means it is easier to program in a high-level language, which suits lazy-people, who don't care about effectiveness just wants to get the job done.
And humanity is lazy by default, they try to get out the most with the least effort. That's actually every living thing's nature. Just look around you.
Cheers,
bzt