Hi
So the other day! I was browsing through an old question I asked about self-generating/self-modifying code on stackoverflow (a very fine website). A couple of new answers at the bottom of the page, yes? and one of them contained a link to Langton's loop implemented in a java applet on a cool site about artificial life. I watched it and wasn't very fascinated at first, but I figured that I should check out the rest of the site because it seemed to be a very approachable introduction to something that I am very fascinated with: artificial life!
The site proved more fascinating than I had expected! As did the subject. Pretty soon I was watching little java applets of Conway's Game of Life (and, better still, downloading the source and reading that: so simple to implement!). I had previously made a similar program, though mine was significantly less sophisticated: it dealt with a-life on the level of individuals rather than cellularly (though, it must be said, my implementation did exhibit some emergent behaviour (most astonishingly: seasonal migration patterns!) as well as tending towards uniformity (everyone dead or endless reproduction) or periods of homeostasis, depending on the seed) and used collision detection to represent their interactions instead of a grid*. Needless to say: fascinating!
Then, suddenly and unexpectedly, I stumbled upon the new sexy. From the website, "Using only two rules Conway’s Game of Life demonstrates enough complexity to be classified as a universal machine." This totally blew my mind: at first I wasn't sure what universal machine meant, but after some wikipedia reading and another question on stackoverflow I was pretty sure I understood. So cool! I even got a sweet link to another java applet implementing the logical operators AND, NOT, and OR (and XOR) in Life (as well as a hyper-cool paper describing the whole thing, how it's done and what makes it possible. Ziggy's first time reading about logic gates OK guys?).
(I have just been served an unexpected plate of black pasta? I previously didn't believe it to exist and must now explore it's flavor... conclusions: inky and delicious!)
Afterwards, when I felt I had a grasp on what universal machine and Turing complete meant, I had a little chuckle and fondly recalled a particularly mystifying XKCD that dealt with a similar, life driven, machine. Actually, I think this Turing completeness is a pretty hilarious idea. I started to imagine machines that would harness real life forms instead of artificial ones. Consider a machine that contained crabs whose behaviour could be predicted with enough accuracy that they could be made to solve problems. They would scuttle back and forth, finding something worth picking up, ignoring little stones and scuttling about for a while, and then being startled by a (high-res) picture of an octopus, dropping whatever they had been carrying and scuttling away (a predictable distance) down the long corridor that made up their duty. Maybe microbes could do the job more efficiently than crabs? Maybe bacteria?
Imagining, as I tend to nowadays, that anything I can dream up was dreamed up two decades ago and is now an emerging technology, I googled organic computation. No luck, unfortunately that term is taken. I tried a couple more search terms, including biological computation, and what I finally found was astonishing: DNA computation! Not only am I beat to the starting line by some old-timers, but the technology has been refined to the point that science-fiction authors will have to jog to keep up. Imagine for me a computer in a jar? A clear liquid invisibly solving the traveling salesman problem? This is exactly what I am talking about. Computation is done in massive parallel by enzymes, information is stored in strands of DNA, and together they make a universal machine that can compute some kinds of functions 100,000 times faster than the fastest modern computers. And the technology is, of course, as old as I am. Fantastic!
Honest to god this is something I could not have imagined only a few scant months ago. If you had told me that DNA was being used in simple computers, I would have been like "ambiguity! what nonsense! define for me your 'computer'!"
z.
* the result being that the program slows down significantly as the number of individuals increased... I make collision algorithms painful!