Fundamentals of Software Development 1Slide 1 Dennis Ritchie and Brian Kernighan What’s C, exactly?What’s C, exactly? A portable language developed by Kernighan and Ritchie in the 1970’s while they were at Bell Labs.A portable language developed by Kernighan and Ritchie in the 1970’s while they were at Bell Labs. “Portable” here means – The same source programs will run on different computers. They understand “C.”“Portable” here means – The same source programs will run on different computers. They understand “C.” This was a big advance over machine-specific languages.This was a big advance over machine-specific languages. Today, Java and other languages also have this capability.Today, Java and other languages also have this capability. Ritchie and Ken Thompson invented Unix at the same time! …Ritchie and Ken Thompson invented Unix at the same time! … Co-inventors of the C programming language Left: Brian Kernighan in the 1990’s, as the department head, Computing Structures Research Department at Bell Labs. Right: Dennis Ritchie, while Head of the Systems Software Research Department there. Kernighan and Ritchie are still at Bell Labs – See labs.com/cm/cs/who/bwk/ and labs.com/cm/cs/who/bwk/
Fundamentals of Software Development 1Slide 2 Dennis Ritchie and Brian Kernighan… and Ken Thompson So what’s Unix?So what’s Unix? Unix was the first operating system (OS) designed to be portable. So, this idea and the portable C language idea went together.Unix was the first operating system (OS) designed to be portable. So, this idea and the portable C language idea went together. What’s an operating system? It is the basic software on which applications run – applications like JavaEyes and WordGames…What’s an operating system? It is the basic software on which applications run – applications like JavaEyes and WordGames… –The OS talks to the hardware. –It decides which programs to run, and when. –It manages all the resources applications run, like memory and processing time and disks and who’s currently printing on the printer. Making the same OS work on many machines – a great trick!Making the same OS work on many machines – a great trick! And here’s Unix co-inventor Ken Thompson, who retired from Lucent in For his bio, see labs.com/history/ unix/thompsonbio.htmlwww.bell- labs.com/history/ unix/thompsonbio.html
Fundamentals of Software Development 1Slide 3 Dennis Ritchie and Brian Kernighan For the curious! Here’s how it happened – A short history, showing how messy things-no-famous really were. You have to read between the technical details, ok?For the curious! Here’s how it happened – A short history, showing how messy things-no-famous really were. You have to read between the technical details, ok? In 1969 Ken Thompson and Dennis Ritchie began a project on a "little-used PDP-7 in a corner" that was to become Unix. The name "Unix" was intended as a pun on Multics (and was written "Unics" at first -- UNiplexed Information and Computing System). For the first 10 years, their development was essentially confined to Bell Labs. These initial versions were labeled "Version n" or "Nth Edition" (of the manuals), and were for DEC's PDP-11 (16 bits) and later VAXen (32 bits). Some examples were: V1 (1971): 1st Unix version, in assembler on a PDP-11/20. Included a file system and the commands fork(), roff, and ed. It was used as a text processing tool for preparation of patents. Pipe(), for which Unix is now famous, appeared first in V2! V4 (1973): Rewritten in C, Kernighan’s brainchild, in probably the most significant event in this OS's history: It meant Unix could be ported to a new hardware in months, and changes would be easy. The C language was originally designed for the Unix operating system, and hence there has always been a strong synergy between C and Unix. V6 (1975): First version of Unix widely available outside Bell Labs (esp. in universities). This was also the start of Unix diversity and popularity. 1.xBSD (PDP-11) was derived from this version. J. Lions published "A commentary on the Unix Operating System" based on V6. V7 (1979): For many, this is the "last true Unix", an "improvement over all preceding and following Unices" [according to Bourne]. It included full K&R C, uucp, Bourne shell. V7 was ported to the VAX as 32V. The V7 kernel was a mere 40 Kbytes! There’s more Co-inventors of the C programming language
Fundamentals of Software Development 1Slide 4 Dennis Ritchie and Brian Kernighan How it happened – More of the short history:How it happened – More of the short history: These Vn versions were developed by the Computer Research Group (CRG) of Bell Labs. By this time, another group, the Unix System Group (USG), was responsible for support. A third group at Bell Labs was also involved in Unix development, the Programmer's WorkBench (PWB), to which we owe, for example, sccs, named pipes and other important ideas. Both groups were merged into Unix System Development Lab in Work on Unix continued at Bell Labs in the 1980s. The V series was further developed by the CRG (Stroustrup mentions V10 in the 2nd edition of his book on C++), but we don't seem to hear much about this otherwise. The company now responsible for Unix (System V) is called Unix System Laboratories (USL) and is majority-owned by AT&T. Another variant of Unix was CB Unix (Columbus Unix) from the Columbus branch of Bell Labs, responsible of Operations Support Systems. Its main contribution was parts of SV IPC. Much also happened to Unix outside AT&T, especially at Berkeley (where the other major flavor comes from). Vendors (esp. of workstations) also contributed much (e.g. Sun's NFS). Thompson, Ritchie, and Brian Kernighan, the prime movers of Unix and C, still worked for Bell Labs (then a part of Lucent Technologies) for decades after it all started. Among other projects, Thompson and Ritchie were co-inventors of Plan-9, an operating system for devices and other small hardware released by Lucent. Kernighan played a role in creating Lucent’s Inferno web-language. See the web links to their bios. All this history preceded Linux, of course! Co-inventors of the C programming language