El proyecto Easy-Lang proporciona un intérprete especializado para 'Easy', una notación de enseñanza diseñada para simplificar el estudio de las estructuras de datos abstrayendo las complejidades de los lenguajes de programación modernos. Al centrarse en la lógica algorítmica, la herramienta ayuda a los estudiantes a aprender conceptos fundamentales que se encuentran en el libro de texto de 2007 de Evangel P. Quiwa, el cual rastrea su linaje hasta la notación SPARKS y los cursos universitarios de mediados de la década de 1970.
Sintaxis educativa y rastros de ejecución
Easy-Lang ejecuta programas escritos en la notación 'Easy', la cual prioriza la legibilidad para los estudiantes que aprenden algoritmos. El lenguaje admite estructuras de control estándar como 'while', 'case' y 'repeat', pero utiliza una estructura específica basada en 'procedimientos' donde la ejecución comienza en un bloque 'MAIN' obligatorio.

Esta imagen proporciona un ejemplo visual de la sintaxis específica y la estructura basada en procedimientos utilizada en el intérprete Easy-Lang.
Para ayudar al aprendizaje, el intérprete incluye una bandera '--explain' (o -x). Esto genera un rastreo en el error estándar donde cada paso está precedido por un signo más, mostrando los valores específicos producidos por cada operación, tales como 'lo ← 1' o 'mid ← floor(((lo + hi) / 2))'.
“Un intérprete para Easy, la notación de enseñanza en Evangel P. Quiwa, Data Structures (Manila: Electronics Hobbyists Publishing House, 2007).”
— GitHub - jjuliano/easy-lang: Interpreter for Easy, the teaching notation used in Quiwa's Data Structures.
Preparación para entrevistas y resúmenes de lógica
La herramienta también proporciona un modo '--interview'. En lugar de ejecutar el código, busca el programa en un catálogo para producir un resumen conciso de los pasos clave del algoritmo, la complejidad de tiempo y espacio, y puntos específicos en los que un estudiante debe prestar atención durante una entrevista.
Esta función está diseñada para ayudar a los estudiantes a sintetizar la lógica de una implementación de estructura de datos en un formato adecuado para discusiones técnicas, en lugar de simplemente observar la salida bruta de un programa en ejecución.
Especificaciones técnicas y modelo de memoria
El lenguaje implementa un modelo de datos y memoria específico adaptado para la enseñanza. Por ejemplo, utiliza un grupo de 1024 nodos a menos que se especifique lo contrario, y las direcciones se representan como números enteros que comienzan en 1. Una operación 'GETNODE' fallida detendrá el programa inmediatamente.
Gráfico trazado por HN Digest a partir de cifras reportadas por github.com; los valores se muestran como en la fuente.
Las estructuras de datos como pilas y cadenas se declaran utilizando notaciones específicas. Una estructura 'Pile', por ejemplo, se declara como una combinación de un arreglo de ranuras y una variable 'top'. El intérprete maneja estas como referencias, lo que significa que los parámetros se pasan por referencia y comparten las celdas del llamador.

Esta captura de pantalla muestra una aplicación práctica de la notación para definir estructuras de datos y lógica algorítmica.
La notación incluye operadores específicos para trabajos con enteros, como 'mod' y 'floor', y maneja operaciones de potencia donde un signo menos inicial se aplica a toda la potencia (por ejemplo, -2^2 es -4). También admite división real utilizando el operador '/'.
Alcance y limitaciones
Si bien Easy-Lang es una herramienta poderosa para el aprendizaje conceptual, no es un lenguaje de programación de propósito general. Es estrictamente un intérprete para la notación que se encuentra en el libro de texto de Quiwa y no contiene el contenido completo del libro en sí mismo.
La implementación actual se centra en las quince sesiones del curso de estructuras de datos. Aunque proporciona una forma de ejecutar estos procedimientos específicos, está diseñado para ser una ayuda de enseñanza en lugar de un entorno listo para la producción para construir software complejo.
El material de origen no proporciona pruebas de rendimiento independientes ni comparaciones de la velocidad de ejecución de Easy-Lang frente a lenguajes estándar como Python o C++. Su valor principal reside en su utilidad pedagógica más que en la eficiencia computacional pura.