Drew Endy: So far, we've talked about controlling systems in time & space.
- One extreme: can run autonomously
- Other: runs entirely on external input
Last class: couple different examples of languages
- "Growing point language"
- "Origami language"
- "Crop circle language"
Today, we're going to cover "growing point language". On Thursday, we'll probably do the crop circle language.
Growing point language
Person responsible: Daniel Coore, head of computer science in Jamaica
Randomly distributed cells (see figure 1)
- two dimsensional surface
- independent agents
- local information: cell can sense surrounding area r away, but not really far from itself
- want them to make a pattern
Challenge: invent a programming language that allows you to make patterns like this
How would you imagine wanting to write such a program, in English? (figure 2)
- Arbitrarily initiate/start at the leftmost point
- Create line (L to R)
- Material (line)
- Phermones (signal)
- Create lines (up/down), with length
Three points of external information:
- Point 1 (red)
- Line 1 (blue)
- Line 2 (orange)
Actual program for how "tip" point should move:
(size n-width) #controls thickness of line as it grows
and(dia top-rail)(dia bot-rail)
(when(length<1=terminate) #stops program when length = 0
(default(propogate;length=length-1) #default behavior; propogates and decrements length
(signal name phermone)