In a comment on a previous post, Alex Peake warns that in searching for what Jaron Lanier calls “biomimetic” programming metaphors, “we must be careful not to fall into the trap of early flight pioneers – that of trying to emulate birds (too closely) in order to build a flying machine. Flapping wings was NOT the algorithm. ”
Point taken. The solution hardly lies in creating a two-stranded, base-4 genotype that’s transcribed into an intermediate form, which in turn create self-assembling components from a small number of basic building blocks, etc….
What I’m much more interested in is finding powerful abstractions, and whether they disguise the fact that one is programming or not is, to me, irrelevant. Look at the spreadsheet as the great example: whether you label a spreadsheet as a programming language or not, it is one, an immensely powerful one that is better for many, many purposes than the text-based ones that are mostly associated with the word “programming language.”
A programming tool / language for evolutionary computation would have built-in constructs for parallelizing runs of populations, monitoring the increase in fitness over time, monitoring the entropy of the genome, choosing among selection strategies, and would have tools for facilitating the encoding strategy (the key and decidedly non-trivial task).
Alex advocates sticking to a particular domain, and that may be wise. But on the other hand, surely most digital “tools for building tools” would do well to keep the door open to complete programmatic control?