Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
1961 жылғы бағдарламалау ойыны
1961 programming game
Дарвин – 1961 жылдың тамызында Виктор А. Виссоцкий, Роберт Моррис аға және М. Дуглас Макилрой жасаған бағдарламалау ойыны. (Деннис Ричи кейде теріс түрде ойдың авторларының бірі ретінде көрсетіледі, бірақ ол қатыспаған.) Ойын Bell Labs зертханасында жасалған және ондағы IBM 7090 эВМ-де ойналған. Ойын бірнеше апта ғана ойналғаннан кейін Моррис «соңғы» бағдарламаны жасады, ол ойынды тоқтатты, себебі одан күштірек нәрсе табуға ешкім қол жеткізе алмады.
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.
Сипаттама
Ойын "төреші" деп аталатын бағдарламадан және компьютер жадының "арена" деп аталатын арнайы бөлімінен тұрады. Ойыншылар жазған екі немесе одан көп кішкентай бағдарламалар осы аренаға жүктелген. Бағдарламалар 7090 машиналық кодымен жазылған және аренадағы басқа орындарына сұрау салу, қарсы бағдарламаларды жою және өздерінің көшірмелері үшін бос жадыны пайдалану үшін төреші ұсынған бірқатар функцияларды шақыра алатын. Ойын белгілі бір уақыт өткен соң немесе тек бір бағдарламаның көшірмелері ғана тірі қалғанда аяқталады. Соңғы тірі қалған бағдарламаны жазған ойыншы жеңімпаз деп жарияланады. Әр бағдарламаның ішінде 20 жад орны (ойынның кейінгі нұсқаларында одан аз) қорғалған деп белгіленуі мүмкін. Егер басқа бағдарлама осы қорғалған орындардың бірін сұрап көрсе, төреші дереу басқаруды сұраған бағдарламаға береді. Бұл бағдарлама өз кезегінде, басқа бағдарламаның қорғалған орнына сұрағанша орындалуын жалғастырады, және т.б. Бағдарламалар өздерін көшіру және орнын ауыстыру үшін жауапты болғанмен, төрешінің рұқсатысыз өздерінен тыс жад орындарын өзгертуге тыйым салынды. Бағдарламалар компьютермен тікелей орындалғандықтан, алдауды болдырмау үшін ешқандай физикалық механизм болған жоқ. Оның орнына, бағдарламалардың бастапқы коды әр ойыннан кейін зерттеу үшін қолжетімді болды, бұл ойыншыларға бір-бірінен үйренуге және қарсыластары алдамағанын тексеруге мүмкіндік берді. Жауларды табуға және өлтіруге қабілетті ең кішкентай бағдарлама шамамен 30 нұсқаудан тұрады. Макилрой 15 нұсқаудан тұратын бағдарламаны жасады, ол жауларды табады және өлтіреді, бірақ көбеймейді; өте қауіпті болмаса да, ол 20 қорғалған нұсқаудан қысқа болғандықтан, оны өлтіруге болмайтын еді. Осы себепті кейінгі ойындарда қорғалған нұсқаулардың саны шектелді. Моррис жасаған "толыққанды өлімге әкелетін" бағдарламада 44 нұсқау бар және бейімделу стратегиясы қолданылған. Ол жау бағдарламасының басталуын сәтті анықтағаннан кейін, осы орыннан сәл алға қарай сұрау салады. Егер ол жауды өлтіре алса, қашықтықты есте сақтап, келесі кездескенде пайдаланады. Егер ол қорғалған орынға тисе, ол басқа қашықтықты таңдайды, ал басқаруды қайта алғанда, кез келген жаңа көшірме сәтті мәнмен басталады. Осылайша Моррис бағдарламасы бірнеше түрге айналды, олардың әрқайсысы нақты жауды өлтіруге арнайы бейімделген.
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, 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, locates enemies and kills 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 has 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 hits a protected location, it will choose a different distance at the very moment it gains control again 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.