The views expressed here derive from the experience of the author and his colleagues in designing and implementing the Octopus computer network at the Lawrence Livermore Laboratory. This network serves five major time-shared computers (CDC 7600's and STAR-100's), connecting them to over 800 interactive terminals, about 200 television monitor displays, printers that operate at up to 18,000 lines/mlnute, and more than a trillion bits of storage. The software for the network has been written entirely in assembly language (for PDP-8's, 10's, and ll's, MODCOMP II's, and TI 980's) and from scratch, basing none of it on manufacturers' or other commercial software. The same persons who create the design also do the programming and debugging.In most cases one or two persons program a computer; four persons were used on the largest system (the PDP-10's).Our experience does not accord with much of what we read in the computing literature, leading us to conclude that it is written by persons unaware of the real problems of systems work. We have had little or no trouble with deadlocks, security loopholes, and other logical flaws that are belabored at length in the literature. Most of our effort has gone into devising ways for the system to survive in the presence of intermittent and random failures of hardware components and for it to maintain high data transfer rates among multiply-interconnected devices and computers of varying speeds, matters that are seldom discussed in the literature at all. It is certainly not the case that the difficulties encountered with operating systems are the same as those encountered with other large programs~ such as compilers.Our experience also contrasts with many of the assertions made about assembly language system programs: We do not find that they are more prone to bugs, are less clear or less well organized (structured), require a greater investment in time or money, or are less easy to modify. We can only suppose that findings to the contrary are saying something about the skills of the programmers involved rather than about languages. We are more confident of the correctness of our assembly language programs than we are of the correctness of most programs of comparable complexity.To clarify our position, we should point out that what we call system programs may be approximately characterized as those programs that execute in a privileged mode and perform those tasks that the security measures of the system should prohibit a user's program from directly performing for itself. They include i/o drivers, storage allocators, file accessors, process schedulers~ and interpreters of requests by user programs. They do not include any program that a user could write for himself, even though he usually does not, such as compilers, editors, information retrievers, debuggers, and other utilities which can (and should) *Work performed under the auspices of the Energy Research and Development Administration.
209execute in an unprivileged mode. The language that is best for such programs should be dec...