Through this blog post on “BlueSky” about PyCells, I delved further into this seemingly new (to me) programming paradigm, called Cells, by Kenny Tilton.
It basically takes the concept of a cell in a spreadsheet that get updated automatically to programming where there are a lot of internal data states that are dependent on one another in a chain, or a complex graph of dependencies. Like, the color of a button depends on whether you selected a radio button or not. Or, shut down the motor if the sensor reads above 100 degrees (example given in text).
In only the brief one hour that I’ve been reading about it, it seems like you make declarative statements about WHAT is chained to what, and the cell system will be able to make deterministic and discrete updates to keeping data internals consistent, so that it eliminates race conditions and deadlocks.
A better explanation of it by a better informed Bill Clementson will help you understand it, in addition to this long explanation of cells by Phillip Eby. While it might sound academic, it’s currently under the summer of code 2006 for google, under the python foundation. They’re trying to make a port of it from Lisp’s CLOS to Python. I wonder if anyone’s doing it in Ruby?
However, even if it does really remove deadlocks and race conditions, I imagine other problems will crop up. It seems very analogous to cellular automata, except in this instance, the cells are heterogeneous, and there can be any number of neighbors. I expect that for even simple systems, you can get unintended and complex behavior from them, as most likely, they will be non-linear systems. How can we harness these unintended behaviors to design systems that are more than the sum of its parts? Of all the complex systems literature I’ve read, they’ve mostly been descriptive, rather than predictive. I’m not sure how to design emergent systems.