Long ago it became clear that in order to create more complex programs, we needed to shield programmers from the complexity of the hardware. 
In any discipline, it’s interesting to see where we’ve been to get an idea of where we might be heading. These days we hear a lot of things about cloud computing, browsers as “operating systems”, and web2.0; In order to setup some future articles (similar to what I am doing with self organization), I am going to write a bit about where operating systems have been, and then what the key principles of operating systems are — and then in future articles how this relates to evolution of the web. But first, let’s cover a little background.
The first era of the digital computer was in the time of Charles Babbage (1792 - 1871), a computer that never got built completely. This computer was largely conceptual and never got off of the drawing board, so to speak. Needles to say, it was based around the basics of computation and had no operating system to speak of. However, later on an operational difference engine was constructed from Babbage’s original plans and the London Science Museum has parts of Babbage’s uncompleted mechanisms on display.
The next era of computing I want to look at is the era of “punch cards”. A punch card (also known as a Hollerith card or IBM card) is a paper card that holds digital information encoded as holes or the absence of a hole. Punch cards, now obsolete as a medium, were widely used throughput the 19th century as control mechanisms for textile looms and certain musical instruments. In the 20th century punch cards were used as unit record machines for input, processing, and data storage. Punch cards were also used as the primary input medium for early digital computers for programs and data.
After punch cards, we see the first signs of the evolution of operating systems with vaccum tubes and plug boards (1945 - 1955) . These operating systems were based a lot on intense technology developments from WWII. I’ve always viewed WWII as a major driver in advancing the state of computers in general as so much intensive research was poured into the subject in such a short period of time. Aspects of this era of computing include:
- Vacuum tubes and plugboards
- Absolute machine language
- No programming languages, no assembly
- Burned out vacuum tubes were more troublesome than software bugs
- Reliability an issue
The second generation (1955 - 1965)  was based around the development of the transistor and batch systems. Properties included
- These systems were more reliable and could be manufactured for mass production
- Clear separation between designer, builder, operator, programmer, and maintenance
- Generally only large institutions could afford the multi-million dollar price tag
- Code was first written in FORTRAN or Assembly, then punched in on cards
- Mostly used for scientific and engineering calculations, such as solving partial differential equations
- Typical operating systems in these times were Fortran Monitor System and IBSYS
The third generation (1965 - 1980)  was based around integrated circuits and multiprogramming. The IBM System/360 was a major part of this epoch that met the needs of a wide variety of customer. Properties of this generation included
- The evolution of families of machines that would run the same code
- First use of small scale integrated circuits in the IBM Sys360
- Programming was still very difficult
- Partitioning of memory for multiple concurrent jobs to be processed (multiprogramming)
- Concept of time sharing and terminals
- Development of the PDP-1 by DEC
- Dennis Ritchie rewrites UNIX in a high level language called “C”
The fourth generation (1980 - 1990)  was based around personal computers, most notable the Apple IIe, the Mac, and MSDos. Notable things about this period include
- Individuals could now afford home computers such as the Apple IIe 
- Advent of the GUI in devices such as the Mac 
- Widespread growth of software for personal computers
- Two operating systems have dominated since then, UNIX and MSDOS (plus their derivatives) 
As I mentioned above, I wrote up this review because I want to take a look at where we’ve been and see where we might be headed on our evolutionary arc of computing. Some themes I want to examine, in conjunction with themes on linked data, discovery, and self organization, are:
- What exactly makes up an operating system, and how have those properties shifted over time?
- What exactly is this so called “Cloud” computing?
- Why do some people keep saying the browser is an operating system? (hint: its not)
- How does our computing experience shift in the age of HTTP, linked data, and distributed identity?
- What can the biological world tell us about how to design systems of the future?
I think we can find some interesting trends along these arcs, and I believe we’ll see some patterns revisted.
 Andrew Tanenbaum, Operating Systems: Design and Implementation, Prentice Hall, 1987.
 M. Bach, Design of the Unix Operating System , Prentice Hall, 1986.
 A. Hertzfeld, Revolution in The Valley: The Insanely Great Story of How the Mac Was Made, O’Reilly Media, Inc., 2004.