Pages

Saturday, November 12, 2011

Primer intérprete prototipo

Tras mucha espera buscando un primer intérprete funcional, conseguí realizar el primero, con éxito satisfactorio, probado con el algoritmo mesopotámico del cálculo de la raíz cuadrada. Con este objetivo de primer intérprete prototipo me volví a apuntar un año más al concurso universitario del software libre, en ésta su sexta edición.

El lenguaje de programación de la aplicación se llama FAV, que son precisamente las iniciales de nuestra aplicación, FreeAlgView. Es de sintáxis inspirada en C, aunque dinámicamente tipado. Las variables no hace falta declararlas, se crean en su primera ocurrencia en una sentencia de asignación (como en Octave).

Y para muestra un botón, el código del algoritmo mesopotámico del cálculo de la raíz cuadrada, que ha sido el usado para probar el intérprete:
aprox ⟸ sqrtMeso(n, aprox)
{
    do
    {
        prevAprox ⟸ aprox;
        aprox ⟸ (n / aprox + aprox) / 2;
    } while (|aprox - prevAprox| > 0.001);
}
El intérprete ahora mismo soporta el tipo entero y real, los operadores de suma, resta, división (real únicamente) y operaciones comparativas <,>,<=,>=. Como único operador unario, por ahora, tenemos el operador de valor absoluto y la sentencia do while. No hay sentencias return (aunque quizás se añada una sentencia de abandono de función).

Tampoco hay, todavía, un mecanismo de control de tipos para los parámetros de entrada, que seguramente se diseñarán para especificarse de forma externa al algoritmo, junto a su fichero de configuración gráfica. De esta forma no se ensucia el algoritmo y queda los más claro posible.

No existen tampoco variables globales, todo serán funciones. Es por un motivo sencillo: FreeAlgView no computa ni crea programas, solamente algoritmos. Y para tal fin, no hacen falta variables globales, ni función main.

No se han enriquecido más las sentencias permitidas del lenguaje porque, ante nada, se quería conseguir un intérprete funcional minimalista para conocer la dinámica interna del intérprete. Una vez programada y conocida la estructura interna del interprete, añadir nuevas sentencias es una tarea mecánica y más sencilla, cosa que buscaba, y encontré.

El uso del interprete es, por ahora, sencillo, en consola solamente hay que ejecutarlo pasándole como parámetros el nombre del script y sus parámetros. Nuestro script recibe dos parámetros, el primero es el número al que se quiere hallar su raíz cuadrada, y el segundo parámetro es cualquier aproximación a él (en nuestro caso hemos pasado como aproximación de la raíz de 25 la cifra 128). La ejecución es como sigue:

user@laptop:~/FreeAlgView$ ./FreeAlgView sqrtMeso.fav 25 128
Out parameters
5

Y efectivamente, la raíz de 25 es 5. El siguiente paso es tener un primer prototipo de visualizador gráfico, y luego, un primero prototipo de personalización. A medida que se consigan estos objetivos, se irán colocando aquí.

No comments:

Post a Comment