Chapter 40 Further Reading
Niklaus Wirth's Own Works
-
Niklaus Wirth, Algorithms + Data Structures = Programs (1976) The book that inspired this textbook's fifth theme. Wirth develops algorithms and data structures in Pascal, showing how the language's design supports clear algorithmic expression. Still worth reading fifty years later.
-
Niklaus Wirth, Systematic Programming: An Introduction (1973) Wirth's introductory programming textbook, using Pascal. Remarkable for its clarity and its insistence that programming is a discipline of thought, not a mechanical skill.
-
Niklaus Wirth, Compiler Construction (1996, revised 2005) https://inf.ethz.ch/personal/wirth/CompilerConstruction/ Available free online. If you want to understand how the Free Pascal compiler works (or build your own), this is where to start. Written in Wirth's characteristic clear, concise style.
-
Niklaus Wirth, Project Oberon: The Design of an Operating System, a Compiler, and a Computer (2013 edition) https://www.projectoberon.net/ Available free online. Wirth's most ambitious project: a complete operating system, written from scratch in Oberon, running on custom hardware. The entire system — OS, compiler, editor, file system — fits in about 9,000 lines of code. This is simplicity taken to its logical extreme.
-
Niklaus Wirth, "A Brief History of Software Engineering" (2008) IEEE Annals of the History of Computing, 30(3), pp. 32-39. Wirth's personal perspective on how software engineering has evolved — and where it went wrong.
The History of Pascal
-
Niklaus Wirth, "The Development of Pascal" (1993) In History of Programming Languages II, ed. Thomas J. Bergin and Richard G. Gibson, pp. 97-120. Wirth's own account of designing Pascal, its reception, and its evolution.
-
Niklaus Wirth, "Recollections About the Development of Pascal" (1993) ACM SIGPLAN Notices, 28(3), pp. 333-342. A more personal account of the motivations and decisions behind Pascal's design.
-
Thomas J. Bergin and Richard G. Gibson, eds., History of Programming Languages II (1996) Contains histories of Pascal, C, C++, Smalltalk, Ada, and other languages, written by their creators or principal designers. Essential for understanding the context in which Pascal was created and evolved.
Anders Hejlsberg and the Pascal Lineage
-
Anders Hejlsberg, "The Design of C#" — Various interviews and talks Search for "Anders Hejlsberg C# design" on YouTube for several excellent talks where Hejlsberg discusses C#'s design decisions and their roots in his Pascal/Delphi experience.
-
Jim Leonard, "The Complete History of Turbo Pascal" (2017) An exhaustive historical account of every Turbo Pascal version, with technical details, screenshots, and market analysis. Available online at various retrocomputing sites.
The Philosophy of Programming Languages
-
Frederick P. Brooks Jr., The Mythical Man-Month (Anniversary Edition, 1995) Not about Pascal specifically, but about the fundamental challenges of software engineering. Brooks's insights on complexity, communication, and the "second-system effect" are essential reading for anyone who has just built their first serious application.
-
Edsger W. Dijkstra, "On the Cruelty of Really Teaching Computing Science" (1988) EWD 1036. Dijkstra argues that computing should be taught as a mathematical discipline, not as a craft. His position is more radical than this textbook's, but his argument illuminates the same tensions between "making things work" and "understanding why they work."
-
Paul Graham, "Beating the Averages" (2001) http://www.paulgraham.com/avg.html An essay about programming language choice as a competitive advantage. While Graham advocates for Lisp rather than Pascal, his argument — that the language you choose shapes what you can think — echoes Wirth's philosophy.
Modern Pascal Development
-
Free Pascal Roadmap https://wiki.freepascal.org/FPC_New_Features_Trunk Current development priorities for the Free Pascal compiler. See what features are coming in the next release.
-
Lazarus Roadmap https://wiki.lazarus-ide.org/Roadmap Current development priorities for the Lazarus IDE.
-
pas2js Project https://wiki.freepascal.org/pas2js The Pascal-to-JavaScript transpiler, enabling Pascal in web browsers. Documentation, examples, and the current state of the project.
-
LAMW (Lazarus Android Module Wizard) https://github.com/nickelsworth/lamw The tool for building Android applications with Free Pascal and Lazarus.
Programming Education Research
-
Mark Guzdial, Learner-Centered Design of Computing Education (2015) Research on how people learn to program, including the role of language choice in CS education outcomes. Provides the empirical foundation for many of the pedagogical arguments made in this textbook.
-
ACM/IEEE Computing Curricula 2023 https://www.acm.org/education/curricula-recommendations The latest curriculum guidelines for computer science education. Useful for understanding the broader educational context in which a Pascal textbook operates.
What to Read Next
If you are continuing your computer science education:
-
Donald Knuth, The Art of Computer Programming — Volume 1 (3rd edition, 1997) The definitive work on algorithms and data structures. Dense but rewarding. Knuth uses his own assembly language (MIX/MMIX), but the algorithms are language-independent, and your Pascal training will help you follow them.
-
Harold Abelson and Gerald Jay Sussman, Structure and Interpretation of Computer Programs (2nd edition, 1996) A different philosophy of programming — functional, in Scheme — but equally rigorous and equally committed to the idea that programming is about thinking, not typing. Available free online at https://mitpress.mit.edu/sites/default/files/sicp/index.html.
If you are learning another programming language next:
- For Python: Al Sweigart, Automate the Boring Stuff with Python (2nd edition, 2019). Your Pascal training means you already understand programming; this book will show you Python's strengths.
- For Rust: Steve Klabnik and Carol Nichols, The Rust Programming Language (2019). Your experience with manual memory management in Pascal makes Rust's ownership model much easier to understand.
- For C: Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language (2nd edition, 1988). Your Pascal background means you already understand types, control flow, and structured programming; C adds pointers, manual memory, and systems-level access.
- For JavaScript/TypeScript: Kyle Simpson, You Don't Know JS Yet (2nd edition, 2020). Your strong typing discipline will serve you well — TypeScript, in particular, will feel familiar.