| <- back to Pixel's programming languages study page | mirrors : Mandriva, SourceForge, |
| 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 |
| Chained comparisons | BCPL |
| Class | Simula 67 |
| Closure | Lisp |
| Comments | Cobol |
| Compound statements (group statements into one) | Algol 58 |
| Continuations | ?? (1972) |
| Encapsulation | |
| Exception handling | PL/I |
| Explicit typing | Algol 58 |
| Garbage collection | Lisp |
| Heap allocation | Lisp |
| Higher order | Algol 60 or maybe Lisp? |
| Hygienic macros | Scheme R4RS |
| Inheritance | Simula 67 |
| Lazy evaluation | ISWIM (giving Haskell) |
| List comprehension | KRC (giving Haskell) |
| Macros | Cobol |
| Modules | Modula-2 |
| Monads | Haskell |
| Multiple selection ("case" statement) | Algol W |
| Object-oriented Programming | Simula 67 |
| Operator overloading | Algol 68 |
| Orthogonality | Algol 68 |
| Parametric Polymorphism | ML |
| 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) |