I completely agree that programming languages are all about the people, not the machine, as all code written today eventually ends up as machine language before causing something to happen in the human sensory spectrum (teletype, music, video, etc) . The machines, therefore, obviously only care about machine code, not the originating macro language. The author is merely astutely pointing out that on the human side of things it is important to know what the resulting machine code will be and the manner and consistency with which it is executed (thus his string copying example). Since there are so many different machine languages, however, it is a clever compromise to learn the workings of a slightly higher level language that acts as a Rosetta stone across multiple platforms of machines and humans. This is C.
Software development is in a horrible state today. I have older programs that I continue to use to this day in which I have yet to find a single programming error. Not one. I cannot say this about any application package I use that was created post 1998. And the difference in level of sophistication just isn't that broad. The reason for this state of affairs is clear. The human interface for programming (the macro languages) have been abused to create techno-societal classes and cliques that want to obscure the underlying truth that I just explained, that the important thing in software development is understanding what happens on the most basic level you can (yes, physicists and electrical engineers are my idols). The babblings of Abelson and Sussman are just additional evidence of the people who don't want to take the time and energy to learn the fundamentals before they start abstracting.
I completely agree that programming languages are all about the people, not the machine, as all code written today eventually ends up as machine language before causing something to happen in the human sensory spectrum (teletype, music, video, etc) . The machines, therefore, obviously only care about machine code, not the originating macro language. The author is merely astutely pointing out that on the human side of things it is important to know what the resulting machine code will be and the manner and consistency with which it is executed (thus his string copying example). Since there are so many different machine languages, however, it is a clever compromise to learn the workings of a slightly higher level language that acts as a Rosetta stone across multiple platforms of machines and humans. This is C.
Software development is in a horrible state today. I have older programs that I continue to use to this day in which I have yet to find a single programming error. Not one. I cannot say this about any application package I use that was created post 1998. And the difference in level of sophistication just isn't that broad. The reason for this state of affairs is clear. The human interface for programming (the macro languages) have been abused to create techno-societal classes and cliques that want to obscure the underlying truth that I just explained, that the important thing in software development is understanding what happens on the most basic level you can (yes, physicists and electrical engineers are my idols). The babblings of Abelson and Sussman are just additional evidence of the people who don't want to take the time and energy to learn the fundamentals before they start abstracting.