El sistema de Laning y Zierler (a veces llamado "George" por sus usuarios) fue el primer compilador algebraico operativo , es decir, un sistema capaz de aceptar fórmulas matemáticas en notación algebraica y producir código máquina equivalente (aún no se había inventado el término compilador y se hacía referencia al sistema como "un programa interpretativo "). Fue implementado en 1952 [1] para el MIT WHIRLWIND por J. Halcombe Laning y Neal Zierler. Le anteceden compiladores no algebraicos como el UNIVAC A-0.
El sistema aceptaba fórmulas en una notación más o menos algebraica, respetaba las reglas estándar de precedencia de operadores , permitía paréntesis anidados y utilizaba superíndices para indicar exponentes . Fue uno de los primeros sistemas de programación en permitir nombres simbólicos de variables y asignar almacenamiento automáticamente.
El sistema también automatizó las siguientes tareas: cálculo de punto flotante , enlace a subrutinas para las funciones básicas de análisis (seno, etc.) e impresión, y matrices e indexación.
El sistema aceptaba entradas en cinta perforada producidas por una Friden Flexowriter . El conjunto de caracteres en uso en la instalación Whirlwind incluía dígitos en " mayúsculas " (superíndices) y un guión, que se usaban para indicar índices de matrices, códigos de función y exponentes (enteros). Al igual que otras notaciones de programación de su tiempo, el sistema solo aceptaba nombres de variables de una sola letra y la multiplicación se indicaba mediante la yuxtaposición de operandos. Un punto en relieve estaba disponible para indicar la multiplicación explícitamente (¡el carácter se creó limando la mitad inferior de los dos puntos!). El sistema también incluía soporte para la solución de ecuaciones diferenciales lineales mediante el método de Runge-Kutta .
El sistema se describía en un manual mecanografiado de 18 páginas, escrito para personas familiarizadas con las matemáticas pero que tal vez no con las computadoras. No contenía prácticamente nada que se pudiera considerar como una introducción al hardware de las computadoras.
El siguiente ejemplo, tomado de la página 11 del manual del sistema, evalúa el uso de la expansión de la serie de Taylor . La implementación no es demasiado eficiente y el sistema ya la incluye en su biblioteca de subrutinas, pero el ejemplo sirve para dar una idea de la sintaxis del sistema. Nótese que la división en el sistema se evalúa después de la multiplicación y que CP 1 es una rama condicional a la ecuación 1 si la última cantidad calculada es negativa:
x = 0, 1 z = 1 - x 2 /2 + x 4 /2·3·4 - x 6 /2·3·4·5·6 + x 8 /2·3·4·5·6·7·8 - x 10 /2·3·4·5·6·7·8·9·10, IMPRIMIR x , z . x = x + .1, e = x - 1.05, CP1, DETENER
Se escribieron pocas aplicaciones para el sistema. Una aplicación documentada, creada por los propios Laning y Zierler, involucraba un problema de aeronáutica. [ cita requerida ] El problema requería siete sistemas de ecuaciones diferenciales para ser expresado, y había sido entregado al Whirlwind porque era demasiado grande para que el Analizador Diferencial del MIT lo manejara. Los autores, explotando la característica Runge-Kutta de su sistema de programación, produjeron un programa de 97 declaraciones en dos horas y media. El programa se ejecutó exitosamente la primera vez.
Algunas fuentes han afirmado que el sistema de Laning y Zierler fue la inspiración para FORTRAN . El propio John W. Backus admitió haber contribuido a esta idea errónea:
El efecto del sistema de Laning y Zierler en el desarrollo de FORTRAN es una cuestión que ha sido confusa debido a muchas afirmaciones erróneas por mi parte. Durante muchos años creí que habíamos obtenido la idea de utilizar la notación algebraica en FORTRAN después de ver una demostración del sistema de Laning y Zierler en el MIT. (Backus [2] )
Después de revisar la documentación de la época, Backus se enteró de que el proyecto FORTRAN estaba "en marcha" cuando él y su equipo tuvieron la oportunidad de ver el trabajo de Laning y Zierler:
[Y] estábamos considerando ya una entrada algebraica considerablemente más sofisticada que la del sistema de Laning y Zierler cuando oímos hablar por primera vez de su trabajo pionero... [E]s difícil saber qué ideas nuevas obtuvimos, si es que obtuvimos alguna, al ver la demostración de su sistema. (Backus [2] )