Lenguajes y compiladores

Durante mucho tiempo di la materia de «Diseño de Compiladores» y posteriormente la de «Lenguajes de Programación y Compiladores» tras una reforma del programa de estudios de la Maestría en Ciencias en Informática. Esta última materia desapareció después, tras otra revisión y adecuación del programa de estudios (algo que en restrospectiva veo fue un error y de lo que ya escribiré en un futuro próximo).

The Compilation Process
Compilation process overview.

En estas materias tocaba el tema de los paradigmas de cómputo a partir de los cuales se desprendía el diseño o planteamiento de la expresión de lo que sobre éste quería hacerse  para de ahí ir construyendo el lenguaje de programación. Como base de esta exposición tomaba algunos capítulos de ciertos libros, guiando el asunto con una comparación publicada en un artículo del IEEE1.

El Paradigma Basado en Formas

En este artículo se tocaba el modelo dataflow, homónimo de una arquitectura de cómputo desarrollado por el MIT. La descripción del artículo sobre este modelo no era muy amplia por lo que recurría al libro de Mehdi R. Zargham2 para complementar la explicación y algunas cosas que encontraba en la internet3.

Quizás ninguno de mis alumnos haya tenido que desarrollar un compilador o un nuevo lenguaje de programación, pero estoy seguro que muchos de ellos, si no es que todos, en algún momento de su labor informática o de computación, han debido seleccionar una herramienta de programación, buscado optimizar un programa o familiarizarse con algún nuevo lenguaje o herramienta de programación. Varias veces, varios de mis alumnos me preguntaron por qué existía esta materia en el programa de la maestría, pues consideraban que ya todo estaba escrito y hecho en lenguajes de programación (y consideraban que Java era su máxima expresión). De ese entonces para acá, hemos visto como han aparecido, Go, Swift o Julia y otros como R, Python, Objective-C, Erlang, Ocam, y Haskell han ganado popularidad tras una larga historia de crecimiento, y muchas falsas concepciones o mal interpretaciones a su alrededor se han generado. Estoy seguro (si prestaron atención) que mi materia debió servirles.

Adicionalmente, después de muchos años, me reencuentro nuevamente con este concepto, el del dataflow, ahora a través de TensorFlow.Quizás no todos mis alumnos estén trabajando con TensorFlow ahora, pero posiblemente lleguen a hacerlo y quizás entonces entiendan la importancia de aquella materia.

Referencias

  1. A. L. Ambler, M. M. Burnett, & B. A. Zimmerman, “Operational versus definitional: a perspective on programming paradigms”, Computer, p. 28 – 43; IEEE Computer Society; 1992, Vol. 25, Issue 9; USA. URL: https://eravila.files.wordpress.com/2010/02/computer1992090028.pdf.
  2. Mehdi R. Zargham, Computer Architecture. Single and Parallel Systems, Prentice-Hall; New Jersey; USA, 1996. ISBN 0-13-010661-5.
  3. Arvind and David E. Culler. Annual review of computer science vol. 1, 1986. Dataflow Architectures chapter, pages 225–253. 1986. URL: https://apps.dtic.mil/dtic/tr/fulltext/u2/a166235.pdf.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.