Karel el Robot

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Karel el Robot
Falta imagen logo.svg
Desarrollador(es)
Richard E. Pattis, Jim Roberts, Mark Stehlik
Introducing Objects with Karel J. Robot
Información general
Paradigma Programación estructurada
Apareció en 1981
Diseñado por Richard E. Pattis[1] [2]
Última versión estable Karel 0.6 (31 de diciembre de 2000; hace 13 años (2000-12-31))
Implementaciones Educativo
Dialectos Karel
Influido por Pascal
Ha influido a Karel++, Karel J, RUR-PLE
Sistema operativo Multiplataforma
Licencia GPL v2, junio de 1991

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[3] como Pascal.[1] [2] 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 lenguage en sus clases en la Universidad Carnegie Mellon, con el objetivo de que sus estudiantes aprendiesen a pensar de manera ordenada y efeciente. El lenguaje se llamaría después como el escritor checo que introdujo la palabra robot: Karel Čapek, en su obra R.U.R. (Robots Universales Rossum).

Funciona en la mayoría de sistemas basdos en Unix

Karel el Robot es además usado oficialmente como una de las pruebas en la Olimpiada Mexicana de Informática.

Historia[editar]

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[2]

Desde ese entonces ha tenido cambios fundamentales. Jim Roberts (en ese entonces profesor en la Universidad Carnegie Mellon, ahora está jubilado)[4] y Mark Stehlik (profesor en la Universidad Carnegie Mellon, en la Escuela de Ciensas de la Computación),[5] ayudados por Pattis, desarrollaron la segunda versión en 1995, en la cual incluyeron mucho material sobre la descomposición de un programa estructurado.[2] 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 anteriomente 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.[2]

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.[2]

Filosofía[editar]

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.[6] [7]

Karel el Robot[editar]

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á incluída 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 porgramació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 de Norteamérica, 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).[2]

Ejemplo[editar]

Lo siguiente es un ejemplo simple de la sintaxis del lenguaje de programación Karel

INICIO-DE-PROGRAMA
  
  DEFINE giraderecha COMO
  INICIO
    giraizquierda;
    giraizquierda;
    giraizquierda;
  FIN
  
  INICIO-DE-EJECUCION
    REPITE 3 VECES
    INICIO
      giraderecha;
      avanza;
    FIN
    apagar;
  FIN-DE-EJECUCION
  
 FIN-DE PROGRAMA

Karel++ y Karel J Robot[editar]

Captura de pantalla de Karel, software utilizado en la OMI

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.[2]

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 fuciones 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.[2]

Se introduce así, la concurrencia de varios robots, ya que un sólo 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 sólo 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.[2]

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.[2]


Enlaces externos[editar]

  1. Sito de descarga de Karel J. Robot
    1. Nota: el enlace de descarga figura después del formalario en inglés.
    2. Nota: require de un editor de texto y de un entorno de desarrollo integrado (IDE por sus siglas en inglés) como:
      1. JDK (Java Devolepment Kit[8] , por sus siglas en inglés)
      2. BlueJ
      3. Eclipse
      4. JCreator
      5. CodeWarrior
      6. JBuilder
  2. Olimpiada Mexicana de Informática

Referencias[editar]

  1. a b Mitchell, Tom (27 de julio de 2000). Tom Mitchell (ed.): «Karel The Robot» (en inglés). Consultado el 11 de diciembre de 2011.
  2. a b c d e f g h i j k Bergin, Joseph (8 de marzo de 2005). «Karel J Robot» (en inglés). Consultado el 11 de diciembre de 2011.
  3. Mitchell, Tom (27 de julio de 2000). Tom Mitchell (ed.): «Karel The Robot - A robot interpreter - Introduction» (en inglés). Consultado el 11 de diciembre de 2011.
  4. Roberts, Jim. «Jim Robert's Home Page / Teaching Professor (retired)» (en inglés). Consultado el 12 de diciembre de 2011.
  5. Stehlik, Mark (4 de julio de 1996). «Mark Stehlik's Home Page». Consultado el 12 de diciembre de 2011.
  6. Bergin, Joseph (octubre de 1998). «Pedagogical Patterns - Early Bird» (en inglés). Consultado el 12 de diciembre de 2011.
  7. Rodrígues Jiménez, José María (25 de junio de 2009). «Patrones pedegógicos en educación virtual» (pdf). RED. Revista de Educación a Distancia. Universidad de Murcia. Consultado el 12 de diciembre de 2011.
  8. Bergin, Joseph (18 de marzo de 2005). «2 Using the Simulator in Various Environments» [2 Usando el simulador en diferentes entornos]. En Bergin, Joseph. Karel J Robot, Simulator User's Guide [Karel J Robot, Manual del usuario del simulador] (pdf) (en inglés). pp. 3 – 12. «El manual está incluído en la descarga del simulador»