« Archives in October, 2007

Notes on Object-oriented Software Construction by Bertrand Meyer

In recent years, we’ve seen a bit of a resurgence in the popularity of languages that eschew the object-oriented paradigm. Python and Ruby are praised by many because they can be used in a functional style; Lisp and OCaml are talked about in hushed tones of reverence by people who have only incidental experience with them (myself included); and even freak languages like Haskell are entering the mainstream consciousness of the software community. I’ve always felt that this might just be another instance of familiarity breeding contempt — or more accurately, as unfamiliarity breeding admiration. So, I read about and practice as many diverse techniques as I have time for.

I have read many discussions about why one paradigm is better than the other, or how these paradigms should be used together, or in what instances one paradigm might produce a more elegant and maintainable solution than the other. I almost always find these discussions lacking the hard rationality that is typical in, say, the physical sciences. Rather, they usually feel more like a group of people discussing why a song or a piece of artwork has greater merit than another. I’m not saying that these arguments are uninformative — I usually feel as if I’ve learned a lot. I just felt like they were lacking a robust and impartial framework by which the presented claims could be evaluated.

It turns out that the sort of concrete, rational analyses that I have been looking for were actually written long ago. (This might be one of those cases of having to rediscover a solution, rather than having to invent it anew. The aptly-named Michael Stonebreaker of data-management fame is well known for telling our generation of computer scientists that were are blithely ignoring the lessons of the previous generation and reinventing methodologies that were found to be inadequate many years ago. I am inclined to agree with him — but I digress.) This book was published in 1988, and contains a well-structured and precise progression of ideas that are used to derive the object-oriented paradigm.

»Read More

Notes on Confessions of an Economic Hit Man by John Perkins

It has taken me forever to get to this note. I read this book almost three months ago now, and my notes were rather terse, so my memory of it isn’t very good.

»Read More

Programming Pearls: A solution to Exercise 1-12

Pioneers of human space flight soon realized the need for writing implements that work well in the extreme environment of space. A popular urban legend asserts that the United States National Aeronautics and Space Administration (NASA) solved the problem with a million dollars of research to make a special pen. According to the legend, how did the Soviets solve the same problem?

Of course, everyone has heard this one. The urban myth (although I’m not sure if it’s entirely myth, nor do I really care), is that the Soviets just used pencils.

Programming Pearls: A solution to Exercise 1-11

In the early 1980s Lockheed engineers transmitted daily a dozen drawings from a CAD system in their Sunnyvale, California plant to a test station in Santa Cruz. Although the facilities were just 25 miles apart, an automobile courier service took over an hour (due to traffic jams and mountain roads) and cost a hundred dollars per day. Propose alternative data transmission schemes and estimate their costs.

»Read More

Notes on Classical and Object-Oriented Software Engineering by Steven Schach

I’m not sure if I just made this up, or if it was actually in the book, but I seem to remember that Steve McConnell wrote in Code Complete that everyone involved in software development should at some point read a software engineering text, and that it wasn’t really important which one that you decided to read. I found a couple of older free texts sitting around my lab, so I picked the one with the nicer-looking cover and went with it.

»Read More