Darwin (programming Game)
   HOME

TheInfoList



OR:

Darwin was a
programming game A programming game is a video game that incorporates elements of computer programming, enabling the player to direct otherwise autonomous units within the game to follow commands in a domain-specific programming language, often represented as a v ...
invented in August 1961 by
Victor A. Vyssotsky Victor Alexander Vyssotsky (russian: Виктор Александрович Высотский; February 26, 1931 - December 24, 2012 in Orleans, Massachusetts) son of the astronomers Alexander N. Vyssotsky (Russian) and Emma Vyssotsky ( Americ ...
, Robert Morris Sr., and
M. Douglas McIlroy Malcolm Douglas McIlroy (born 1932) is a mathematician, engineer, and programmer. As of 2019 he is an Adjunct Professor of Computer Science at Dartmouth College. McIlroy is best known for having originally proposed pipeline (Unix), Unix pipelines ...
. ( Dennis Ritchie is sometimes incorrectly cited as a co-author, but was not involved.) The game was developed at
Bell Labs Nokia Bell Labs, originally named Bell Telephone Laboratories (1925–1984), then AT&T Bell Laboratories (1984–1996) and Bell Labs Innovations (1996–2007), is an American industrial Research and development, research and scientific developm ...
, and played on an
IBM 7090 The IBM 7090 is a second-generation transistorized version of the earlier IBM 709 vacuum tube mainframe computer that was designed for "large-scale scientific and technological applications". The 7090 is the fourth member of the IBM 700/7000 se ...
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 code In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ve ...
, 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 In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the w ...
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

* ''
Tron ''Tron'' (stylized as ''TRON'') is a 1982 American science fiction action- adventure film written and directed by Steven Lisberger from a story by Lisberger and Bonnie MacBird. The film stars Jeff Bridges as Kevin Flynn, a computer programmer ...
'', a 1982 film based on a similar concept * ''
Core War ''Core War'' is a 1984 programming game created by D. G. Jones and A. K. Dewdney in which two or more battle programs (called "warriors") compete for control of a virtual computer. These battle programs are written in an abstract assembly languag ...
'', a more modern game with the same concept


References

* Aleph Null. "Computer recreations: Darwin", ''Software: Practice and Experience'', Vol. 2, Issue 1, pp. 93–96 (January/March 1972). * McIlroy, M. D., Morris, R., Vyssotsky, V. A. (1971)
"Darwin, a Game of Survival of the Fittest among Programs"
* Metcalf, John

{{DEFAULTSORT:Darwin (Programming Game) Programming games Digital organisms Video games developed in the United States