Desde que en el año 1999 asumí la docencia de la materia de Procesadores de Lenguajes, me he empeñado, año tras año, en hacer ver a los alumnos la utilidad de la materia. Para ello me he alejado de la concepción tradicional de explicar esta materia, única y exclusivamente, enfocada en la construcción de Compiladores.
De este modo, aún teniendo como principal objetivo el de introducir y consolidar los principios de funcionamiento de los compiladores e intérpretes, he hecho mucho hincapié en mostrar la utilidad de los conocimientos de la materia para la solución de problemas que requieran una comunicación más o menos compleja y en el que el diseño y especificación de lenguajes específicos del dominio, como técnica de representación de la información estructurada, y de la construcción de sus procesadores asociados, deben ser considerados como una alternativa.
En el antiguo plan de estudio de la Ingeniería Informática la materia tenía carácter troncal (debían cursarla todos los alumnos), una carga de 9 créditos y era de duración anual, lo que nos permitía la realización de prácticas complejas y muy interesantes. En ellas los alumnos debían proponer problemas en el que fuera necesario el diseño de un lenguaje y el desarrollo e implementación de su procesador asociado, así como la realización de alguna acción en base a la entrada. Los alumnos tenían libertad a la hora de proponer el problema.
Dicha libertad a la hora de elegir el problema, así como en la tarea de definición del lenguaje, les permitía realizar trabajos que pudieran ser útiles para su investigación o para su trabajo, en el caso que estuvieran implicados en alguna de dichas actividades, o en general trabajar en algún tema que les resultara atractivo y que les motivara a la hora aprender. Como ejemplos, quiero destacar que las herramientas docentes Proletool y Selfa-Pro tienen sus orígenes en trabajos prácticos de la materia.
En la nueva titulación adaptada al EEES, el Grado en Ingeniería, y su plan de estudio, con cuatro intensificaciones, la materia Procesadores de Lenguajes pasó a ser una materia de la intensificación de Computación, con una carga de 6 créditos y una duración cuatrimestral. La reducción en carga docente y temporal de la materia ha traído consigo algunas modificaciones, las más importantes la reducción de temario y el replanteamiento de las prácticas, ya no podían ser tan complejas.
Para seguir motivando a los alumnos, haciendo útil para ellos los conocimientos de la materia, este curso académico se ha decidido que como trabajo individual los alumnos aprendan un nuevo lenguaje de programación desde la perspectiva del diseñador de su procesador. Es decir, los alumnos deben ser capaces de distinguir y conocer el vocabulario (léxico) del lenguaje, las construcciones (estructuras sintácticas) del lenguaje y su significado (su semántica). En el trabajo práctico en grupo, los alumnos deberán construir el procesador de alguna/s parte/s del lenguaje que se está aprendiendo.
El lenguaje de programación elegido, libremente y de manera consensuada por todos los alumnos, ha sido Ruby, un lenguaje interpretado y orientado a objetos. Espero conseguir el objetivo: motivarles para que mientras aprenden un nuevo lenguaje de programación, aprendan cuál es el trabajo que hace un procesador de lenguajes, y sepan ver su utilidad tanto para aprender nuevos lenguajes de programación como para resolver otro tipo de problemas mediante el uso de lenguajes específicos del dominio y su procesador. ¡Qué así sea! Yo, este curso, voy a aprender un poco de Ruby, me motiva.