WelcomeVisitors stated circa 1996 that the Wiki pages hosted by WardCunningham are part of the PortlandPatternRepository 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 CollectiveCodeOwnership as taught in ExtremeProgramming: if you find a problem it belongs to you to fix it, not to blame others for it (or otherwise it would become WikiChaos). 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 - http://en.wikipedia.org/wiki/Pāṇini - Panini–Backus Form
- c. 87BC - Antikythera mechanism - http://en.wikipedia.org/wiki/Antikythera_mechanism
- 1703 - 'Explanation of Binary Arithmetic' - GottfriedWilhelmLeibniz
- JosephMarieJacquard - inventor of a loom using punched cards
- 1822 - The DifferenceEngine - CharlesBabbage
- 1832 - Semen Korsakov presents his five "Intellectual engines" that use punched cards to store information. (http://en.wikipedia.org/wiki/Semen_Korsakov)
- 1837 - The AnalyticalEngine - CharlesBabbage
- ProgrammingLanguage - AugustaAdaByron
- 1879 (Begriffschrift) Formalisation of mathematical logic - GottlobFrege?
- 1928 - IBM invents the plug-board report-writer using a kind of "visual" logic (see EarlyProgramming, GraphicalProgrammingLanguage)
- 1930s DifferentialAnalyzer? - VannevarBush
- 1936 - The TuringMachine - AlanTuring
- 1939 - AtanasoffBerryComputer
- 1948 to 1970 - CurtaCalculator
- 194* - DigitalComputer? -
- StoredProgramComputer? - Some fight about that
- 1951 - FirstCommercialComputer
- 1951 - MarkImachine
- 1950s - IBM 7030 IbmStretch
- AssemblyLanguage - GraceHopper
- DesignByCommittee - bad ideas are also ideas
- ProgrammingLanguage
- 1958 - LispLanguage -- recursion, tree structures, linked lists, MetaProgramming, FunctionalProgramming
- 1959 - CobolLanguage -- record structures, EnglishLikeFeatures
- 195? - FortranLanguage -- separate compilation, multi-platform compiler, math-like notation
- LogicInProgramming - Floyd, Knuth, Hoare, et al
- 1964 - DartmouthBasic - Interactive programming, easy-to-learn "universal" line-number-based editor
- 1960s - Algol 60: "A great improvement over its successors". Part of the AlgolLanguage family.
- Influenced procedural languages for the next several decades (for good or bad), including the C family.
- Syntax and BackusNaurForm
- 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 -- BoehmAndJaccopini?
- Dedicated database software (pre-relational)
- 1962 - AplLanguage - The acronym APL stands for the humbly named "A Programming Language". It can be characterised as an ArrayOrientedLanguage. It sparked interest in, and perhaps invented CollectionOrientedProgramming. APL spawned a family of languages over the years which are often used in financial applications.
- 1968 - ForthLanguage (ThreadedInterpreter? concept) -- ChuckMoore
- 1968 - EwDijkstra publishes "goto statement considered harmful" (see http://www.acm.org/classics/oct95/)
- ProgrammingInLogic? - See PrologLanguage
- ComputerScience - a theoretical framework
- ObjectOrientedProgramming (1967) - KristenNygaard, OleJohanDahl
- 1969 - StandardGeneralizedMarkupLanguage - Forerunner of HTML and XML.
- 1969-71 - FlowBasedProgramming - PaulMorrison
- 1970 - DrCodd unveils the RelationalModel for database management, a database model based on SetTheory and PredicateLogic to advance persistence and CollectionOrientedProgramming.
- 197* - EarlyHistoryOfSmalltalk - Advanced the practice of "dynamic" object-orientation
- 1977 - ActorsModel - CarlHewitt, HenryBaker, GulAgha
- 1979 - ExBase (dBASE) - The first well-selling database and database language for microcomputers. Also unintentionally brought TableOrientedProgramming, ControlTables, and code-in-tables to the "masses"[1].
- 1979 - VisiCalc - Sparked the mass sale of microcomputers to businesses of all sizes, kicking off the "PC revolution" that eventually led to the WinTel "empire".
- 1986 - OopslaHistory
- 1987 - HistoryOfPatterns, CrcCard
- 1990 - WorldWideWeb - not so much a "programming idea", but had a huge influence on the shape of programming
- 1995 - SoftwareDesignPatterns
- 1997 - UnifiedModelingLanguage, JavaUnit
- 1998 - HistoryOfExtremeProgramming, ExtremeProgrammingTimeline
- 1999 - HistoryOfRefactoring
Some other ideas
Idea: A programming language based on queues of single bits and logical operations... sounds like a PostMachine?
Parallel thoughts:
Much discussion moved to InformalHistoryDiscussion.
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 WikiWiki is to capture these insights. See PortlandPatternRepository and PatternDefinition.
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 ;-) -- DannyAyers
What about the InformalFutureOfProgrammingIdeas?
... it would be nice to add the HaltingProblem
... 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 CeeLanguage 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 ItsTimeToDumpCeeSyntax 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 TableOrientedProgramming 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: MainstreamInfluenceOfFunctionalLanguages, SequentialLanguage, ProgrammingParadigm, NextBigThing, PeopleIndex, ProjectIndex, PatternIndex, WikiPagesAboutWhatArePatterns, CategoryPatternsGroup, EvidenceEras
CategoryWiki CategoryHistory