La programación de computadoras es una actividad fascinante. El decirle a la máquina qué hacer de forma que no haya ambigüedad es en muchos sentidos un arte y una ciencia. Por ello se pasan algunos años en las universidades, para poder entender y aplicar las técnicas más comunes en este asunto que es el programar máquinas.
Hoy en día se programa en lenguajes de alto nivel y el código en ensamblador (de bajo nivel y por ende, difícil de usar), se ha dejado solamente para los casos de necesitar hacer algún proceso en la computadora que debe realizarse muy rápidamente. Sin embargo, en los años ochenta del siglo pasado, pensar en usar ensamblador no era algo para unos pocos y de hecho, era algo más común de lo que pensamos.
Silas Warner
La realidad es que las computadoras de esos años eran de 8 bits, con procesadores que corrían a 1 ó 2 MegaHertz, que comparado con las máquinas actuales, que corren a GigaHertz, se nos hacen hasta primitivas. La necesidad de ese entonces de hacer procesos más rápidos obligaban a usar ensamblador y evidentemente esto exigía entender más íntimamente el procesador que se usaba, los registros internos, las instrucciones de control, etcétera. Por ello, cuando Silas Warner (que murió en el 2004), escribió RobotWar, originalmente para el sistema de cómputo PLATO, aunque se trataba de un juego, en el fondo era un sistema para aprender los conceptos de la programación a nivel ensamblador.
El juego original de los años setenta se portó a una Apple II y fue publicado por la empresa MUSE en 1981. El juego es una batalla entre robots que se programan en un lenguaje particular en donde se toman en cuenta las características de los robots: registro de velocidad, del radar, de los daños recibidos, del disparar a otros robots, del movimiento de los robots, etcétera. Una descripción de todas las instrucciones, variables, estructuras de control, etcétera, pueden verse aquí. Así, cada usuario programa su propio robot y cuando los programas son cargados a la memoria, se puede ver la batalla en acción. Gana, desde luego, el robot que sobreviva sobre los demás.
RobotWar fue un éxito en muchas comunidades, particularmente las académicas. Por ejemplo, en el Instituto de Investigaciones Antropológicas de la UNAM se hacían torneos de RobotWar con regularidad en los años ochenta. Los académicos se divertían, sin duda, y el reto era crear el mejor robot que venciera a los que se presentaran a la batalla.
Un video de alguna de estas batallas puede verse aquí:
Evidentemente parece aburrido, pero cuando se jugaba contra otros programadores de robots, se creaba un ambiente de lucha, de competencia, inigualable, a la par que se empezaba a entender la programación de bajo nivel.
La idea de RobotWar no ha desaparecido y existen trabajos relacionados al respecto:
Color Robot Battle, para la computadora TRS-80 de color, que salió a la luz pública el mismo año que RobotWar de Apple II.
RoboWar, un juego similar, disponible para la Mac y ahora disponible también para Windows.
Crobots es un juego relacionado que usa una versión simplificada del lenguaje de programación C para programar a los robots. En CRobots la batalla se despliega con caracteres ASCII.
MindRover, es una implementación reciente de conceptos tomados de RobotWar y Roboit Odyssey,aunque con un nuevo paradigma incluido, basado en componentes múltiples y circuitos, más que en programación.
RoboCode es la idea de RobotWar implementada en Java (código abierto) y con soporte (al menos hasta el 2001).