Re: Bob's 'Self-aggrandizing ignorant' Count: Was: What databases have taught me

From: Robert Martin <unclebob_at_objectmentor.com>
Date: Sat, 1 Jul 2006 00:56:59 -0500
Message-ID: <2006070100565978840-unclebob_at_objectmentorcom>


There can be little doubt that OO got it's start from simulation. Nor should this be a big surprise. Discrete Event Simulation is all about a fixed set of events being mapped onto a variety of different data types. After writing enough switch statements it becomes pretty clear that what you really need is a jump table.

However, OO did not stay in the simulation realm for long. In the 1972 book "Structured Programming" Dahl makes it clear that Simula was designed for simulation purposes, but then makes it very clear that the structuring mechanisms they created are useful for general purpose programming.

Both Kay and Stroustrup came to the same conclusion very rapidly. Since then it has been a non-issue because it turns out that many programs need to be able to map a small set of fixed events onto a larger number of data structure variants.

Indeed, consider IO. The basic notion of 'file' in unix is a set of variant drivers that all must respond to a fixed set of functions {open, close, read, write, seek}. This mapping was implemented using a jump table that looks remarkably like a C++ Vtable.

In short, though OO got its start in simulation, it is really just the formalization of jump tables to manage indirection and thereby create independence. Received on Sat Jul 01 2006 - 07:56:59 CEST

Original text of this message