From old CS 471 notes…
A Brief History of Programming Languages
A sparse and full graph of the ancestral chain of programming languages can be found at http://merd.sourceforge.net/pixel/language-study/diagram.html
The graphs are cached here: sparse and full [citation: the link above].
The site http://www.levenez.com/lang/ also has a history diagram and lots of links for various programming languages.
My own take on PL history
Electronic computers first replaced human computers.
Manhattan project (Los Alamos, NM), had rooms of human “computers” working out the physics calculations.
Initial computers had toggle switches which would be set to machine code bit values and then latched into memory.
Variants of improving assembly language coding (textbook, 2.2).
Then FORTRAN == “FORmula TRANslator”, because of mathematical purpose of computers.
Scientific computation is still with us, and thus so is FORTRAN. LOTS of cycles are used today in supercomputers running FORTRAN code.
Early computers were hugely expensive.
The idea of the “science” of computation started to take hold.
Textbook says one of ALGOL’s original goals was “It should be possible to use the language for the description of algorithms in publications.”
ALGOL-58, ALGOL-60, ALGOL-68. LOTS of fundamental language features and language specification ideas came out of ALGOL (e.g., EBNF).
Idea of symbolic computation, and wonderings of Artificial Intelligence, began, produced LISP early on.
LISP == LISt Processor.
Late ’50s, computers are affordable by large businesses, so need a language for business data processing. Thus COBOL was born.
COBOL == “COmmon Business Oriented Language”.
There are still COBOL programs running major commercial computations.
Around Y2K, old COBOL programmers were making a mint.
Attempt to provide a language for all applications: PL/I from IBM.
PL/I was the first “big language failure” – although it was widely used for a while.
By early 70’s, minicomputers.
Ken Thompson, Brian Kernighan, Dennis Ritchie: AT+T Bell Labs
An unused PDP-11 got them interested in making a more interactive computer platform.
Thus was born Unix.
They improved some earlier PL work (B, BCPL) into the C programming language, in order to implement Unix.
The rise of C is tied to the rise of Unix.
Unix spearheaded the “interactiveness” of computers.
Fundamentally, “interactiveness” leads to the ideas of scripting.
Unix shell commands could be “scripted”, stored in a file. Shell commands had basic selection and looping capability, and ability to create variables.
AWK brought scripting to “report writing”.
Perl combined both shell and Awk capabilities, was the first “powerful” scripting language.
U.S. Defense Department: no current language is safe and rigorous enough for military applications, so we’ll design our own.
Thus was born ADA, then next “big language failure”.
Ada, in truth, is a very nice language. Simply too big to succeed.
Textbook says “Although many people did not initially realize it, the development of a compiler for the Ada language was a difficult task”. (took four years).
Eventually the DoD dropped the requirement of Ada for all DoD software.
Lesson: most successful languages started out as a design from one, at most two, people. Committees do not design good languages.
Object oriented ideas: first appeared in Simula 67, but Smalltalk was the first language to seriously expose OO to the masses.
How to bring OO to mainstream?
At least two different attempts with C: Objective C, C++
Both enjoyed some success for a while, eventually Objective C lagged (doubtful for technical reasons; e.g., VHS/Betamax, HD-DVD/Blue-Ray)
PC’s get powerful enough to consider truly portable “real” programs, plus programmers are tired of C++: Java and the JVM.
Skipped: Pascal, Prolog, many others.