“In a digital computer, the instructions are in the form of COMMAND (ADDRESS) where the address is an exact (either absolute or relative) memory location, a process that translates informally into “DO THIS with what you find HERE and go THERE with the result.” Everything depends not only on precise instructions, but on HERE, THERE, and WHEN being exactly defined. It is almost incomprehensible that programs amounting to millions of lines of code, written by teams of hundreds of people, are able to go out into the computational universe and function as well as they do given that one bit in the wrong place (or the wrong time) can bring the process to a halt.
Biology has taken a completely different approach. There is no von Neumann address matrix, just a molecular soup, and the instructions say simply “DO THIS with the next copy of THAT which comes along.” The results are far more robust. There is no unforgiving central address authority, and no unforgiving central clock. This ability to take general, organized advantage of local, haphazard processes is exactly the ability that (so far) has distinguished information processing in living organisms from information processing by digital computers.”
George Dyson – http://www.edge.org/3rd_culture/dyson05/dyson05_index.html
That description, sums up how my old BSCAL VM worked.
I think its about 18 years since I built the first prototype. I must resurrect that little fun project one day. I managed to find some of the original (and rather horrible) code early in the year and put it into CVS. It once served me well as the core scheduler for a home made super-computer.
I always visualize stuff like this as a colony of programmable ants, but perhaps a more interesting one is a flock of insane parrots to whom you can provide hints as to what they should do next. What I’m exploring now though is the possibility of passing functions as data to functions which decide what to execute, and it’s getting interesting. I’ll let you know how it goes.