What we call “level of abstraction” of any programming language is a measure of the expressive power that that language avails to the programmer: the higher that level, the larger the computational effect of a single statement of the program.
The latter notion provides another, perhaps more direct, intuition of how the level of abstraction can be measured quantitatively: the higher it rises, the farther it gets from the actual operation of the underlying processor hardware.
The execution of one single program statement (i.e., the achievement of the computational effects that it is intended to cause) entails the execution of multiple, possibly very many, individual processor instructions.
With modern programming languages, there always is a one-to-many correspondence between any single program statement and the corresponding sequence of processor instructions.
When the language compiler (or interpreter) transforms the program text into executable binary, it effectively applies that correspondence.
Interestingly, not all of that transformation can happen statically, before execution, because a sizeable proportion of such transformations applies to elements of the “program state”, that is, to the machinery needed to cause program-level entities to exist and be operated upon by program execution.
The simplest possible example of such machinery is what is to exist for the abstraction of procedure calls to be available to the programmer.
The technical name given to that machinery is “run-time support” for the corresponding programming language, shortened to “language runtime”.
Most evidently, such very high-level language features as concurrency and distribution involve semantics that is far from primitive to the computer hardware.
Their realization therefore requires the compilation system of the corresponding programming language to be augmented with software libraries dedicated to making the relevant semantics happen at run time.
This class aims at exploring the requirements placed on such runtimes, and their typical operation, considering exemplary paradigms of language-level concurrency and distribution, progressively ranging from single-CPU computers to the Cloud.
- Docente: Tullio Vardanega