In descending order, the greatest software ever written is:
12. The Morris worm
11. Google search rank
10. Apollo guidance system
9. Excel spreadsheet
8. Macintosh OS
7. Sabre system
6. Mosaic browser
5. Java language
4. IBM System 360 OS
That leaves my third, second, and top-most choices still to go. So here they are:
No. 3 is the gene-sequencing software at the Institute for Genomic Research. It isn’t a mammoth software system, but “on sheer technical brilliance, it gets 10 out of 10,” Morgenthaler says. The institute’s sequencing system helped subdivide the task of understanding the DNA makeup of 20,000 human genes. Its breakthrough insights into the human genome and sequencing analysis, plus its ability to recombine subunits of analysis into the whole, “accelerated the science of genomics by at least a decade,” Morgenthaler says. We now have the tools to begin tracing the paths of human migration out of Africa. The human genome reveals how minute the genetic differences are between ethnic groups at a time when such information is sorely needed. It gives a scientific basis for how humans can view each other as brothers at a time when we seem in danger of destroying one another. The software will be called on to perform many additional gene sequencing feats; the roots of many diseases and puzzles of heredity remain to be solved. Seldom have great research and great software been more closely intertwined.
My No. 2 choice is IBM’s System R, a research project at the company’s Almaden Research Lab in San Jose, Calif., that gave rise to the relational database. In the 1970s, Edgar Codd looked at the math of set theory and conceived a way to apply it to data storage and retrieval. Sets are related elements that together make up an abstract whole. The set of colors blue, white, and red, for example, are related elements that together make up the colors of the French flag. A relational database, using set theory, can keep elements related without storing them in a separate and clearly labeled bin. It also can find all the elements of a set on an impromptu basis while knowing only one unique identifier about the set.
System R and all that flowed from it–DB2, Oracle, Microsoft SQL Server, Sybase, PostgreSQL, MySQL, and others–will have an impact that we’re still just beginning to feel. Relational databases can both store data sets about customers and search other sets of data to find how particular customers shop. The data is entered into the database as it’s acquired; the database finds relationships hidden in the data. The relational database and its SQL access language let us do something the human mind has found almost impossible: locate a broad set of related data without remembering much about its content, where it’s stored, or how it’s related. All that’s needed is one piece of information, a primary key that allows access to the set. I like System R for its incredible smoothness of operation, its scalability, and its overwhelming usefulness to those who deal with masses of data. It’s software with a rare air of mathematical truth about it.
And now for The Greatest Software Ever Written–Unix.
Bell Labs often gets credit for creating the Unix operating system, but Bell never funded its development. In fact, the labs’ management knew nothing about it. Bell Labs had committed developers to a multivendor project called Multics that made use of many new ideas for an operating system. But the project fell apart, and a Bell Labs participant, Ken Thompson, decided he wanted a personal version of Multics so he could write shoot-’em-up games, says Feldman (who was the No. 7 developer on the AT&T Unix project and is now president of the Association for Computing Machinery).
In the best tradition of software, Unix was an individual effort that took on a life of its own. Thompson crafted Unix on a Labs reject, a tiny DEC PDP 7 minicomputer with either 16 or 32 Kbytes of memory–Feldman isn’t sure which. “Unix was written under great constraints,” he says. “There was no memory and no CPU power. You’d be embarrassed today not to have more memory and CPU in your wristwatch.”
Thompson designed his stripped-down operating system to move data in blocks or “pages” from a computer’s random access memory onto disk, freeing up memory space. When they’re needed again, the operating system knows to go to the disk and page them back into memory. This way, a big operating system can run on a small computer with a small amount of memory. His operating system also was a multiuser system. Even the mainframes of the day were limited to a single user, making computing time expensive. Thompson’s Uniplexed Information and Computing System (Unics) would let two people use a computer at the same time.
The Computer Science Research Group at the Labs heard about Unics and wanted a copy. At the group’s request, Thompson and a colleague, Dennis Ritchie, agreed they would add text formatting to their system, provided they were given a PDP 11/20, a larger machine. Thus, Unix text processing was born of barter. Unics became Unix; was recast in tighter, more portable C code; and was brought to market by AT&T as the Unix System III.
So Unix System III was the greatest piece of software–almost. Bear with me here.