There are many ways to embody the abstract idea of object-oriented programming in a programming language. WOM is based on a new paradigm known as System Limit Programming, in a way which makes it different from most OOP languages, including those, such as W3Kit and NeXT's WebObjects [NeXT WebObjects], used for programming CGI applications. We believe this difference is in its favour for the modellers who will use it.
We make some remarks about OOP in general, before returning to WOM. A major defect of almost all OOP languages is their non-declarative nature. One is forced to think in terms of objects sending messages to other objects, or calling procedures in other objects, and then gets tied up in questions of ontology: what conceptual entities do these messages or procedures represent? (In a physical simulation, you might think they should represent forces, but this is usually not so.)
At a more practical level, this style of programming is also problematic. Most OOP programmers have encountered the situation where, because objects A and B have interdependent states, A sends B an update-yourself message whenever it is updated; B then sends A a message in reply; A ...and so on
Instead, it seems better to come back to the real world, bear in mind that ``Cats don't have buttons; dogs don't have messages'' and think instead about the constraints between related objects. For example, if one is programming an Adventure game, with robots that can pick up and put down gold ingots, swords, and such items, then the robot and the other objects have various attributes, position amongst them. The unconstrained behaviour of the robot and other objects is that they can be in any location at any time, subject only to the constraint that their motion be continuous. However, if the robot picks up a sword, a constraint starts operating such that, until the robot releases it, the sword has the same position as the robot's hand.
This is one of the ideas behind SLP, whose development was motivated in part by the need to program Adventure-type games for an Artificial Intelligence course at Oxford University [Ireson-Paine 1995a]. Because it allows programmers to think in a declarative style, writing equations that describe how objects and collections of objects behave, it seemed a good basis for the modellers who are Web-O-Matic's intended users.
More fundamentally, SLP's mathematical foundations provide a coherent way to describe any type of system at all in terms of its components, and hence a secure framework for the design of a programming language.