CS ATLAS A map of computing

Domain 07 —

Programming Languages & Compilers

7 topics1952 — 1995

Chronology — 34 entries

Chronology

Every milestone in this domain, ordered by date. An event shared by several topics is counted once.

1952The A-0 systemA compiler pioneer.Compilers & Optimization
1954The FORTRAN proposalBackus starts it at IBM.FORTRAN
1957A FORTRAN compilerGenerated code reaches usable speed.Compilers & Optimization
1957The FORTRAN compiler shipsThe first widely used high-level language.FORTRAN
1958LISP appearsMcCarthy designs it at MIT, bringing the lambda calculus into programming languages.LISP & Functional Programming
1958ALGOL 58An international committee starts the design.ALGOL & Structured Programming
1960Parsing theoryLL and LR analysis mature.Compilers & Optimization
1960Garbage collectionThe beginning of automatic memory management.LISP & Functional Programming
1960The ALGOL 60 reportBNF, block structure and lexical scope.ALGOL & Structured Programming
1966The first standardFORTRAN 66.FORTRAN
1967Simula 67Where classes and inheritance begin.Object-Oriented Programming
1968Dijkstra on gotoA manifesto for structured programming.ALGOL & Structured Programming
1970PascalThe model teaching language.ALGOL & Structured Programming
1972SmalltalkMessage passing and a pure object environment.Object-Oriented Programming
1972C is createdDesigned to rewrite Unix.The C Programming Language
1975SchemeA minimalist Lisp dialect.LISP & Functional Programming
1977FORTRAN 77Structured control flow.FORTRAN
1978The K&R bookThe de facto standard.The C Programming Language
1983C++Objects enter systems programming.Object-Oriented Programming
1984Common LispA large, standardised Lisp.LISP & Functional Programming
1986The Dragon BookThe classic compiler textbook.Compilers & Optimization
1989C89Standardised by ANSI.The C Programming Language
1990Fortran 90Modules, array operations and free-form source.FORTRAN
1991Project OakDesigned for consumer electronics.Java & the JVM
1994Design PatternsThe GoF formalise experience.Object-Oriented Programming
1995JavaPortability and garbage collection.Object-Oriented Programming
1995Java is releasedWrite once, run anywhere.Java & the JVM
1996JDK 1.0The first official release.Java & the JVM
1999C99Variable-length arrays and inline functions.The C Programming Language
2000LLVMModular compiler infrastructure.Compilers & Optimization
2006HotSpot goes open sourceJIT compilation and runtime optimisation.Java & the JVM
2007ClojureA modern Lisp on the JVM.LISP & Functional Programming
2008AndroidJava reaches mobile.Java & the JVM
2022C23A modern revision.The C Programming Language

Curriculum

Courses and labs

Which university courses this domain usually maps to, and whether the practical work is a standalone project course or an in-class lab.

Standalone lab course / project

There is a project: write a compiler that turns real programs into assembly, usually in four or five stages.

Courses

Compiler DesignPrinciples of Programming Languages (elective)

Open courses

  • Stanford CS 143 Compilers
  • CMU 15-312 Foundations of Programming Languages

What the labs look like

  • Cool compiler

    Stanford CS 143: lexing, parsing, semantics and code generation, ending with a complete language

  • SysY compiler

    The Chinese national compiler contest: compile a C subset to RISC-V against an official test suite

  • PL/0 compiler

    The smallest usable compiler in Chinese textbooks; a good first project