PROGRAMMER'S BOOKSHELF

The Grand Master of System Software

Ray Duncan

Breathes there the computer science undergraduate with soul so dead, who never to himself hath said "Knuth is God!" Apologies to Sir Walter Scott

Donald Knuth has become a legend in his own time for, among other things, his multivolume algorithms reference The Art of Computer Programming and his reinvention of computer typesetting. Even the average corporation-cubbyhole applications programmer, who (according to Yourdon at least) has probably never read any programming textbook at all, will be moved to genuflect when the Knuth's name is mentioned--Knuth's books are so lucid, so comprehensive. and so entertaining that they have become the standard against which all other computer books are judged. Well, it's about time to expand the pantheon. Andrew S. Tanenbaum, a professor of computer science at Vrije Universitet in Amsterdam, is building up a library of texts on systems programming that rivals Knuth's work in both quantity and quantity. In this month's installment, I want to introduce you to Dr. Tanenbaum's four most important efforts.

Structured Computer Organization's title makes it sound dry, formal, and concrete, but the title is just Tanenbaum's way of waming you that he proposes to describe the digital computer at every level,from the electrons to the command prompt. The book begins with a brief history of mechanical and electronic computing, from Babbage to the present. It then embarks on a grand tour of computer architecture, beginning with the fundamentals of digital logic and progressing through registers, memory, buses, microprogramming, conventional instruction sets, addressing schemes, virtual memory, flow of control, and operating systems. After a brief digression into the workings of language translators, linkers, and loaders, Structured Computer Organization finishes up with a survey of cutting-edge technology in RISC machines and parallel processing. This book, while cosmic in scope, is a pleasure to read and is an excellent starting point for any programmer who seeks a basic understanding of the underlying hardware and its relationship to system software.

Computer Networks attacks the intimidating topic of networking and communications with much the same thoroughness and tenacity that we saw in Structured Computer Organization. If there's any stone that Tanenbaum left unturned in this book, I certainly didn't notice it. And just in time, too--with the rapid decline in price of high-performance, twisted pair Ethernet and even higher performance, fiber optic backbones, Local Area Networks (LANs) and Wide Area Networks (WANs) are springing up like mushrooms after a Redmond rainstorm, so we must all learn to speak the language of the network gurus. Have you ever wondered about the significance of the seven layers of the OSI reference model, or what ISDN, X.25, SNA, SDLC, and ASN.1 really stand for? Do you want to understand the differences between a repeater, a router, a gateway, and a bridge? Do you feel perplexed and alienated when people glibly talk about TCP/IP UseNet, token ring, and the X.400 standard for electronic mail? Computer Networks will straighten you out.

I daresay I've at least browsed through nearly every general text on systems software published during the last 20 years, but Tanenbaum's Operating Systems: Design and Implementation is by far my favorite. All the fundamental issues of operating-systems architecture and programming, from device drivers to security and protection mechanisms, are beautifully explained in this superb book. Unlike most of its competitors. Operating Systems: Design and Implementation is not strong on theory but weak on practice, nor is it scornful of the personal computer. In the latter part of the book. Tanenbaum illustrates nearly every operating-system concept that he has discussed in the form of full source code for a UNIX clone called MINIX that will run on the IBM PC and the Macintosh. If you are not in the mood to type in the 250 pages of MINIX source code, Tanenbaum thoughtfully makes it available on diskette, together with all the development tools needed to rebuild the system. We're definitely talking Hackers' Heaven here.

Tanenbaum originally intended for is newest book. Modern Operating Systems, to be an updated edition of Operating Systems: Design and Implementation, but (as he says in the introduction) the book pulled him in another direction and ended up with a distinctly different emphasis. Although Modern Operating Systems shares some material with its predecessor, the theoretical discussions are interspersed with lengthy case studies of UNIX, MS-DOS, Mach, and a University of Amsterdam experimental operating system called "Amoeba." The special strength of Modern Operating Systems is its extensive treatment of distributed operating systems, and distributed file systems, while its special weakness is the alarming number of typographical errors. Surprisingly, Tanenbaum barely, mentions several operat ing systems that you night think would merit coverage in this book. such as VAX//VMS and the proprietary IBM mainframe systems. (Perhaps he doesn't consider them modern enough!) OS/2 is ignored. except in the context of MS-DOS:

What does the future of MS-DOS hold? Technically, it is completely obsolete. Programming it is a nightmare. To the user, it is idiosyncratic and unfriendly. IBM and Microsoft realized this years ago, and spent millions of dollars prodticing a modern, powerful, and easy to use replacement, OS/2, only to discover that the users were not interested.

But I don't want to leave you with the impression that Tanenbaum is singling out MS-DOS for unfair criticism. In another place, he comments:

Many users, especially beginners, find the MS-DOS command line interface cryptic at best and downright hostile at worst, probably even worse than UNIX, whose shell has rarely been accused of being friendly to novices.

Indeed, Tanenbaum mostly takes a generous attitude toward MS-DOS, considering his academic background, and takes care to point out its good features, such as the extreme configurability that it gains from installable device drivers and the CONFIG.SYS file.

When you consider all four of Tanenbaum's books together, the range of topics this fellow can write about clearly and authoritatively is nothing short of astounding. Every one of his books is an excellent investment that will serve you well, and--if you are a serious programmer at least three out of the four books should find a place in your library.


Copyright © 1992, Dr. Dobb's Journal