To make progress, we must invent novel software methodologies. We must understand what kinds of languages are appropriate for describing amorphous computational processes. We must isolate appropriate primitive computational mechanisms and develop powerful means for combining and abstracting them.
Previous work in massively parallel computing systems may provide some guidance in these investigations. For example, wizards of cellular automata and fine-grained parallel processors have devised remarkable algorithms that marshal immense resources effectively. They have also developed significant linguistic support for describing these algorithms. Amorphous computing presents a greater challenge, because its mechanisms must be independent of the detailed configuration and reliability of the elements. For example, smart paint should be able to determine geometric properties of the surface that it coats without initial knowledge of the positions of the paint's computational elements.
Another source of ideas may be research into self-organizing systems, which has exhibited how some coherent behaviors of large-scale systems can ``emerge'' from purely local interactions of individual elements. Amorphous computing may exploit similar phenomena, but it is not our goal to study the principles of self-organization per se. As engineers, we want to construct systems so that they end up organized to behave as we a priori intend, not merely as they happen to evolve.
Although the programming methodology for amorphous computing can be partially explored in simulation, real intelligent materials must be developed and demonstrated. This is technically challenging, because the available power-distribution and communication technologies require precision interconnect to be robust.
Amorphous computing needs to be demonstrated on a few convincing applications. For example, we could construct a ``sensitive room'' by painting the walls with paint that incorporates computation, light sensors, and vibration sensors.