Computing as Simulation

In the object-oriented world view, a program is envisioned as a community of objects working in a cooperative fashion to achive some goal. This idea of a community of interacting agents is very similar to the way in which a committee or club might be organized.

The technique is also very similar to a style of simulation called discrete-event-driven simulation. Indeed, the very first object-oriented language, Simula, was developed with just this application in mind. In an event-driven simulation the programmer creates a universe of objects that act like the elements in the system being simulated. Such a simulation might have patrons arriving at a hot-dog stand, for example, and waiting in line for service. The person running the simulation might want to know, for example, whether it would be profitable to add a second helper to process the sales of hot dogs during the lunch hour, or whether the cost of the second person would exceed the expected increase in profits due the the larger number of patrons that could be serviced.

There are technical reasons why object-oriented programming is a successful software development technique, but I also believe there is another easily under estimated avantage of the object oriented model. That advantage is the power of metaphor.

[audio] [real] Text to accompany slidexx, in Chapter 1 of An Introduction to Object-Oriented Programming