Another example of a powerful abstraction is “typical element programming,” which draws its inspiration from the physical sciences. The idea is that great progress in compact description can be made if you only have to specify the elementary particles and fields, or in larger aggregates, a typical cell. This also lies at the roots of dynamic object programming but has been lost over the last 25 years. Part of the key to success is that not just the “particle” side of things has to have a good model, but also the “field” side (which is often almost neglected in so-called “object-oriented” programming which is usually anything but).
The “field” side has to do with messaging and events, the interstitial side of interactions (which is almost invisible because the concreteness of the objects takes too much of the center stage). In fact, the objects and the messaging system form duals of each other and have to be kept in balance for the most powerful and compact modeling. Once the “centralist mind-set” is abandoned in favor of looking at complex systems as typical elements and dynamic relationships, a new kind of mathematics arises that allows an astonishing range of phenomena to be handled that seemed previously to be very different cases.