Informal History Of Programming Ideas

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

1832 - Semen Korsakov presents his five "Intellectual engines" that use punched cards to store information. (en.wikipedia.org )

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)

1948 to 1970 - Curta Calculator

Alan Turing & Colossus

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

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 - 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.

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

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".

1990 - World Wide Web - not so much a "programming idea", but had a huge influence on the shape of programming


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



... 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 original on c2.com