La elaboración de un modelo de esta naturaleza para un compilador,
constituye una base sólida cuya utilidad se proyecta hacia trabajos futuros.
A partir del modelo, se puede producir un producto de mejor calidad, con un
mayor nivel de organización, más libre de errores y más eficiente en el
desempeño de sus propósitos. Analizar un programa con el afán de mejorarlo
sustancialmente en efecto corresponde con la idea de hacer ingeniería al
revés.
Los altos costos, la necesidad de una referencia fiel para el lenguaje y
el atractivo de disponer de una base adecuada para el desarrollo de nuevos
trabajos, fueron motivos suficientes para realizar esfuerzos orientados a
obtener un programa fuente para el compilador a partir de su binario. Y
mediante su análisis, formular un modelo para la operación del programa,
siempre con la perspectiva de producir un producto mejorado.
El problema de la originalidad del trabajo científico tiene su historia.
Uno de los casos más sonados, surgió en torno a la solución de la
ecuación cúbica. El conflicto se dió entre un profesor y sus alumnos.
Uno de los alumnos reunió todos los elementos del problema que se
encontraban aislados y aportó algunos de ellos, publicó el trabajo sin dar al
profesor ni a los demás participantes los créditos que esperaban. La molestia,
tanto del profesor como de los demás involucrados, fue manifiesta. Al alumno
se le calificó de ingrato, él, por su parte, quedó convencido que había
salvado aquel valioso material para la posteridad. Sin su trabajo, muchos de
aquellos resultados posiblemente se habrían perdido.
El primer compilador de Fortran no se elaboró a partir de nada. En la
definición del lenguaje y en la elaboración del compilador se aprovechó
la experiencia acumulada por mucha gente en la traducción de fórmulas
algebraicas, el indexamiento de elementos de vectores y matrices, en la
aritmética de punto flotante y en la conversión de valores y edición de
resultados.
Por otro lado, el obtener el programa fuente de un programa complicado
-a partir del binario-, analizarlo y documentarlo, puede involucrar tanto o
más trabajo del que fue necesario para producirlo. Para realizar el
desensamble y el análisis de un programa de la complejidad de un compilador,
es necesario el desarollo de muchos y muy variados accesorios. A la vez que
se resuelve el problema de obtener una referencia fiel del lenguaje, se
produce también, una infraestructura de programas accesorios abundante y
variada y se adquiere una considerable experiencia.
Para realizar un trabajo de esta naturaleza es necesaria una mezcla de
capacidad, experiencia, entusiasmo y por encima de todo, un afán por
involucrarse y participar del problema.
El resultado puede ser una copia o un original, depende del criterio. No
hay muchas cosas nuevas en el mundo, pero algunas son más nuevas que otras.
Un ejemplo de esto lo observamos cuando alguien estudia cálculo; comprende
el material y produce su propio libro con su interpretación del tema. El
contenido no es original, no puede serlo, los teoremas son los mismos que se
describen en todos los demás libros, pero su valor se encuentra en el
esfuerzo intelectual y en la interpretación que se aporta del tema.