Colloquium 2 - Dec. 6 : Alexander Repenning

Alexander Repenning
Antiobjects: Beyond the Object-Oriented Mindset

Object-oriented analysis and design (OOAD) is a software design paradigm that has seen great use in the last two decades. Modeling software as a collection of discrete objects that interact with one another via messages is an appropriate methodology for a large class of problems, yet utilizing OOAD does not guarantee design complexity will be reduced or that an OO solution is optimal for the problem space. Furthermore, digital computation is very cheap relative to human cognition, and framing problems that put the strengths of both in the appropriate places, is nearly always a paradigm worth pursuing. Alex Repenning's talk addressed the shortcomings of OOAD in these dimensions through a paradigm he calls "antiobjects".

"Antiobjects", Alex, claims is a paradigm that allows the designer to think about problems in different ways so that, in the presenter's own words, "objects can be put where they are traditionally not". He proposes a separation of processing into foreground and background concerns, and suggests computational processing should be pushed to the background. To achieve this, he uses the concept of diffusion. Alex explained that diffusion - the movement of energy from less concentration to greater concentration - is a paradigm that maps well to class of problems where complexity is great and computational modeling is difficult. For example, he talked specifically about goal programming in the context of games. In the game of Pacman, the goal of the ghosts is to find and destroy the Pacman. Programming each ghost to compute and optimal move toward that goal can get very complicated, particularly if realistic intelligence is important. Instead of using traditional AI techniques for each ghost, the antiobject paradigm would shift concerns away from each ghost's computation and toward the entire maze of the game. Using the diffusion component, computed as a simple diffusion equation, the maze is broken up into a grid, and each cell in the grid computes a diffusion value based on its neighbors. The highest values, for example, will be concentrated at the Pacman. Diffusion values diminish as the grid expands away from the Pacman. As Pacman moves about, values are updated and re-calculated. Ghosts observe the diffusion value of each cell adjacent to them and make moves based on the highest value. Using these simple computations, ghosts are very efficient at their only task : destroy Pacman.

Alex went on to describe more complex games, such as soccer, and how in his experiments thus far, the artificial intelligence expressed to achieve the goal - using simple diffusion equations - was remarkably better than techniques whose complexity is neither easy to grasp, nor program. He explained that as diffusion equations were chained together, a kind of collective intelligence emerges, which he termed "incremental AI". He noted that it was easy to achieve goals where a high degree of collaboration was expressed - or on the opposite end of the spectrum - where a high degree of competition was expressed. In these extreme cases, he observed game AI where the agents in the game were so collaborative, they sacrificed the goal (to score points) for collaboration.

He went on further to describe how important the technique was in parallel processing and multi-core, multi-processor programming. These programming paradigms are becoming more common place in inexpensive hardware. For example, in the Nintendo gaming system today CPU cycles cost $0.23/GFlop versus $2.0M/GFlop (that's 2 million dollars) just 18 years ago. Finally, Alex observed that after teaching children the basic concepts behind diffusion equations, they were able to create sophisticated games and simulations, including crowd simulations and traffic simulations.

Overall, I thought the talk was fascinating. Not quite sure what to expect, though intrigued by the title and abstract, I felt the core concepts behind his techniques are poised to make important contributions in computing, particularly in viewing and approaching solutions to complex programming problems. I also found his work with teaching children how to use this paradigm very encouraging in bring up a new generation of computer scientists and thinkers who are exposed to different ways of solving complex computational problems.