Language
Growth
Replace every character with a longer string, and read the result as a plant.
Aristid Lindenmayer, 1968
What is going on here
Aristid Lindenmayer was a biologist, not a computer scientist. He studied filamentous algae and was looking for a notation for the way such a filament branches. What he wrote down in 1968 was a grammar: a handful of replacement rules that you keep applying to their own output. Every character is replaced in a single sweep — all cells divide at the same time, exactly as they do in tissue.
The pleasure is in the sizes involved. The fern above is fully specified by two rules: X becomes F+[[X]-X]-F[-FX]+X and F becomes FF. Six generations later that is a string of tens of thousands of characters, and drawn out it is a frond with fronds with fronds. The description is shorter than the drawing by a wide margin, which is precisely what a seed manages too.
Branching is the whole trick, and it lives in the brackets. A [ remembers where the turtle stands and which way it faces; a ] puts it back there. Without brackets you get curves — the snowflake, the dragon curve — with brackets you get plants. That is the difference between a line and an organism, expressed in two punctuation marks.
Set the jitter to zero and the same system yields exactly the same plant every time. That is the unsatisfying thing about a mathematical fern, and the reason the dial sits beside it: a little noise on every turn, and out come two ferns that are plainly related and still not the same.