Modula-3 is a little known language, but was highly influential on the design of Java. Although the language itself is of mostly historical interest now, this book is a wonderful introduction to a principled approach to both language and software design. Chapter five on threads is still the classic introduction to the topic. Chapter six is a wonderful case-study in rigorous, object-oriented design. Chapter seven is a great tutorial on building complex, multi-threaded libraries.
If you want to be a serious programmer, you have to read this book.
Table of contents:
1. Introduction
2. Language Definition
3. Standard Interfaces
4. An Introduction to Programming with Threads
5. Thread Synchronization: A Formal Specification
6. I/O Streams: Abstract Types, Real Programs
7. Trestle Window System Tutorial
8. How the Language Got its Spots