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
- c. 87BC - Antikythera mechanism - http://en.wikipedia.org/wiki/Antikythera_mechanism
- JosephMarieJacquard - inventor of a loom using punched cards
- 1822 - The DifferenceEngine - CharlesBabbage
- 1837 - The AnalyticalEngine - CharlesBabbage
- ProgrammingLanguage - AugustaAdaByron
- 1879 (Begriffschrift) Formalisation of mathematical logic - GottlobFrege?
- 1928 - IBM invents the plug-board report-writer (see EarlyProgramming)
- 1930s DifferentialAnalyzer? - VannevarBush
- 1936 - The TuringMachine - AlanTuring
- 1939 - AtanasoffBerryComputer
- 1948 to 1970 - CurtaCalculator
- 194* - DigitalComputer? -
- Visual logic flow using "plug boards" (see EarlyProgramming)
- 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
- 1959 - CobolLanguage -- record structures
- 195? - FortranLanguage -- separate compilation
- LogicInProgramming - Floyd, Knuth, Hoare, et al
- 1964 - DartmouthBasic
- 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)
- 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
- 1969-71 - FlowBasedProgramming - PaulMorrison
- 1970 - DrCodd unveils the RelationalModel for database management, a database model based on SetTheory and PredicateLogic?.
- 197* - EarlyHistoryOfSmalltalk
- 1977 - ActorsModel - CarlHewitt, HenryBaker, GulAgha
- 1986 - OopslaHistory
- 1987 - HistoryOfPatterns, CrcCard
- 1995 - SoftwareDesignPatterns
- 1997 - UnifiedModellingLanguage, 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
Informal history of programming languages (sort of).
See also:
MainstreamInfluenceOfFunctionalLanguages,
SequentialLanguage,
ProgrammingParadigm,
NextBigThing
CategoryWiki CategoryHistory