[ Jocelyn Ireson-Paine's Home Page | Publications | Dobbs Code Talk Index | Dobbs Blog Version ]

The Only Valid Measurement of Code Quality

Here's a little cartoon about measuring code quality: on the intriguingly titled page Object Orientation Isa Hoax.

This page, by the way, is in a wiki run by Cunningham & Cunningham, Inc., whose front page says it's about people, projects and patterns in software development. The rest of Object Orientation Isa Hoax is a discussion about an interview with Alexander Stepanov in which he criticises object-oriented programming thus:

I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms — you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.

Stepanov is an author of something that, like the cartoon, I have only just discovered: Elements of Programming, coauthored with Paul McJones. This book identifies the mathematical structures that underlie many algorithms, explaining their important properties and theorems. As the online copy of the chaper on Transformations and Their Orbits shows, this gives a rich vocabulary of well-understood and precise concepts with which to describe algorithms. I'd read the book now, were the rest of it online.