I would like to outline some recent history of the computers: from 1950 to today. What happened before the end of WWII is briefly mentioned in Computer Science for Smart People.
In case you are wondering, I am writing this as base material for a course in Computer Science that I am teaching to non-CS students (mostly coming from a design background).
How do we get from the first working computers, like ENIAC and The Manchester Small Scale Experimental Machine (aka "The Baby", grandfather of the first commercial computer, the Ferranti Mark 1) to the current market situation?
The first step was the mainframe. The problem of data processing clearly predates the computer; large masses of data about the census, shipping, banks and railways had to be handled, summarized and stored.
The first technology to do that was Herman Hollerith]'s: his Hollerith Tabulation System employed punch cards that were processed by piano-shaped collating and sorting mechanical devices. Data was recorded by punching the cards, and it was read by pins: this innovation was used first in the 1890 US census.
It is interesting to observe that Hollerith's company eventually became IBM.
The digital programmable computer, as soon as the technology was mature enough, found itself applied to the same class of problems. The Generation Zero machines (in some cases still a state secret) like the ENIAC, the EDVAC and the EDSAC were research/scientific machines.
The ENIAC in particular was "programmed" applying patch cords to a patch panel, thus connecting directly the various units (adders, registers, shifters...) of the machine.
These units, at the bit level of course, were built out of logic gates.
The EDSAC, on the other hand, had a stored program.
But First Generation (1950-1959) machines were commercial, valve-based systems. These machines, built mostly by IBM and Remington-Rand, started having the embryo of an Operating System and the very first programming languages (FORTRAN and LISP come from this generation; FORTRAN (John Backus, 1957) is still convinced that it is reading punch cards).
Both languages are still in use.
At this time there was a debate over whether programming languages were worth the computing effort. It is clear that ultimate efficiency can be reached only with machine language; on the other hand, the complexities of crafting large systems in machine language are terrifying.
In the end, computer languages won, but for some specific applications we still use machine language.
It is good to remember that this generation of computers used discrete components, that's to say, to build for example a NAND gate the manufacturer had to physically wire valves and resistors on a circuit board. This made for rather bulky machines.
The pioneers of this generation were, among the others, Mauchly and Eckert.
Birth of a new machine
In the Second generation (conventionally 1959-65) the computers use transistors (semiconductor devices invented some years before). The transistor is cheaper than the valve, it is smaller and it can use less power.
In 1961 Grace Hopper had an important role in developing COBOL, the first business oriented programming language; Ken Olsen (founder of DEC) built the PDP-I, the first minicomputer (notice: not the first microcomputer; it was mini in comparison to a mainframe. BASIC was developed in 1965 at Dartmouth.
At this point, IBM (AKA Big Blue) had a brilliant marketing idea; they developed an articulated product line including small and big machines, more or less compatible with each other.
This, while reducing the pace of technological evolution, made for
- compatible periphals: for example, printers could be used across the whole product line
- reduced software development costs: it many machines share a common architecture and operating system, it is much cheaper to produce software that runs on all of them
- upgrade path: a company whose business grew could buy a bigger IBM system, and still retain compatibility
These three reasons for compatible product lines still hold true today. It is also still true that they reduce the speed of evolution. IBM used a "lock in" strategy; a company that had put its critical data on an IBM mainframe would find it very difficult to export them to any other form. This strategy is still very much in use in the computer market; lack of open standards and well-documented protocols is a consequence of certain market strategies.
In 1964 IBM launches the System/360 (notice that System/360 emulators are still in use today. People still depend on code that runs on a computer that does not exist any more).
Where did this leave the others? Some companies started producing compatible products, others squeezed themselves into market niches (like CDC with supercomputers), others again tried to play the IBM game but ultimately failed.
In 1964 IBM produced SABRE, the first airline reservation system (initially for one airline company, later extended to practically all of them); the system is still in use.
They are among us
In the Third generation (1965-1971) computers start getting into widespread use; the ARPANET, a US military project that would later become the Internet, started in 1969.
Perhaps more importantly, in 1970 Intel developed the 4004, the first microprocessor. Up to this point, CPUs were built on cards, employing various ICs; the single-chip 4004 allowed for a more compact design and for great future improvements in performance.
In 1971 Nicklaus Wirth develops PASCAL, a programming language initially intended for educatio but that unfortunately had a much wider application.
In 1971 also the C programming language saw the light (in 1978 it became K and R's C), and it became intimately connected with the slightly older UNIX OS.
Fourth generation (1971 to the present) is the popularity phase of the computer. It is also a time where technological innovation slows down progressively. The 8" floppy disk was introduced in 1971 (before that, removable memory was disk packs, tapes or punch cards.
In 1975 the first microcomputer, the Altair 8800 is released. Seymour Cray in 1976 develops the Cray-I supercomputer, and one year later, in 1977 the Apple II is designed and built - the Apple II product line lasted about 15 years.
These are also the years of the first cabinet videogame (Pong, built by Atari in 1972), the first sealed small hard disk, the IBM Winchester, the birth of the Ethernet standard, the seminal Alto computer system, the Nintendo Donkey Kong game, Visicalc and Wordstar.
1980 is the beginning of the Microsoft explosion, when the company gets the IBM contract for building the operating system for the PC
The birth of the Apple II (and the PC later) marks the end of the "hobby" phase of small scale computing, when people used these things because they were cool, and heralds the transition to the era of "useful" computers that a private person could afford.
The events after 1980 show little in the way of real technological innovation; the introduction of object oriented programming and analysis, perceptual compression, optical storage and the Macintosh hardware technology are perhaps some of the few interesting events (from a Computer Science point of view).
Other remarkable phenomena, like the Internet, the Windows operating system in its various incarnation, the MacOS and Linux operating systems are all interesting in terms of culture (diffusion and vulgarization of formerly academic concepts) and of marketing (Windows re-engineers the Macintosh operating system on then-inferior hardware).
Some key concepts:
- operating system (or OS): a collection of functions and a provider of services to other programs. For example, a program that wants to open a window or play a note does not do it directly; it calls the OS functions.
- valve: a vacuum device that looks like a small light bulb and is able to work as an amplifier or as a switch. Essential for the construction of logic circuits.
- transistor: a semiconducting device that can substitute the valve in many applications.
- logic gate: an arrangement of electrical circuits that implements on of the binary operations (OR, AND, XOR, NAND).
- protocol: a strict definition of an interaction or of a set of interactions between two or more entities. For example, introduction of a person to another follows a rather precise, culturally defined, protocol. In the same fashion, when two computers exchange information, the interaction is defined in a protocol. Lack of clearly defined protocols leads to incompatibilities.
The rest of the class
- Questions about the previous lesson (Computer Science for Smart People)
Summing two binary numbers (no time, wonder if people can deal with mucho bit flipping)
- Additional material on Design by Numbers; elimination of any feeling of fear and anguish about programming. The computer is your friend. 10 ways to eliminate bugs.
- break: I have a cup of coffee and the students scutter madly to prepare their machines for showing the class their first assignment (write a 20 line program in Design by Numbers that shows an interesting display).
- Assignment review: some rather cool stuff was written. Some small issues in displaying it, mostly to do with lesson flow, connecting machines to the video projector and other nugae.
- Provocation time: tell me about the 5 specific technologies that influenced more the shape of the current world. made into an assignment
- We will prove together a theorem: Prime numbers are infinite. devastating; I had to spend a lot of time explaining what a prime number is. Must stop using mathematical examples out of reflex
- Assignment: write a program that visualizes the distribution of prime numbers. For bonus points (entirely fictional), make the output beautiful. One possible way is the Sieve of Erathostenes.
- Assignment (alternate): write a program that draws a mouse trail in Design by Numbers working area. Tip: you will probably have to use the <array> facility.
Assignment: Let us suppose that... fuel cells really work. Implications, products, consequences. not done: maybe too specific: will reappear in class
if time allows: SMTP, a nice little protocol that delivers my mail (RFC 821 http://www.faqs.org/rfcs/rfc821.html.
relevant, but I don't know why: http://spaceflight.nasa.gov/shuttle/reference/shutref/verboseindex.html
relevant, and I do know why: the evolution of Microsoft Windows from the utterly useless ui tweaks perspective in the beginning was the command line
Computer Science for Smart People <--- O ---> Bits and Pieces