Los lenguajes de programación han sido creados para facilitar la vida a los que codifican las ideas que después se convierten en software que hace algo útil o divertido. Estos lenguajes son en general de alto nivel, es decir, semejan estructuras parecidas al hablar/escribir en un idioma como el inglés. Por ejemplo, tenemos la instrucción “write” en Pascal, la cual finalmente nos permite desplegar en la pantalla un letrero. Igualmente podemos hacer que la máquina repita una serie de instrucciones una y otra vez a través de estructuras como Repeat-Until, Do-While y For. Esto es -en alguna medida- semejante al inglés y en principio resulta más simple que aprenderse instrucciones en hexadecimal (o binario), o incluso sus “mnemónicos” como LDA, STB, JMP, etcétera.
Con los años hemos visto avances notables en los lenguajes de programación, porque cada vez encapsulan más ideas y los hacen más poderosos. Además, las interfaces con el usuario han mejorado considerablemente y los depuradores (debuggers) son ahora muy, pero muy poderosos. Aparte de ello, los compiladores, traductores de código de alto nivel, código fuente, a código de bajo nivel, binario, que es el que entiende la computadora, también han mejorado considerablemente y ahora cualquier estudiante de licenciatura en ciencias de la computación puede escribir un compilador elemental sí, pero completo.
Turbo Pascal de Borland fue por muchos años el más exitoso de los compiladores en el mercado. La versión inicial comprimía en unos 50 KBytes un editor, compilador y ligador (linker), para crear archivos ejecutables. Con el tiempo, el sistema creció y el editor se volvió mucho más poderoso, permitiendo colorizar las palabras del lenguaje, los comentarios, etcétera, haciendo que la edición fuese más simple porque era fácil detectar un error con esta idea de colorear los diferentes textos dependiendo a l que hacía referencia. El compilador empezó a poder crear código .exe en lugar de los antiguos .com y además, su velocidad de compilación era indiscutible, Ningún otro compilador lo hacía mejor y tan rápido como Turbo Pascal.
Con el tiempo Turbo Pascal incorporó la tecnología de orientación a objetos y se convirtió en un popular lenguaje en donde se podía desarrollar todo tipo de programas. Pascal originalmente fue creado a fines de los años 60s por el científico suizo Niklaus Wirth. Lo bautizó así en honor a Blas Pascal, el filósofo y matemático francés. Cabe señalar que Wirth diseñó el lenguaje para enseñar la disciplina de la programación. Se basó en el lenguaje AlgoL (ALGOrithmic Language) y propuso una serie de estructuras de datos de forma que los alumnos aprenderían a programar en un lenguaje en donde todo debía ser definido antes de poder usado, haciendo que el estudiante de programación empezara con una estructura mental muy clara.
Hubo con el tiempo muchos compiladores de Pascal. Para la Apple II se tuvo el popular UCSD Pascal, IP Pascal y Lisa Pascal. En 1980 Anders Hejlsberg desarrolló Blue Label Pascal, que se ofreció en la plataforma PC con diferentes nombres. Eventualmente fue licenciado a la empresa Borland, quien le añadió el editor y la interfaz con el usuario y le cambio el nombre a Turbo Pascal. El sistema costaba menos de 50 dólares. Una ganga en ese entonces y hoy en día.
El compilador era muy rápido, pues estaba escrito en ensamblador, además de un editor interactivo simple pero que permitía un desarrollo rápido, convirtieron a Turbo Pascal en uno de los compiladores más populares de todos los tiempos. La última versión de Turbo Pascal se llamó Borland Pascal y fue la versión 7.
¿Pero cómo es que trabaja Turbo Pascal? Considerando que ya “desapareció” de las computadoras con la llegada de Delphi, que no es otra cosa de Turbo Pascal para Windows, podría uno pensar que ya todo ese código se guardó en un cajón o simplemente se tiró, porque ¿a quién podría servirle? Igor Funa (*), que programó por años en Turbo Pascal decidió escribir un compilador de Turbo Pascal en Turbo Pascal. El ambiente de programación no le interesaba y así podía concentrarse simplemente en crear el mismo código que generaba Turbo Pascal.
Eventualmente Funa halló la manera de crear un compilador que generaba el código del Turbo Pascal original y además, sí entendió la parte interna del desarrollo del lenguaje en cuestión. Con todo esto que aprendió hizo una página (ver referencias), en donde muestra el trabajo interno de Turbo Pascal.
Así entonces, quien se interese por este tema podrá ver los secretos del compilador. Las funciones más importantes, las cuales el autor documentó a detalle. Es importante aclarar que esta es una aproximación. Turbo Pascal no se escribió originalmente en Turbo Pascal, pero el autor de este sitio web nos da muchísima información sobre cómo funciona la teoría de la compilación de un programa de esta naturaleza.
Funa concluye: “Cada compilador es una sinfonía de estructuras de datos y algoritmos y Turbo Pascal no es la excepción”.
(*) Si se desea el código fuente (en Turbo Pascal), del compilador, se puede conseguir por unos 50 dólares por la versión de 16 bits y 150 dólares por la versión de 32 bits. Para más de uno esto podrá ser muy costoso, pero para quien de verdad quiera saber cómo es que se construye un compilador, el costo es realmente una inversión.
Referencias: