Chapter 1: Introduction to the course

Bit of History

. How are programming languages implemented?

Two major strategies:

- Interpreters (old and much less studied)

- Compilers (very well understood with mathematical foundations)

. Some environments provide both interpreter and compiler. Lisp, scheme etc. provide

- Interpreter for development

- Compiler for deployment

. Java

- Java compiler: Java to interpretable bytecode

- Java JIT: bytecode to executable image

 

Some early machines and implementations

. IBM developed 704 in 1954. All programming was done in assembly language. Cost of software development far exceeded cost of hardware. Low productivity.

. Speedcoding interpreter: programs ran about 10 times slower than hand written assembly code

. John Backus (in 1954): Proposed a program that translated high level expressions into native machine code. Skeptism all around. Most people thought it was impossible

. Fortran I project . (1954-1957): The first compiler was released

Fortran I

. The first compiler had a huge impact on the programming languages and computer science. The whole new field of compiler design was started

. More than half the programmers were using Fortran by 1958

. The development time was cut down to half

. Led to enormous amount of theoretical work (lexical analysis, parsing, optimization, structured programming, code generation, error recovery etc.)

. Modern compilers preserve the basic structure of the Fortran I compiler !!!