title: Karel el Robot
text: # Karel el Robot
  
  Karel el Robot es un emulador de un robot, distribuido como software educativo de código abierto dirigido a principiantes en el estudio de lenguajes de programación, dando al iniciado sólidas bases en cuanto al diseño en un ambiente de programación estructurada como Pascal. Fue creado por Richard E. Pattis en su libro Karel The Robot: A Gentle Introduction to the Art of Programming (‘Karel el Robot: Una agradable introducción al arte de la programación’). Pattis usó el lenguaje en sus clases en la Universidad mmlllllCarnegie Mellon, con el objetivo de que sus estudiantes aprendiesen a pensar de manera ordenada y eficiente. El lenguaje toma su nombre del escritor checo Karel Čapek, quien creó la palabra robot para su obra teatral R.U.R. (Robots Universales Rossum).
  Funciona en la mayoría de sistemas basados en Unix
  Karel el Robot es además usado oficialmente como una de las pruebas en la Olimpiada Mexicana de Informática.
  
  # Karel el Robot
  ## Historia
  
  Karel el Robot fue escrito originalmente (en Wiley, Colorado, Estados Unidos; 1981) por Richard E. Pattis (graduado de la Universidad de Stanford, para iniciar a los novatos en la programación estructurada del lenguaje Pascal
  Desde ese entonces ha tenido cambios fundamentales. Jim Roberts (en ese entonces profesor en la Universidad Carnegie Mellon, ahora está jubilado) y Mark Stehlik (profesor en la Universidad Carnegie Mellon, en la Escuela de Ciencias de la Computación), ayudados por Pattis, desarrollaron la segunda versión en 1995, en la cual incluyeron mucho material sobre la descomposición de un programa estructurado. Luego, Joseph Bergin (profesor en la Universidad Pace) escribe los lenguajes Karel++ y Karel J con la participación de otros tres desarrolladores en 1997, realizando cambios sustanciales al libro anteriormente citado arriba de esta sección y generando los libros Karel++: A gentle introduction to the art of Object-Oriented Programming (Karel++: una agradable introducción al área de la Programación Orientada a Objetos) y Karel J Robot: A gentle introducción to the art of Object-Oriented Programming in Java (Karel J Robot: una agradable introducción al arte de la Programación Orientada a Objetos en Java), para introducir a los estudiantes en la programación orientada a objetos en C++ y en Java, repectivamente.
  Desde entonces, el señor Bergin ha escrito para la siguiente versión de Karel el Robot: Karel J. Robot (que puede considerarse la evolución de Karel el Robot), con una sintaxis fuertemente basada en Java, así mismo se le agregaron datos en esta mezcla didáctica. Karel J. Robot, se publica únicamente en la página web que se encuentra más abajo en la sección enlaces externos de este mismo artículo.
  
  # Karel el Robot
  ## Filosofía
  
  Todas las versiones de Karel se basan en un conjunto de patrones pedagógicos para la educación virtual, creados por el señor Bergin, siendo el más importante el método Early Bird; este patrón sugiere que en el diseño de un curso de la materia que se enseña, se ha de encontrar la idea más importante y empezar con eso.
  
  # Karel el Robot
  ## Karel el Robot
  
  En Karel el Robot originario de Karel J Robot, la idea más importante ha sido el uso de la abstracción de procedimientos, por lo tanto, Karel el Robot inicia con los procedimientos, así los estudiantes ven los procedimientos antes que cualquier otra cosa en el lenguaje Karel. La lengua humana está incluida en los procedimientos (sin parámetros) por esto los estudiantes pueden escribir sus procedimientos para resolver problemas.
  Otro punto clave en la metodología pedagógica de Karel es el uso constante de las metáforas. El concepto de un robot es bien conocido por los estudiantes, lo que facilita homologar un procedimiento de Karel con una visión sobre la programación orientada a objetos, puesto que los robots tienden a comportarse coherentemente con lo que se les ordena, lo que facilita a los estudiantes la comprensión de lo que ocurre en un programa Karel. Esta es una visión mucho más simple para los noviciados que la analogía con la arquitectura de von Neumann y su uso en la oficina de correos de los EE. UU. (la oficina de correos de los Estados Unidos, compró el ordenador UNIVAC I, que fue construido basado en dicha arquitectura) para la comprensión de la memoria de almacenamiento y sus variables, lo que es fundamental para la enseñanza (en cuanto al paradigma de procedimientos se refiere).
  
  # Karel el Robot
  ## Ejemplo
  
  Lo siguiente es un ejemplo simple de la sintaxis del lenguaje de programación Karel
  
  # Karel el Robot
  ## Karel++ y Karel J Robot
  
  En Karel++ y en Karel J Robot, comprender el polimorfismo dinámico es el concepto principal en su enseñanza, sin embargo esto dependende en gran medida de la creación de subclases. Por lo tanto, las clases y las subclases es el primer tema que se enseña con Karel++ y Karel J, para lograr así que los estudiantes escriban sus clases y subclases. Con esto se hace hincapié en la dificultad de programar sin encapsulación basadas en la clase, para luego pasar al polimorfismo propiamente dicho, con esto se logra que la programación orientada a objetos sea más fácil de entender y más natural. Esto se logra a través del énfasis de la encapsulación de clases y, como el robot (objeto), está en control de su código, así éste nunca realiza una acción impuesta, sino que responde a los mensajes. Esta la es la fortaleza de la metáfora del robot.
  En la superficie, Karel++ y Karel J Robot se parecen mucho a Karel el Robot, pero el énfasis constante en el desarrollo de nuevas clases para lograr así nuevas funciones y el carácter activo e independiente del robot, aunado a la posibilidad de utilizar varios robots en el mismo micromundo le da al estudiante una idea muy diferente sobre la naturaleza de la abstracción que el original Karel el Robot.
  Se introduce así, la concurrencia de varios robots, ya que un solo comando de Karel J el Robot y Karel++ necesita mucha explicación, esto no ocurre en Karel el Robot, puesto que siempre hay un único robot. Sin embargo en Karel++ la concurrencia de varios robots se introduce para enfatizar la nataruleza esencial de los objetos. La concurrencia es difícil en C++, por lo tanto Karel++ quedó con un solo subproceso haciendo necesaria la utilización de una metáfora, un tanto forzada, para que parezca natural. Esta restricción fue eliminada en Karel J Robot.
  Curiosamente, la idea de estado mutable, está implícita en la filosofía de Karel. Los robots pueden transitar por un mundo en el que hay paredes y zumbadores, sin embargo no está la noción de estado privado. Por lo tanto, la programación de robots es casi práctica, tanto en el mundo real como en el único estado en el mundo de Karel. Karel J Robot utiliza el estado para mantener las referencias a otros objetos para que se puedan delegar acciones a ellos.