Ir al contenido principal

Language Design and Implementation using Ruby and the Interpreter Pattern

Éste artículo me pareció muy interesante y sobretodo muy educativo, ya que habla principalmente sobre un Framework llamado S-Expression Interpreter Framework que es un DSL que involucra el uso de lenguajes Ruby y permite construir S-Expressions como lenguajes funcionales (que para este punto de la carrera ya lleve una materia en el que ya puedo comprender más el propósito, la sintaxis y sobre todo un poco el ambiente en el que se se desarrollan estos lenguajes) como Lisp, Clojure etc mediante la implementación del patrón de intérprete

A decir verdad Ruby es un lenguaje completamente nuevo para mí, ya que nunca había programado en este lenguaje, de hecho si había escuchado hablar de lenguaje que se está tornando popular y es por eso que en este artículo se menciona que se usa como parte educativa, pero jamás he programado en él y no conocía muchas de las características que tenía este lenguaje por lo que resulta muy interesante la implementación del patrón de intérprete en este lenguaje relativamente nuevo para mi.

El autor, Ariel Ortiz, es muy claro en su artículo sobre los diferentes bloques que proporciona S-expression Interpreter Framework (SIF) y cómo estos bloques facilitan la construcción de un intérprete escalable.

El Framework comienza a hacer su trabajo al leer un programa fuente que se representará como una cadena. La API de expresiones regulares se usa para escanear la entrada y un analizador recursivo escrito a mano realiza el análisis sintáctico que transforma las S-expression en los valores equivalentes en Ruby, luego se construye el árbol. Ruby ayuda con varias características como el recolector de basura, clases abiertas y expresiones regulares que son muy útiles al realizar análisis léxico.

Y hablando un poco más allá de la declaración anterior donde dije que se menciona en la escalabilidad una de las cosas más intrigantes e importantes es que el SIF se puede extender de diferentes maneras que abren muchas posibilidades de diferentes paradigmas como la programación funcional y la programación imperativa, que a decir verdad fue la primera vez que escuché este tipo de programación cuando leí el artículo y me pareció interesante conocer un nuevo paradigma que no sea el de orientado objetos o el funcional a los cuales yo estoy muy familiarizado.

Por otro lado, me parece muy interesante que, complementando el carácter técnico del artículo y la explicación del SIF, el autor establece un objetivo muy claro de utilizar este Framework como una herramienta educativa que permita al estudiante aplicar diferentes conceptos de programación.

Esta lectura es muy interesante y útil para construir nuestro compilador para el curso. Agrego el link del articulo que es muy interesante y muy descriptivo

Language Design and Implementation using Ruby and the Interpreter Pattern

Comentarios

Entradas más populares de este blog

Building Server-Side Web Language Processors

Después de leer este artículo estoy completamente de acuerdo con la idea y la visión general del autor Ariel Ortiz, en este artículo que nos presentó sobre los beneficios de usar un enfoque web para desarrollar un procesador de lenguaje donde se nos explica como a veces es más interesante ver un compilador funcionando en un enfoque web que en la propia terminal. Sólo que el único inconveniente es que el nivel de complejidad del proyecto va a aumentar donde necesitaremos de tiempo extra y material extra, sin embargo los resultados pueden ser muy gratificantes. Fuera de la complejidad y ampliando los beneficios del enfoque web puedo visualizar que este proyecto puede contribuir al desarrollo de habilidades útiles por parte de los estudiantes, ya que el desarrollo web es una de las áreas más destacadas de la programación así como una de las más necesitadas debido a que todos se están mudando de manera prácticamente en Internet. Además como otro beneficio y siento que es algo fundamental e

Internals of GCC

La cosa más interesante que se me vino a la mente después de escuchar este podcast es sobre la tendencia de qué los procesadores deben tener más núcleos para abordar mejor las tareas para la paralelización por lo que los compiladores deben de cambiar para aprovechar mejor los avances tecnológicos y creo que se está logrando bastante rápido con nuestra arquitectura x86 La modularidad de los componentes de GCC también es bastante impresionante y tienen sentido, en un extremo  lo que cambia es el lenguaje que estamos leyendo e interpretando y una vez que llegamos a una estructura universal el proceso del compilador GCC debería ser el mismo y el front-end y el back-end podrían ser intercambiables mientras que el medio sigue siendo el mismo por lo que me viene la mente mucho los bloques que usamos para construir compiladores e intérpretes los primeros que vimos en clase Una de las cosas que mencionó el entrevistado que me pareció muy curiosa es que cuando la representación del árbol no exis