Linux and the Unix Philosophy
1.2 Developing Unix
People marvel at the portability of Unix, but it wasn't always portable. Thompson originally coded it in assembly language. In 1972 he rewrote it in a portable language called B as it became evident that he might want to take advantage of new hardware as it became available. Another member of AT&T's staff at Bell Laboratories, Dennis Ritchie, made extensive modifications to B in 1973, evolving it into the C language loved and despised today by programmers the world over.
Again, Thompson had set a precedent that was later adopted by Unix developers: Someone whose back is against the wall often writes great programs. When an application must be written, and (1) it must be done to meet a practical need, (2) there aren't any "experts" around who would know how to write it, and (3) there is no time to do it "right," the odds are very good that an outstanding piece of software will be written. In Thompson's case, he needed an operating system written in a portable language because he had to move his programs from one hardware architecture to another. No selfdescribed portable operating system experts could be found. And he certainly didn't have time to do it "right."
Ken Thompson played a limited role in the development of the overall Unix philosophy, however. Although he made significant design contributions in the areas of file system structure, pipes, the I/O subsystem, and portability, much of the Unix philosophy came about as a result of many peoples' efforts. Each person who worked with Unix in its early days helped to shape it according to his or her area of expertise. The following lists some contributors and their primary contributions:
Contributors | Contributions |
---|---|
Alfred Aho | Text scanning, parsing, sorting |
Eric Allman | Electronic mail |
Kenneth Arnold | Screen updating |
Stephen Bourne | Bourne shell command interpreter |
Lorinda Cherry | Interactive calculator |
Steven Feldman | Computer-aided software engineering |
Stephen Johnson | Compiler design tools |
William Joy | Text editing, C-like command language |
Brian Kernighan | Regular expressions, programming principles, typesetting, computer-aided instruction |
Michael Lesk | High-level text formatting, dial-up networking |
John Mashey | Command interpreter |
Robert Morris | Desk calculator |
D. A. Nowitz | Dial-up networking |
Joseph Ossanna | Text formatting language |
Dennis Ritchie | C programming language |
Larry Wall | Patch utility, Perl command language, rn network news reader |
Peter Weinberger | Text scanning |
Although the above individuals are the earliest and most recognizable participants in the Unix phenomenon, the people who developed the Unix approach to computing eventually numbered in the thousands. Virtually every published paper on a major Unix component lists more than a handful of contributors who helped make it happen. These contributors formed the Unix philosophy as it is understood and propagated today.