A Brief Historical Survey

C.P. Snow's 1959 book The Two Cultures and the Scientific Revolution he bemoans the failure of the British and American education systems for perpetrating the culture gap between scientists and "literary" intellectuals.

My thesis is that there are two broad subcultures in Computer Science: engineers and intellectuals. "Engineers" want to be able to access and control the hardware, while "intellectuals" want the hardware to be hidden away behind consistent layers of abstraction. Languages like FORTRAN, Ada, C, and C++ come from the engineering tradition, while languages like Algol 60, LISP, Prolog, Hakell, and Java spring from the intellectual tradition.

Number Crunching versus Symbol Processing: FORTRAN and LISP

The FORTRAN group was begun at IBM in 1954 by John Backus. The goal was to simplify the arduous task of programming the IBM 701. The FORTRAN language, which appeared in 1957, is still the preferred language to perform scientific calculations that involve intensive numerical computations.

Soon after the first commercial computers appeared people began asking if computers could exhibit human-like intelligence. Could computers solve problems they weren't specifically programmed to solve? Thus began the field of Artificial Intelligence (AI).

Psychological experiments revealed that humans were "symbol pushers" rather that "number crunchers". Given an algebra problem such as compute p(5) where

p(x) = x (3x + 2x - 5) + 1

most humans will try to simplify p(x) before plugging in 5 for x. For example, getting rid of parenthesis using distributivity and collecting like terms transforms p(x) into:

p(x) = 5x^2 - 5x + 1

From here it's easy to compute p(5) = 51. Operations like "collect like terms," "cancellation," and "get rid of parenthesis by distributivity" are examples of symbol manipulations. They can be done without actually doing any numeric computations.

It was clear to John McCarthy that if AI was to get off the ground, the programmers needed a language that allowed them to simply express symbol manipulations like the ones mentioned above. AI Programmers needed a language that disguised the symbol-crunching nature of the underlying computer rather than feature it. This was the beginning of the LISP language, which today is still the preferred language for AI applications.

The IBM 360 versus the PDP-7: UNIX and C

After the collapse of the Multics Project (GE, Bell Labs, and MIT), Ken Thompson (an ex-Berkeley radical) and Dennis Ritchie (an ex-Harvard preppie) decided to develop a scaled-down operating system in their spare time at Bell Labs. The original target machine for UNIX was the soon-to-be-popular PDP mini-computer. One of the innovations of the project was Ritchie's creation of the C programming language, which not only served as the development language for UNIX, but later served as one of the tools that came bundled with UNIX. For a relatively small cost, a university Computer Science department could own a PDP-11 with UNIX-- which was free and supported time sharing-- and C, which came with UNIX.

Programming for Students: BASIC and Scheme

Programming for Professors: Prolog, Smalltalk, Haskell

Structured Programming: Algol 60, Pascal

Algol 60: The programming language equivalent of Latin

Pascal

Niklaus Wirth, Dijkstra

Programs as Virtual Worlds: Simula 67, C++, Java

C++: Down with Ideologues!

Bjarne Stroustrup equates ideologues like Marx and Pound, who insist that the world dogmatically follow their particular road to "utopia", to language developers who insist that programmers dogmatically follow their particular road to "good programming".

Java: Ideologues repair C++

"Behind the Green Door ..." a famous porno film in the 1970s (Trivial Pursuit: why was it famous?), was also the title of the 1991 white paper that foresaw the rise of programmable consumer electronics (TVs, stereos, VCRs, etc.) and the need for a programming language (called Green) that could run on small, self-contained virtual machines embedded in these devices.

James Gosling was the leader of the Green project. In 1994 Green became Java and the vision was that Java should become a Web programming language. This meant the language had to be self contained and very secure.