Friday, January 13, 2006


Object Oriented Software Construction

Many Team Eiffel readers will have read Bertrand Meyer's masterpiece Object Oriented Software Construction. For some, it was their introduction to Eiffel; for others, their introduction to Object Orientation.

Peter Gummer has contributed the following comments, which originally appeared on the ISE Eiffel mailing list:

I bought OOSC2 when it was first published. I read it cover-to-cover ... well, almost, I got stuck half-way through the concurrency chapter. But I did read the rest :-)

Before OOSC2, I thought I understood OO. OOSC2 showed me how little I understood. It explained OO in such a clear and entertaining manner, it completely changed how I thought about many things. I was programming in Delphi at the time (a language very similar to C#), and OOSC2 inspired me to make all of my methods virtual -- surprisingly with zero noticeable impact on execution speed -- and to abandon "private" in favour of "protected" -- which was amazingly liberating and which I've never regretted, apart from the interminable arguments it has provoked with other Delphi, Java and C# programmers. I still follow these practices today in C#, seven years later!

The main thing that OOSC2 taught me is that OO is quite simple. That's not to say that learning to use it well is easy, but the concepts behind it are not as complicated as most other authors make
it seem, especially the C++/Java/UML crowd. Smalltalk people also have a knack for making it seem simple; they approach OO in a very different way from Eiffel, of course. OOSC2 is not, as it might first
appear, a survey of OO; advocates of dynamically-bound languages like Smalltalk, for example, make good cases that get very little consideration in OOSC2. That's ok: OOSC2 is Meyer's exposition of
what he knows about OO. I was deeply impressed by the coherence of his vision, and his willingness to justify every decision made in the design of Eiffel.

OOSC2 introduced me to many big concepts -- command-query separation, uniform access, etc., etc., etc. --- all of which I found myself agreeing with. Some of the smaller decisions I was more dubious about -- e.g., the idea that case-insensitive languages avoided many programming errors, which struck me as quaintly obsolete given the speed of modern computers and the assistance we now get from IDEs -- but now that I've actually done some Eiffel programming my views have been swayed even on these little issues.

OOSC2 is the most important book I've ever read on software development. Well, maybe not: David Gries's "A Science of Programming" taught me De Morgan's theorem, probably the single most useful thing I've ever learnt; and Jensen and Wrth's "Pascal Report and User Manual" set me on the true and righteous path. So OOSC2 is definitely the best I've read in the last fifteen years.

It would be nice to be able to give people a more concise version. The thickness of OOSC2 can be daunting. Anyone want to write "OOSC2 for Dummies"?

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?