In devising a LBPL or evolvable code consider the analogy between conventional code in a human-written program and a city with skyscrapers like Manhattan. A subroutine might have a half dozen levels of indented code (say an IF in an IF in a LOOP in a LOOP in an IF in an IF. This subroutine might be part of a subroutine called by another subroutine in a library function which is called from an IF condition in a LOOP in a low level subroutine of the application which is called from the IF statement in a LOOP of mid level subroutine ... and so on. This can be considered Manhattan code.
Flying into Kennedy one notices a striking contrast between the two regions of the NY metropolitan areas separated by the East River - Manhattan and Brooklyn.
Brooklyn is relatively flat. A sprawling area of buildings typically just a few stories high.
It seems likely that this contrast is analogous to the difference between conventional code and brain code. To build AGI we need Brooklyn Code. It also seems likely that the parallel processing in the brain permits the Brooklyn style and that Manhattan code is a natural result of a serial Von-Neumann machine. This is not to say Brooklyn Code is impractical on a serial CPU, rather that we need to simulate the parallelism to permit the flatter code style.
John Holland's classifiers1, improved in Eric Baum's Hayek Machine are steps in that direction. But more needs to be done in developing languages and systems conducive to Brooklyn style flat coding to achieve fault tolerant evolvable code useful in artificial general intelligence.
1 Holland, J. H. Escaping brittleness: the possibilities of general purpose learning algorithms applied to parallel rule-based systems. in Machine Learning, vol.2 p.593, (Michalski, R. S., Carbonell, J. G. & Mitchell, T. M., eds). Morgan Kauffman, Los Altos, CA (1986).
Posted 8/12/07