Object-Oriented Programming Requires Good Epistemology

Posted by Scott Hughes Wed, 19 Apr 2006 02:29:00 GMT

When I first started reading about the Objectivist theory of concept-formation, I got really interested in the possible crossover between people who actively practice good mental integration and the folks who enjoy designing a polished object-oriented (OO) API. Building a new concept by finding the commonalities between a couple of referrents and omitting the specific measurements is exactly the kind of exercise an object-oriented programmer is very familiar with. The measurement-omission step of concept-formation is identical to the process used by an OO programmer to identify the necessary “instance variables” of a given class. A good OO programmer is going to practice the same principles of unit-economy that makes real-world concepts useful, so that we can integrate an unlimited amount of data using a finite amount of symbols.

Any actual OO compiler is going to limit your expressiveness to only very simple forms of composition and inheritance, which is unfortunate in that you’ll hit roadblocks often when trying to model real-world relationships… But also very fortunate in that it saves me a lot of typing. So I wouldn’t say that an OO programmer could breeze through an epistemology book, though he would have a good head start.

It does seem to me that it would be easy to get an Objectivist doing OO design. If they were missing a background in math and algorithms, it might be tough to get them writing real code but they could still likely handle a high-level OO Architect position. This idea has held up pretty well given the high number of computer scientists you meet at Objectivist gatherings. Most of my close friends who are Objectivists (including my wife) are also programmers. I suppose that ratio is weighted since I will tend toward making friends who are smart and work in a similar field.

As a corollary, I found out (thanks to Harry Binswanger’s wonderful mailing list) that Grady Booch, chief scientist at Rational Software and co-creator of the Unified Modeling Language (UML), actually cites Ayn Rand’s Introduction to Objectivist Epistemology in his book Object-Oriented Analysis and Design. I don’t know to what extent Rand was an influence (I’d assume it’s possible that both Rand and Booch were equally influenced by Aristotle, et al, on the theories of categories/classification), but it’s interesting to see another computer scientist (a well-known one even) credit the Objectivist theory of epistemology.

Posted in  | Tags , , ,  | no comments