Welcome Visitors stated circa 1996 that the Wiki pages hosted by Ward Cunningham are part of the Portland Pattern Repository and contain "an incomplete and casually written history of programming ideas". I'm suggesting that this page is used to highlight areas in which any Wiki reader feels that the current informally written history is either incomplete or unbalanced.
The overall philosophy of Wiki is the same as that of Collective Code Ownership as taught in Extreme Programming: if you find a problem it belongs to you to fix it, not to blame others for it (or otherwise it would become Wiki Chaos). Nevertheless some areas aren't so easy to fix, because of the time or expertise required to complete the job.
If you detect any areas of lack below, please note them in an uncritical and undemanding way, and as succinctly as possible. You may still need to be part of the solution.
Programming Ideas Timelime
Observation, Exploration and Discovery
Geometry, Logic, Algebra, Trigonometry
Patterns and Organization
Arrangements, Structures and Algorithms
4th century BC - Ashtadhyayi of Pāṇini - en.wikipedia.org - Panini–Backus Form
c. 87BC - Antikythera mechanism - en.wikipedia.org
1703 - 'Explanation of Binary Arithmetic' - Gottfried Wilhelm Leibniz
Joseph Marie Jacquard - inventor of a loom using punched cards
1822 - The Difference Engine - Charles Babbage
1832 - Semen Korsakov presents his five "Intellectual engines" that use punched cards to store information. (en.wikipedia.org )
1837 - The Analytical Engine - Charles Babbage
1879 (Begriffschrift) Formalisation of mathematical logic - Gottlob Frege
1928 - IBM invents the plug-board report-writer using a kind of "visual" logic (see Early Programming, Graphical Programming Language)
1930s Differential Analyzer - Vannevar Bush
1936 - The Turing Machine - Alan Turing
1939 - Atanasoff Berry Computer
1948 to 1970 - Curta Calculator
194* - Digital Computer -
Alan Turing & Colossus
Manchester Baby (21 June 1948) www.computer50.org
Cambridge Edsac (6 May 1949) www.cl.cam.ac.uk (see the simulator at On Line Computer Museum)
ENIAC
Stored Program Computer - Some fight about that
1951 - First Commercial Computer
1951 - Mark Imachine
1950s - IBM 7030 Ibm Stretch
Design By Committee - bad ideas are also ideas
1958 - Lisp Language -- recursion, tree structures, linked lists, Meta Programming, Functional Programming
1959 - Cobol Language -- record structures, English Like Features
195? - Fortran Language -- separate compilation, multi-platform compiler, math-like notation
Logic In Programming - Floyd, Knuth, Hoare, et al
1964 - Dartmouth Basic - Interactive programming, easy-to-learn "universal" line-number-based editor
1960s - Algol 60: "A great improvement over its successors". Part of the Algol Language family.
Influenced procedural languages for the next several decades (for good or bad), including the C family.
Syntax and Backus Naur Form
Block-structured programming, begin-end bracketing
Call by reference, call by value
First compiler written in the language it compiles (in boot-strap fashion)
Proof that Algol structures can replace all gotos -- Boehm And Jaccopini
Dedicated database software (pre-relational)
1962 - Apl Language - The acronym APL stands for the humbly named "A Programming Language". It can be characterised as an Array Oriented Language. It sparked interest in, and perhaps invented Collection Oriented Programming. APL spawned a family of languages over the years which are often used in financial applications.
1968 - Forth Language (Threaded Interpreter concept) -- Chuck Moore
1968 - Ew Dijkstra publishes "goto statement considered harmful" (see www.acm.org )
Followed in 1973 by "Global Variable Found Harmful" (Wulf and Shaw)(See Global Variables Are Bad).
Computer Science - a theoretical framework
Np Complete - what is 'practically' computable
Big Oh Notation (Algorithmic Complexity) - what makes one algorithm 'faster' than another
Simula Language, Simula67 - Often considered the first "truly" object-oriented programming language
1969 - Standard Generalized Markup Language - Forerunner of HTML and XML.
1969-71 - Flow Based Programming - Paul Morrison
1970 - Dr Codd unveils the Relational Model for database management, a database model based on Set Theory and Predicate Logic to advance persistence and Collection Oriented Programming.
197* - Early History Of Smalltalk - Advanced the practice of "dynamic" object-orientation
1977 - Actors Model - Carl Hewitt, Henry Baker, Gul Agha
1979 - Ex Base (dBASE) - The first well-selling database and database language for microcomputers. Also unintentionally brought Table Oriented Programming, Control Tables, and code-in-tables to the "masses"[1].
1979 - Visi Calc - Sparked the mass sale of microcomputers to businesses of all sizes, kicking off the "PC revolution" that eventually led to the Win Tel "empire".
1986 - Oopsla History
1987 - History Of Patterns, Crc Card
1990 - World Wide Web - not so much a "programming idea", but had a huge influence on the shape of programming
1995 - Software Design Patterns
1997 - Unified Modeling Language, Java Unit
1999 - History Of Refactoring
Some other ideas
Idea: A programming language based on queues of single bits and logical operations... sounds like a Post Machine
Parallel thoughts:
Much discussion moved to Informal History Discussion.
I think it's important to capture this type of anecdotal history because many tricks and ideas which are broadly useful would otherwise get lost in the mists.
You've come to the right place! One of the purposes of Wiki Wiki is to capture these insights. See Portland Pattern Repository and Pattern Definition.
Just a thought - the abacus surely deserves a place here somewhere. Ok, so it's only been used as a calculator, but that's just a result of its programming ;-) -- Danny Ayers
What about the Informal Future Of Programming Ideas?
... it would be nice to add the Halting Problem
... the "diff" algorithm and version control
... and stuff about communicating between computers: formats such as ASCII, Unicode, HTML, etc.;
... and transfer protocols such as KERMIT, XMODEM, TCP/IP, HTTP, etc.
... and distributed algorithms: RPC ... distributed version control
I don't see Cee Language in the list... That's a valuable reference point.
It's not historical from an "idea" perspective in my opinion. It became a de-facto standard/style that has indeed influenced existing languages, but it could be argued it's just a QWERTY-like happenstance. There are very few "new" features in C. One could argue it was a well-chosen combination and packaging of existing features, but that may not be good enough to qualify. (Some argue Its Time To Dump Cee Syntax and don't feel any strong attachment to it.)
Informal history of programming languages (sort of).
Footnotes:
[1] The importance of this is disputed by same. It failed to make a "well documented" trail of influence. However, that's not the same as not leaving a trail or not making an influence. If some written evidence is needed for the influence of Table Oriented Programming ideas and proponents, a citation can be found in the footnote reference on page 1039 in O'reilly's "Oracle PL/SQL Programming", 4th ed., by Steven Feuerstein, 2005, ISBN 978-0-596-00977-9. Note that OOP composition is also hierarchical, so the reference to hierarchies is necessarily not just about inheritance.
See also: Mainstream Influence Of Functional Languages, Sequential Language, Programming Paradigm, Next Big Thing, People Index, Project Index, Pattern Index, Wiki Pages About What Are Patterns, Category Patterns Group, Evidence Eras
See original on c2.com