Darwin is the earliest programming game, created at Bell Labs in 1961 by Douglas McIlroy, Robert Morris and Victor Vyssotsky. The aim is to write an IBM 7090 program to be the most prolific replicator. Darwin's Umpire provides functions to probe memory, reserve memory and kill opponents.
Programs are loaded into an area of memory known as the arena. Each species of program has a defined starting point and a number of protected locations. The smallest species has the advantage of running first. The functions provided by Darwin are probe, claim and kill. Each function is called with an address and the identity of the calling species. If the address is protected, control transfers to the program at address.
|probe(address,id)||Return the start/end of the memory block at address and the identity of the owner.|
|claim(address,id)||Reserve memory at address. Must be preceded by a probe.|
|kill(address,id)||Deletes the program at address. Must be preceded by a probe.|
The complete specification is available in Darwin, a Game of Survival of the Fittest among Programs.
Douglas McIlroy created an immortal program in 15 instructions. McIlroy's program could find and kill opponents but wasn't capable of reproducing. The smallest program that could reproduce, find and kill opponents was about 30 instructions.
Robert Morris invented a 44 instruction program with an adaptive strategy. When Morris's program found the top of an opponent it probed a small distance inside. If it found an unprotected location the same distance would be used in future. Otherwise it would choose a new distance.
Paul Kline recalls playing Darwin at Iowa State University in Autumn 1973.
- Software: Practice and Experience 2 (Jan-Mar 1972): 93-96. "Computer Recreations: Darwin"
- Computer Language (Apr 1987): 79-86. "Darwin: A survival game for programmers."
- Artificial Life: The Quest for a New Creation. New York: Pantheon Books, 1992. 317-319. .