Computers have the disadvantage of working linearly. A computer's processor executes instructions one at a time in a precisely determined sequence. Because logic in a program is sequential, the program's variables change linearly, which means changes in the overall state of the program are also linear. The state of one variable may not simultaneously affect the state of one or more other variables, and variables may not affect each other simultaneously.
Programs can be designed in which processes may spawn threads that execute separately, and instructions can be distributed to more than one processor. However, program control can still be seen abstractly as a dimensionless point moving in discrete steps along one or more intersecting lines.
Many scenarios in the everyday world involve factors that simultaneously affect other factors, and some factors may also affect each other at once. That means that no matter how minutely a digital simulation of such a scenario might be, the simulation is still radically unrelated to the scenario when seen at the most fundamental level.
Linearity also makes it difficult to design a program that can monitor its own operation and then respond effectively to internal contingencies as they arise. Self-monitoring is hard to incorporate into software, and therefore designing a program that can recover when unexpected events occur during execution is also difficult.
What would it mean for program execution to be spatial instead of linear? Instead of being built of algorithms, a spatial program would be built of what we might call holorithms.
Algorithms are procedures expressed in terms of states that change in a well defined manner over time. Holorithms are expressed in terms of regions of state space whose interrelationships are well defined and instantaneous, but whose time-based trajectories are diffuse and indefinite. The interconnected regions affect each other simultaneously, with each point variable changing instantaneously, but information about the system as a whole from moment to moment is difficult to gather or perhaps altogether unavailable. A holorithmic system could not be "stepped through" with a debugger in the way that computer programs can.
Would holorithmic computation be Turing? Would a holorithmic computer involve some kind of irreducible indeterminacy? If so, what would be the bounds of what we could know about that indeterminacy?
Michael Webb, 2000
[ home ]