Niklaus E. Wirth

Switzerland – 1984
Short Annotated Bibliography

Original Technical Contributions

  1. Wirth, N. and C. A. R. Hoare, “A Contribution to the Development of ALGOL,” Communications of the ACM Vol. 9, (June 1966), pp. 413-432. Describes Algol-W, which was based on Wirth’s rejected design for the successor to Algol 60.
  2. Wirth, N., “Program Development by Stepwise Refinement,” Communications of the ACM, Vol. 14, Num. 4, (Apr 1971), pp. 221-227. Available here. One of a cluster of important publications appearing around this time from Wirth and his collaborators such as Dijkstra and Hoare, all applying rigor to the structuring and development of computer programs. This one proposes starting with an outline and progressively elaborating detail in each step to produce actual instructions and data structures.
  3. Wirth, N., Systematic Programming, Prentice Hall, Englewood Cliffs, 1973. Wirth’s variant on “structured programming,” then a new idea. The idea was trivialized in popular usage to mean code indentation and the avoidance of “goto,” but early work was based on rigorous examination of the fundamental operations involved in computation. Wirth’s version was more directly related to practice and less mathematical than that of his colleagues, and probably had a more direct impact on teaching and practice.
  4. Wirth, N. and Kathleen Jensen, PASCAL - User Manual and Report, Springer-Verlag, 1974. Pascal’s initial use as a teaching language was aided by this book, which combined a tutorial on Pascal for experience programmers with a reference for implementers that fully described the language.
  5. Wirth, N., Algorithms + Data Structures = Programs, Prentice-Hall, Inc., 1975. Computer science had traditionally focused on algorithms. As evidenced by the inclusion of complex, user-defined data types in Pascal, Wirth believed that data structures were just as fundamental, and that choice of algorithm and design of data structure were inherently connected. A widely read and influential book.
  6. Wirth, N., Programming in Modula-2. Springer-Verlag, 1982. Modula-2 was widely used as a computer science teaching language in the 1980s and early-1990s, and this was a popular textbook.
  7. Wirth, N., and Jürg Gutknecht, Project Oberon, Addison-Wesley, 1992. Available here. Oberon was the culmination of Wirth’s lifelong drive to produce code of striking clarity and economy. This book doesn’t just describe the systems (including operating system and compiler) but also publishes their entire source code.
  8. Wirth, N, "A Plea for Lean Software," Computer, pp. 64-68, February, 1995 Source of the quotation here on the “software explosion” and a concise summary of the design principles used in Oberon including an explicit contrast with standard practices.

Retrospective Analysis

  1. Wirth, N., “From Programming Language Design to Computer Construction,” (Turing Award Lecture), Communications of the. ACM, Vol. 28, Num. 2, pp. 159-164 (Feb. 1985). Available here.Wirth draws lessons from his career to date, outlining his philosophy of system design.
  2. Wirth, N.,  “Reconnections About the Development of Pascal.” In History of Programming Languages II, eds. Thomas J. Bergin and Rick G. Gibson. ACM Press, 1996: pp. 97-120. A detailed account of the early history of Pascal and its evolution from the Algol project.
  3. Böszörményi, László, Jürg Gutknecht and Gustav Pomberger, eds, The School of Niklaus Wirth: The Art of Simplicity, Dpunkt-verlag, Heidelberg, 2000. Composed primarily of essays by Wirth’s students on their accomplishments, some of which are directly related to Wirth. Most relevant here is the introduction “Niklaus Wirth—a Pioneer of Computer Science” on which I draw heavily for the essay. It is particularly important in giving equal weight to his work on systems and on language design, in which context Michael Franz’s chapter “Oberon—The Overlooked Jewel” is also very useful. At the end of the book are some personal anecdotes on working with Wirth.
  4. Broy, M. and E. Denert, Eds., “Pascal and its Successors,” Software Pioneers, Springer-Verlag, 2002 This is another retrospective look by Wirth at his accomplishments. This one illuminates the links between Pascal and his later systems.
  5. Wirth, N., “Modula 2 and Oberon,” Proceedings of the third ACM SIGPLAN conference on History of programming languages, ACM Digital Library, 2007. Available here. This complements Wirth’s discussion of Pascal in the previous History of Programming Languages book. Careful and readable.