<- back to Pixel's programming languages study page

Also have a look at the diagram of programming languages history.
Abstract data typesSimula 67
Algebraic data typesHope (giving ML)
Assignment operator overloadingC++
BNF (Backus-Naur Form)used to describe Algol 60's syntax
Block nesting with scopeAlgol 60
Chained comparisonsBCPL
ClassSimula 67
Compound statements (group statements into one)Algol 58
Continuations?? (1972)
Exception handlingPL/I
Explicit typingAlgol 58
Garbage collectionLisp
Heap allocationLisp
Higher orderAlgol 60 or maybe Lisp?
Hygienic macrosScheme R4RS
InheritanceSimula 67
Lazy evaluationISWIM (giving Haskell)
List comprehensionKRC (giving Haskell)
Multiple selection ("case" statement)Algol W
Object-oriented ProgrammingSimula 67
Operator overloadingAlgol 68
OrthogonalityAlgol 68
Parametric PolymorphismML
Pass by nameAlgol 60
Pass by valueFortran
Pass by value/resultAlgol W
Pattern matchingHope (giving ML)
Pointer datatypePL/I
ReferencesAlgol 68
Separate compilationFortran II (interest: hardware failures were very frequent => length of a program could not exceed 300/400 lines)
Stack allocationAlgol 58
Stack dynamic variablesAlgol 60
Static allocationFortran
Structures (records)Cobol
Type classesHaskell
Type inferenceML
User-defined data typesAlgol 68
Using C as portable assemblerC++ (Cfront)
Variable declaration anywhere in a blockAlgol 68
Vertical layout (Indentation to show block structure)CPL, ISWIM (giving Haskell)

This document is licensed under GFDL (GNU Free Documentation License).