A module will accept messages characterized by a specific pattern, and consider them as conditions for the initiation of a specific action. An action may change the state of the module, create a new module or simply send messages to other modules. Such a programming approach is clearly consonant with the present view of complexity as consisting of an evolving network of interacting subsystems, leading to the creation of new subsystems. The use of computers sketched above belongs to what we have called fundamental or theoretical research. Applied research or action implies a different use of computer technology.
Practical action means solving real-world problems.
A computer system can then function as a support, helping actors to solve the problems they are confronted with. This means that all data necessary for solving the problem are determined beforehand, the computer must just apply an algorithm or heuristic for efficiently exploring the search space, which is rigidly defined. The role of the user is limited to introducing the initial data and then waiting for the result. Complex problems, as we argued above, cannot be tackled in this way. The model, incorporating the data, and determining the search space, is by definition incomplete.