Analysis and Synthesis
Software-controlled machines have been around for some time now. But we’re nowhere near a world filled with robotic helpers. There are deep reasons for this. One important reason is this: we’ve been using the wrong approach to program the machines.
Techniques for programming robots have an odd quality about them: the software contains numerical methods combined with symbolic heuristic methods. The numerical methods are essentially those used in computational physics. The symbolic methods are essentially those used to analyze symbolic phenomena like language and “mental processes”. Both sets of methods are analytical in nature. They are invaluable in understanding the world, and that understanding is very useful in creating robotic software. But I believe it is a mistake to use the methods directly.

A Neural Network
Let’s see what a different approach may look like. There is one set of relevant methods that is synthetic in nature: these are “computational kernel” methods. The set includes cellular automata and fractals. Ironically, these synthetic techniques are often proposed for analyzing physical phenomena. They may be useful analysis, or even paradigm-changing as some claim. But they are much more promising as a basis for robotic software.
To control a machine, we do not need to program into it sophisticated techniques for understanding how machines work. We just need to provide the right computational kernels that, in aggregate, lead to sophisticated behavior. This kind of approach has been seriously attempted only by “neural network” (and their close cousins “probabilistic graphs”, “bayes nets”, etc.) researchers and practitioners . Unfortunately, neural networks have suffered from the analysis-synthesis confusion as well; they have been constrained by the analytical need to model biological brains.
It’s time to get beyond this confusion and design synthetic techniques that learn the behaviors we want. We can then use analytical techniques to understand why the systems we create behave the way they do. But that analysis will be separate from the computational kernels we use to program them.









