This week I finally finished reading “Object-Oriented Software Construction” by Bertrand Meyer. It was one of those classic texts that I had simply never gotten around to reading until kclanc recommended it three or four weeks ago. It took me more than one week to get through the book for various reason, not the least of which is that I read the 1,307 page second edition.
I was already familiar with Bertrand Meyer and his contributions to computer programming and software engineering, and had heard great praise for this book. But thirteen-hundred pages? I thought, “I had better never have to read another book on object-oriented programming after this.”
Let me state this clearly: “Object-Oriented Software Construction” (OOSC) is the definitive text in favor of object-oriented programming. Considering the amount of pages you might think it is unnecessarily verbose, but surprisingly this is not the case. Meyer’s writing is concise, densely informative, and staggeringly comprehensive. Few technical books dare to broaden their scope as widely as this one.
OOSC takes a methodical and, importantly, practical approach to its subject. The author begins by laying out a menu of issues that are endemic to software engineering. Topics such as reusability and correctness affect all computer programmers, whether you’re a novice or a twenty-year veteran. Meyer talks about the theory behind abstract data types (ADT) but does not let the book sink into a hole of theoretical musings; he does justice to the computer science behind ADTs while quickly propelling forward into practical applications of those theories and how they affect real-world software engineering. Meyer does not shy away from computer science theories which relate to object-oriented programming but he maintains a focus on practicality that separates the tone of OOSC from what you might expect from, say, an undergraduate computer science textbook.
Most examples in the book use the Eiffel programming language, which Bertrand Meyer designed and created. Learning more about Eiffel was one of my reasons for reading the book; it is one of the long-list of languages that interests me but which I have never had the chance or reason to use for a non-trivial piece of software. Meyer does not mention Eiffel by name until very late in the book, so if you’re unaware of Eiffel then you will not realize you are also reading a great book about the programming language. Meyer designed the language to address the major topics of the book, which makes it a perfect fit for the examples. The chapters end with thought-provoking exercises and personally I would recommend using Eiffel for those where applicable. However, the core lessons and knowledge of the book are not tied to Eiffel, and I do not believe any reader would learn less by using another language for the exercises. Preferably an object-oriented language, but you could use brainfuck too….
For nearly the past two years I have been working on game development more than any other type of software. OOSC is a treasure chest of mind-opening ideas for not only building games but for creating any type of object-oriented software. (Most modern games seem to be object-oriented.) As I said, the scope is comprehensive. Memory management for objects, design by contract, designing classes and interfaces, concurrency, persistence—none of this is unique to game development. They are subjects which blanket the entirety of object-oriented programming, and this book explores them to such depth and efficiency that I don’t feel like I can do justice to its quality with my own writing.
The two and a half weeks I spent reading the book was enough time to finish Object-Oriented Software Construction. But that was not enough time to absorb everything it offers. I will be re-reading it from time-to-time for the rest of my life. That’s how impressed and humbled I was by Meyer’s text.
Every computer programmer must read “Object-Oriented Software Construction.” I rarely speak in such absolutes, but this book deserves universal recommendation.
Next Book of the Week
My next book of the week is something a little more specific to game development, although again not exclusive: “OpenGL Shading Language” by Randi J. Rost. Computer graphics has long-been one of my weak areas as a programmer, and I am using GLSL on the game I’m creating. So I believe the so-called ‘Orange Book’ will be a great asset and teach me more about shaders, because they are everywhere in modern game development.