P.S. I synthesize and re-write in my own words what books teach, write any example programs they contain, solve all exercises they offer, and comment cursively. I list pages done vs total pages, including any roman and appendix numbering.
SCO Ed6 Page3-4 - Phase1 0004/2384
Another way of looking at the problem: imagine a computer or virtual machine who's language is L1. In this example we will call this machine M1 and the machine using L0 M0. M1 uses L1 as it's base language. If this were the case we would not need L0 or any M0 machines. People could just write L1 and have their M1 execute their programs directly without the need for conversion/translation.
This thus is a third method of bridging the gap: creating a M1 virtual computer running on L0 hardware and write L1 programs directly for the M1 virtual machine.
For translation or interpretation to be practical, the difference between L0 and L1 should not be too great. Because of this limitation, L1, while being more suitable for programming by humans than L0, will still not be very suitable, for most applications.
The answer to this, is the development of yet another, again more abstract, set of constructions that is yet more easy to be understood by humans. We will call this language L2. A virtual machine that uses L2 as it's own language, we will call M2. We will need software to translate L2 into L1, for running at a M1 machine/. And we can use L1 interpreters to interpret L2 interpreted languages.
This process of creating language upon language
theoretically can go on indefinitely, until the
theoretic perfect language is achieved. We could see these as layers
of abstraction within the
organization of computing.
Theoretically we can also perceive of a machine that functions on each of these layers, as if the language at the same level can be run natively on it. The writer things such machines are even possible as hardware, but that such machines are not cost effective since it is much easier to use software to achieve higher levels of abstraction upon low level hardware.
In this sense 1 computing machine can be seen as, in effect, consisting of several (virtual) computing machines of the respective degrees of abstraction.
A multilevel machineIn this book the words 'level' and 'virtual machine' will be used interchangeably. Just keep in mind that computer terms can mean different things within different contexts and the term 'virtual machine' can mean several things.
Although only at level 0 instructions are put in effect, a programmer, writing at any of the different levels of abstraction need not know what his program is converted into before reaching the hardware, in order to write solid programs.
High-level programmers are generally not interested in what happens at the low-level. People designing new computers must understand at least the lower levels of computing. People who really want to understand how computing works must study all the levels.
The description of the computer as a series of levels of abstraction in relation to the effect the existence of such levels has on computing methods, is the central theme of this book.