CSC302 2011S, Class 26: An Abbreviated History of Programming Languages Overview: * Exercise: Dating key ideas. * An abbreviated history of programming languages. Admin: * Sorry about neglecting to get a reading to you. * Updates from Kington talk. * Reading 1 for Friday: The Story of Mel, a real programmer * Reading 2 for Friday: "The impact of software engineering research on modern progamming languages" * No Piazzza necessary! * I'll reserve a few minutes at the start of class for questions on the exam. * EC for today's Escher talk. * EC for tomorrow's CS extra by DG and RC. * EC for Friday's CS table on Watson. Some important concepts in the history of programming languages. * When were they first conceived of? * When were they first implemented? * It's okay to get it wrong. I just want estimates. Concepts + Computational devices - Conceived of: Long time ago (x2) - Implemented: Long time ago (x2), E.g., rocks (No!) abacus More than just a record keeping device? - Mechanical devices for astronomy - BCE + The general-purpose computer - Conceived of: 1940's, 1920's, 1800's Charles Babbage Differential Engine then Analytical Engine - Implemented: Early 1950's, Late 1940's ENIAC, ABC, Harvard Mark I, Cambridge ... + Punch cards - Conceived of: 1850's Late 1700's: The jacquard loom - Implemented: 1960's Used for 1890 census! + The programming language - Conceived of: Babbage engine: Lovelace's language (1800's) Turing machine: 1930's Lambda calculus: 1930's Plancalcul: 1940's in germany - Implemented: FORTRAN: Design started 1954, finished 1957 + The first implemented programming language - Conceived of: - Implemented: + Hypertext - Conceived of: "As We May Think", 1945, Atlantic Monthly, Vannevar Bush - Implemented: Paradigms + Imperative programming - Conceived of: 1954 - Implemented: 1957 [Algol early 1960's] + Functional programming - Conceived of: 1930's: Lambda Calculus; 1950's: LISP - Implemented: 1950's: LISP + Object-oriented programming - Conceived of: - Implemented: Simula-67 (guess) Smalltalk-80 (late 1970's) - Xerox PARC + Logic programming - Conceived of: - Implemented: Prolog 1972 + Parallel programming - Conceived of: 1930's - Implemented: Design Issues + Dynamic memory - Conceived of: - Implemented: + Garbage collection (automatic memory management) - Conceived of: - Implemented: + Symbolic processing - Conceived of: - Implemented: + Exceptions - Conceived of: - Implemented: + Iterators - Conceived of: - Implemented: + GUI languages - Conceived of: - Implemented: