Programming Language Concept History

General: Main page  Overview  Concept History  Alphabetical List
Timelines: Timeline #1  Timeline #2  Timeline #3
Languages: C/C++  Java  Visual Studio
Abstract data types Simula 67
Assignment operator overloading C++
BNF (Backus-Naur Form) used to describe Algol 60's syntax
Block nesting with scope Algol 60
Class Simula 67
Closure Lisp
Comments Cobol
Compound statements (group statements into one) Algol 58
Continuations ?? (1972)
Exception handling PL/I
Explicit typing Algol 58
Garbage collection Lisp
Heap allocation Lisp
Higher order Algol 60 or maybe Lisp?
Inheritance Simula 67
Lazy evaluation ISWIM (giving Haskell)
List comprehension KRC (giving Haskell)
Macros Cobol
Modules Modula-2
Monads Haskell
Operator overloading Algol 68
Orthogonality Algol 68
Pass by name Algol 60
Pass by value Fortran
Pass by value/result Algol W
Pattern matching Hope (giving ML)
Pointer datatype PL/I
References Algol 68
Separate compilation Fortran II (interest: hardware failures were very frequent => length of a program could not exceed 300/400 lines)
Stack allocation Algol 58
Stack dynamic variables Algol 60
Static allocation Fortran
Structures (records) Cobol
Type classes Haskell
Type inference ML
User-defined data types Algol 68
Using C as portable assembler C++ (Cfront)
Variable declaration anywhere in a block Algol 68
Vertical layout (Indentation to show block structure) ISWIM (giving Haskell)
multiple selection (`case' statement) Algol W

Note: This page is modified from Programming Language Concept History.