Chapter 1 Further Reading: Why Pascal?

Resources are organized by tier. Tier 1 resources are primary sources and foundational works. Tier 2 resources are attributed, verifiable references. Tier 3 resources are illustrative or constructed for this text.


Tier 1: Primary Sources and Foundational Works

Wirth, Niklaus. "The Programming Language Pascal." Acta Informatica, vol. 1, 1971, pp. 35–63.

The original specification of Pascal. This paper is readable and surprisingly short — a reflection of the language's design philosophy. Wirth describes the complete syntax and semantics of Pascal in fewer than 30 pages. Compare this to the hundreds of pages required for Algol 68, C++, or Java specifications, and you begin to understand what Wirth meant by simplicity. Available through academic databases and widely mirrored online.

Why read it: To see how a great computer scientist thought about language design. The clarity of Wirth's writing mirrors the clarity of his language.


Wirth, Niklaus. Algorithms + Data Structures = Programs. Prentice-Hall, 1976.

Wirth's masterwork and one of the most important books in the history of computer science. Using Pascal as the implementation language, Wirth demonstrates that programming is fundamentally about choosing the right algorithms and the right data structures for a problem. The book covers sorting, searching, recursive algorithms, dynamic data structures, and compiler construction. Despite its age, it remains strikingly relevant.

Why read it: To understand the philosophy that animates this textbook. Wirth's title is not a metaphor — it is a precise statement about what programs are. Every chapter of our book builds on this principle.


Wirth, Niklaus. Systematic Programming: An Introduction. Prentice-Hall, 1973.

Wirth's introductory programming textbook, using Pascal. This book demonstrates Wirth's pedagogical approach: start with simple problems, develop solutions step by step, and always explain why a design choice is made, not just what the code does. It is out of print but available in libraries and through used book sellers.

Why read it: To see how Wirth himself taught Pascal. Many of the pedagogical principles in our book are directly inspired by Wirth's approach.


Dijkstra, Edsger W. "Go To Statement Considered Harmful." Communications of the ACM, vol. 11, no. 3, March 1968, pp. 147–148.

The famous letter that launched the structured programming movement. Dijkstra argues that the GOTO statement makes programs nearly impossible to reason about and should be eliminated from high-level languages. This letter directly influenced Wirth's design of Pascal, which provides structured alternatives (if-then-else, while, for, repeat-until, case) that make GOTO unnecessary.

Why read it: It is short (barely two pages), historically important, and surprisingly persuasive. Understanding Dijkstra's argument is essential to understanding why Pascal exists.


Jensen, Kathleen, and Niklaus Wirth. Pascal User Manual and Report. Springer-Verlag, 1974. (Revised edition, 1991.)

The definitive reference for standard Pascal, co-authored by Wirth. The "User Manual" section provides a tutorial introduction; the "Report" section provides the formal language definition. The revised edition (ISO Pascal) is the authoritative standard.

Why read it: As a reference when you want to know exactly what standard Pascal specifies. Free Pascal extends standard Pascal significantly, but understanding the standard helps you appreciate what the extensions add.


Tier 2: Attributed Resources

Free Pascal Documentation

  • Free Pascal Reference Guide: https://www.freepascal.org/docs-html/ref/ref.html The complete reference manual for the Free Pascal compiler. Covers all language features, compiler directives, and extensions. This is the authoritative resource for the specific dialect of Pascal used in this book.

  • Free Pascal Programmer's Guide: https://www.freepascal.org/docs-html/prog/prog.html Practical guidance on using Free Pascal: compiler options, debugging, linking, platform-specific considerations.

  • Free Pascal Wiki: https://wiki.freepascal.org/ Community-maintained wiki with tutorials, how-to guides, and platform-specific information. The "Getting Started" section is particularly useful for beginners.

Why bookmark these: These will be your primary references throughout this course. Bookmark them now.


Lazarus Documentation

  • Lazarus Wiki: https://wiki.lazarus-ide.org/ Comprehensive documentation for the Lazarus IDE, including installation guides, component references, and tutorials. You will use this extensively in Part VII when building PennyWise's GUI.

  • Lazarus Forum: https://forum.lazarus-ide.org/ Active community forum with responsive members. A good place to ask questions when you are stuck.


Cantu, Marco. Object Pascal Handbook. Self-published (available at https://www.marcocantu.com/).

Marco Cantu is one of the most prolific authors on Delphi and Object Pascal. His Object Pascal Handbook covers the modern Object Pascal language as implemented in Delphi, with extensive examples and explanations. While our book uses Free Pascal rather than Delphi, the language features are largely compatible, and Cantu's explanations are excellent.

Why read it: As a supplement when you reach the object-oriented chapters (Part V). Cantu's treatment of classes, interfaces, generics, and advanced OOP is thorough and clear.


Hejlsberg, Anders, Mads Torgersen, Scott Wiltamuth, and Peter Golde. The C# Programming Language. Addison-Wesley, 4th edition, 2010.

The definitive reference for C#, co-authored by its creator. While not a Pascal book, reading it with Pascal knowledge reveals striking similarities: strong typing, clear structure, separation of interface and implementation. Understanding C# as a descendant of Pascal's lineage (via Delphi) deepens your appreciation of both languages.

Why read it: After completing this book, reading the C# specification will show you how Pascal's principles live on in one of the most important modern languages.


ACM/IEEE-CS Joint Task Force. Computer Science Curricula 2023. Association for Computing Machinery, 2023.

The latest revision of the ACM/IEEE model curriculum for computer science programs. Discusses the role of introductory programming courses, language choice, and the importance of foundational skills. Provides context for the pedagogical arguments made in this chapter.

Why read it (instructors): To see how the CS education community thinks about introductory course design and how Pascal's approach aligns with current curricular recommendations.


Tier 3: Illustrative and Supplementary

"The History of Turbo Pascal" — Various online retrospectives

Multiple blog posts and articles document the history of Borland's Turbo Pascal, which made Pascal accessible to millions of programmers in the 1980s and 1990s. Search for "Turbo Pascal history" to find accounts from former Borland employees and longtime users. These provide vivid context for understanding why Pascal became the dominant teaching language and how it influenced the software industry.

Why read them: For historical perspective and appreciation. The Turbo Pascal story — a $49.95 compiler that changed the industry — is one of the great narratives in computing history.


"Niklaus Wirth: A Pioneer of Computer Science" — Obituaries and tributes (January 2024)

Following Wirth's death on January 1, 2024, numerous publications ran retrospectives on his life and contributions. The ACM, IEEE, ETH Zurich, and major technology publications all published tributes. These provide accessible overviews of Wirth's career and philosophy.

Why read them: To understand the person behind the language. Wirth was not just a language designer — he was a thinker who believed that simplicity and discipline were the foundations of good engineering. His philosophy permeates this entire book.


Comparison of Introductory Programming Languages — CS Education Research

The CS education research community (published in venues like SIGCSE, ITiCSE, and the ACM Transactions on Computing Education) regularly studies the effects of language choice on student outcomes. Search for "introductory programming language comparison" or "CS1 language choice" in the ACM Digital Library. Key findings relevant to this chapter include the impact of static vs. dynamic typing on novice learning, the role of compiler feedback in error correction, and the transfer of programming skills between languages.

Why read them: To evaluate the claims in this chapter with empirical evidence. The argument that Pascal produces better learning outcomes is supported by research on typed vs. untyped first languages, but the evidence is not as simple as any single study suggests.


Wirth, Niklaus. "A Brief History of Software Engineering." IEEE Annals of the History of Computing, vol. 30, no. 3, 2008, pp. 32–39.

Wirth's own account of the history of software engineering, including the crises of the 1960s that led to structured programming, the role of language design in software quality, and his reflections on how the field has (and has not) improved. This paper provides essential context for understanding why Pascal was created and why its principles remain relevant.

Why read it: To hear Wirth's voice directly. He writes with the same clarity that characterizes his language designs, and his perspective on software engineering is as relevant today as when he first articulated it.


Pascal on Modern Platforms — Community Resources

  • Castle Game Engine: https://castle-engine.io/ — A modern 3D and 2D game engine written in Object Pascal/Free Pascal. Demonstrates that Pascal is capable of building complex, performance-intensive applications.
  • mORMot2: https://github.com/synopse/mORMot2 — An open-source framework for building client-server applications in Free Pascal, including REST APIs, ORM, and SOA. Demonstrates Pascal's viability for modern server-side development.
  • PascalCoin: A cryptocurrency implementation in Free Pascal, demonstrating Pascal in blockchain/distributed systems.

Why explore them: To see what modern Pascal development looks like in practice. These projects refute the "Pascal is dead" narrative with working code.