How “high-level\ can a programming language be?
Very roughly, progress in programming languages is measured by the use of higher and higher “levels” of languages. That is, languages that allow the structures of programs to correspond more closely to the structures of the problems that they solve, and be less constrained by the structures of the machines that execute them. In the bad old days, there was an overemphasis on run-time efficiency. That is, we assumed that we knew exactly what a program should do, and a number of ways to make it do so, and the action was in making it do so as quickly as possible, using as little memory as possible. This assumption favored programming languages that followed the structure of the underlying machines very closely. Such programming languages were also relatively easy to design and implement. By now, it is clear that the cost of using computer software is determined overwhelmingly by the cost of testing, debugging, modifying, and otherwise maintaining programs, rather than by the cost of runn