|
The great aim of education is not knowledge but action.
|
|
Computer programs are formulated in a programming language. Computers, however, interpret sequences of particular instructions, but not program texts. Therefore, the program text must be translated into a suitable instruction sequence before a computer can process it. This translation can be automated, which implies that it can be formulated as a program itself. The translation program is called aCompiler.
The construction of the first compiler for the language Fortran (formula translator) around 1956 was a daring enterprise, whose success was not at all assured. It involved about 18 man-years of effort, and therefore figured among the largest programming projects of the time.
Only choosing a clearly defined, well-structured source language could reduce the intricacy and complexity of the translation process. This occurred for the first time in 1960 with the advent of the language Algol 60, which established the technical foundations of compiler design that still are valid today.
For the first time, a formal notation was also used for the definition of the language's structure (Naur, 1960).
The translation process is now guided by the structure of the analyzed text. The text is decomposed, parsed into its components according to the given syntax. For the most elementary components, their semantics is recognized, and the meaning (semantics) of the composite parts is the result of the semantics of their components. Naturally, the meaning of the source text must be preserved by the translation.
A partitioning of the compilation process into as many parts as possible was the predominant technique until about 1980, because until then the available store was too small to accommodate the entire compiler.
The text to be translated is called source text (or sometimes source code). Source language is translated into an equivalent program in another language, the target language.
It is not difficult to see that this translation process from source text to instruction sequence requires considerable effort and follows complex rules. This course examines
these rules and the principles that are the basis
of modern Compilers. |