Darwin (programming game)
Encyclopedia
Darwin was a programming game
invented in August 1961 by Victor A. Vyssotsky
, Robert Morris Sr., and M. Douglas McIlroy. (Dennis Ritchie
is sometimes incorrectly cited as a co-author, but was not involved.) The game was developed at Bell Labs
, and played on an IBM 7090
mainframe there. The game was only played for a few weeks before Morris developed an "ultimate" program that eventually brought the game to an end, as no-one managed to produce anything that could defeat it.
, and could call a number of functions provided by the umpire in order to probe other locations within the arena, kill opposing programs, and claim vacant memory for copies of themselves.
The game ended after a set amount of time, or when copies of only one program remained alive. The player who wrote the last surviving program was declared winner.
Up to 20 memory locations within each program (fewer in later versions of the game) could be designated as protected. If one of these protected locations was probed by another program, the umpire would immediately transfer control to the program that was probed. This program would then continue to execute until it, in turn, probed a protected location of some other program, and so forth.
While the programs were responsible for copying and relocating
themselves, they were forbidden from altering memory locations outside themselves without permission from the umpire. As the programs were executed directly by the computer, there was no physical mechanism in place to prevent cheating. Instead, the source code
for the programs was made available for study after each game, allowing players to learn from each other and to verify that their opponents hadn't cheated.
The smallest program that could reproduce, locate enemies and kill them consisted of about 30 instructions. McIlroy developed a 15-instruction program that could locate and kill enemies but not reproduce; while not very lethal, it was effectively unkillable, as it was shorter than the limit of 20 protected instructions. In later games the limit on protected instructions was lowered because of this.
The "ultimately lethal" program developed by Morris had 44 instructions, and employed an adaptive strategy. Once it successfully located the start of an enemy program, it would probe some small distance ahead of this location. If it succeeded in killing the enemy, it would remember the distance and use it on subsequent encounters. If it instead hit a protected location, then the next time it gained control it chose a different distance. Any new copies were initialized with a successful value. In this way, Morris's program evolved into multiple subspecies, each specifically adapted to kill a particular enemy.
Programming game
A programming game is a computer game where the player has no direct influence on the course of the game. Instead, a computer program or script is written in some domain-specific programming language in order to control the actions of the characters...
invented in August 1961 by Victor A. Vyssotsky
Victor A. Vyssotsky
Victor A. Vyssotsky, son of the astronomers Alexander N. Vyssotsky and Emma Vyssotsky is a mathematician and computer scientist. He was one of the team member of Multics project. Multics, whilst not particularly commercially successful in itself, directly inspired Ken Thompson to develop...
, Robert Morris Sr., and M. Douglas McIlroy. (Dennis Ritchie
Dennis Ritchie
Dennis MacAlistair Ritchie , was an American computer scientist who "helped shape the digital era." He created the C programming language and, with long-time colleague Ken Thompson, the UNIX operating system...
is sometimes incorrectly cited as a co-author, but was not involved.) The game was developed at Bell Labs
Bell Labs
Bell Laboratories is the research and development subsidiary of the French-owned Alcatel-Lucent and previously of the American Telephone & Telegraph Company , half-owned through its Western Electric manufacturing subsidiary.Bell Laboratories operates its...
, and played on an IBM 7090
IBM 7090
The IBM 7090 was a second-generation transistorized version of the earlier IBM 709 vacuum tube mainframe computers and was designed for "large-scale scientific and technological applications". The 7090 was the third member of the IBM 700/7000 series scientific computers. The first 7090 installation...
mainframe there. The game was only played for a few weeks before Morris developed an "ultimate" program that eventually brought the game to an end, as no-one managed to produce anything that could defeat it.
Description
The game consisted of a program called the umpire and a designated section of the computer's memory known as the arena, into which two or more small programs, written by the players, were loaded. The programs were written in 7090 machine codeMachine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...
, and could call a number of functions provided by the umpire in order to probe other locations within the arena, kill opposing programs, and claim vacant memory for copies of themselves.
The game ended after a set amount of time, or when copies of only one program remained alive. The player who wrote the last surviving program was declared winner.
Up to 20 memory locations within each program (fewer in later versions of the game) could be designated as protected. If one of these protected locations was probed by another program, the umpire would immediately transfer control to the program that was probed. This program would then continue to execute until it, in turn, probed a protected location of some other program, and so forth.
While the programs were responsible for copying and relocating
Relocation (computer science)
"Relocation is the process of assigning load addresses to various parts of [a] program and adjusting the code and data in the program to reflect the assigned addresses."...
themselves, they were forbidden from altering memory locations outside themselves without permission from the umpire. As the programs were executed directly by the computer, there was no physical mechanism in place to prevent cheating. Instead, the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
for the programs was made available for study after each game, allowing players to learn from each other and to verify that their opponents hadn't cheated.
The smallest program that could reproduce, locate enemies and kill them consisted of about 30 instructions. McIlroy developed a 15-instruction program that could locate and kill enemies but not reproduce; while not very lethal, it was effectively unkillable, as it was shorter than the limit of 20 protected instructions. In later games the limit on protected instructions was lowered because of this.
The "ultimately lethal" program developed by Morris had 44 instructions, and employed an adaptive strategy. Once it successfully located the start of an enemy program, it would probe some small distance ahead of this location. If it succeeded in killing the enemy, it would remember the distance and use it on subsequent encounters. If it instead hit a protected location, then the next time it gained control it chose a different distance. Any new copies were initialized with a successful value. In this way, Morris's program evolved into multiple subspecies, each specifically adapted to kill a particular enemy.
See also
- TronTron (film)Tron is a 1982 American science fiction film written and directed by Steven Lisberger, and released by Walt Disney Pictures. It stars Jeff Bridges as the protagonist Kevin Flynn; Bruce Boxleitner in a dual role as security program Tron and Tron's "User", computer programmer Alan Bradley; Cindy...
, a 1982 film based on a similar concept - Core WarCore WarCore War is a programming game in which two or more battle programs compete for the control of the "Memory Array Redcode Simulator" virtual computer . These battle programs are written in an abstract assembly language called Redcode...
, a more modern game with the same concept