Darwin (juego de programación)


Darwin fue un juego de programación inventado en agosto de 1961 por Victor A. Vyssotsky , Robert Morris Sr. y M. Douglas McIlroy . ( Dennis Ritchie a veces se cita incorrectamente como coautor, pero no participó). El juego se desarrolló en Bell Labs y se jugó en un mainframe IBM 7090 allí. El juego solo se jugó durante unas pocas semanas antes de que Morris desarrollara un programa "definitivo" que finalmente puso fin al juego, ya que nadie logró producir nada que pudiera derrotarlo.

El juego consistía en un programa llamado árbitro y una sección designada de la memoria de la computadora conocida como arena , en la que se cargaban dos o más programas pequeños, escritos por los jugadores. Los programas se escribieron en código de máquina 7090 y podían llamar a una serie de funciones proporcionadas por el árbitro para sondear otras ubicaciones dentro de la arena, eliminar programas opuestos y reclamar memoria vacante para copias de sí mismos.

El juego terminó después de un período de tiempo determinado, o cuando solo quedaban vivas copias de un solo programa. El jugador que escribió el último programa superviviente fue declarado ganador.

Se podrían designar como protegidas hasta 20 ubicaciones de memoria dentro de cada programa (menos en versiones posteriores del juego) . Si uno de estos lugares protegidos fuera examinado por otro programa, el árbitro transferiría inmediatamente el control al programa examinado. Este programa continuaría ejecutándose hasta que, a su vez, probara una ubicación protegida de algún otro programa, y ​​así sucesivamente.

Si bien los programas eran responsables de copiarse y reubicarse a sí mismos, se les prohibió alterar las ubicaciones de la memoria fuera de sí mismos sin el permiso del árbitro. Como los programas fueron ejecutados directamente por la computadora, no existía ningún mecanismo físico para evitar las trampas. En cambio, el código fuente de los programas se puso a disposición para su estudio después de cada juego, lo que permitió a los jugadores aprender unos de otros y verificar que sus oponentes no habían hecho trampa.

El programa más pequeño que podía reproducir, localizar enemigos y matarlos constaba de unas 30 instrucciones. McIlroy desarrolló un programa de 15 instrucciones que podía localizar y matar enemigos pero no reproducirse; si bien no era muy letal, era efectivamente imposible de matar, ya que era más corto que el límite de 20 instrucciones protegidas. En juegos posteriores, el límite de instrucciones protegidas se redujo debido a esto.