acambronero
acambronero
@acambronero@blogpocket.es

Este es el blog federado de Antonio Cambronero, fundador, autor y CEO de Blogpocket. Informático, blogger y profesor, con más de 20 años de experiencia en departamentos de soporte técnico informático, análisis de sistemas, productividad, optimización de procesos, atención al cliente y formación, en empresas multinacionales.

118 publicaciones
51 seguidores

Karel el Robot: rescatando mi proyecto de fin de carrera de 1985 en una app web

En octubre de 1985 presenté mi proyecto de fin de carrera sobre Karel el Robot, un lenguaje de programación educativo creado por Richard Pattis en 1981. Cuarenta años después, he decidido darle una nueva vida convirtiéndolo en una aplicación web interactiva que cualquiera puede usar desde el navegador.

Qué es Karel el Robot

Karel es un robot que vive en un mundo de cuadrícula. Solo sabe hacer cinco cosas: moverse hacia adelante, girar a la derecha o a la izquierda, coger zumbadores del suelo y poner zumbadores de su bolso. Con estas cinco instrucciones básicas, combinadas con condicionales y bucles, se pueden resolver problemas sorprendentemente complejos.

Lo genial de Karel es su simplicidad. No hay variables, no hay tipos de datos, no hay entrada/salida. Solo un robot, una cuadrícula y unas pocas instrucciones. Esto lo convierte en una herramienta perfecta para aprender los fundamentos de la programación: secuencia, selección y repetición, los tres pilares de la programación estructurada.

Por qué he creado esta app

Mi proyecto de fin de carrera fue puramente teórico: una modificación al lenguaje Karel y su gramática formal, incluyendo la especificación completa en castellano. Cuarenta años después, las herramientas web permiten hacer en un solo archivo HTML lo que en 1985 habría requerido un equipo entero y meses de desarrollo.

La motivación es doble. Por un lado, el valor nostálgico y personal de ver ejecutándose aquello que en su día solo existió en papel. Por otro, la convicción de que Karel sigue siendo una de las mejores formas de introducir a alguien en la programación. En una época en la que los entornos de desarrollo son cada vez más complejos, volver a lo esencial tiene un valor enorme.

Qué puede hacer la app

La aplicación se divide en dos paneles. A la izquierda está el mundo: una cuadrícula de 16×16 donde puedes colocar a Karel, poner zumbadores y diseñar el escenario. A la derecha está el editor de código, donde escribes el programa en el lenguaje Karel original en castellano.

Las funcionalidades principales son:

  • Editor de mundo visual: haz clic para colocar a Karel (y clic sobre él para girarlo), pon zumbadores con la herramienta correspondiente, configura cuántos zumbadores lleva Karel en el bolso.
  • Editor de código con soporte de tabulación y programas de ejemplo precargados.
  • Ejecución animada con control de velocidad, modo paso a paso, y detección de errores tanto de sintaxis como de ejecución.
  • Mundos predefinidos con desafíos para que practiques escribiendo tus propios programas.
  • Efectos de sonido con un tono distinto para cada acción, que puedes activar o desactivar.
  • Botón de ayuda con la referencia completa del lenguaje: todas las instrucciones, estructuras de control y condiciones disponibles.
  • Diseño responsive que se adapta a móviles y tablets.

El lenguaje Karel en castellano

La gramática que implementa la app es la de mi proyecto original de 1985, adaptada al castellano. Un programa Karel tiene esta estructura:

PROGRAMA MiPrograma SE DEFINE COMO
    MOVER
    DERECHA
    MOVER
FINPROGRAMA

Las instrucciones de control incluyen condicionales (SI ... ENTONCES ... FINSI), condicionales con alternativa (SI ... ENTONCES ... SINO ... FINSINO), bucles contados (REPETIR N VECES ... FINREPETIR) y bucles condicionales (MIENTRAS ... HACER ... FINMIENTRAS).

Karel puede evaluar condiciones sobre su orientación (MIRANDO AL NORTE, MIRANDO AL SUR, etc.), sobre los zumbadores (ENCIMA DE ZUMBADOR, TIENE ZUMBADORES) y sobre los obstáculos (FRENTE LIBRE). Todas las condiciones tienen su versión negada con NO.

Cómo probarlo

La app está disponible en blogpocket.es/karel. No requiere instalación, no requiere registro, no almacena ningún dato. Es un archivo HTML autocontenido que se ejecuta íntegramente en tu navegador.

Te sugiero empezar cargando uno de los mundos predefinidos desde el menú «Mundos» y escribir un programa que resuelva el desafío propuesto. O simplemente cargar un ejemplo de programa y pulsar «Ejecutar» para ver a Karel en acción.

Tecnología detrás

Toda la app es un único archivo HTML con CSS y JavaScript. No hay servidor, no hay base de datos, no hay dependencias externas más allá de las fuentes tipográficas. El intérprete del lenguaje Karel está implementado desde cero: un lexer que tokeniza el código fuente, un parser que genera un árbol sintáctico abstracto, y un evaluador que ejecuta las instrucciones paso a paso.

Los sonidos se generan con la Web Audio API del navegador, sintetizando tonos en tiempo real sin necesidad de archivos de audio. La cuadrícula se dibuja con Canvas. Todo el código cabe en menos de 1500 líneas.

Mirando al futuro

Esta es la primera versión. En próximas iteraciones planeo añadir ladrillos (paredes internas que Karel no puede atravesar) y procedimientos definidos por el usuario (la capacidad de crear nuevas instrucciones como GIRA180 o AVANZA_HASTA_PARED), que ya estaban contemplados en la gramática original de mi proyecto.

Si eres profesor, estudiante, o simplemente alguien con curiosidad por la programación, te invito a probarlo. Karel lleva cuarenta años enseñando a programar, y sigue siendo tan eficaz como el primer día.