A comienzos de los años cincuenta, programar un cálculo científico solía exigir traducir cada fórmula a una larga secuencia de instrucciones específicas de un ordenador. John Backus quiso eliminar ese trabajo mecánico. El equipo que dirigió en IBM creó FORTRAN, un lenguaje que permitía escribir fórmulas reconocibles y traducirlas automáticamente.
El reto no consistía solo en idear una notación legible. Los científicos sabían optimizar ensamblador y desconfiaban de un programa que escribiera código por ellos. Para lograr su adopción, el compilador FORTRAN debía generar programas casi tan rápidos como los de especialistas humanos.
Backus dedicaría después su carrera a otras dos preguntas: cómo describir con rigor la sintaxis de un lenguaje y cómo superar una programación basada en modificar sucesivamente la memoria.
Por qué la programación científica seguía siendo cara
John Warner Backus nació en Filadelfia en 1924. Su recorrido escolar fue irregular y encontró su camino después del servicio militar. Estudió primero medicina, se orientó a las matemáticas y obtuvo un máster en Columbia en 1950.
Ese año visitó IBM y conoció el Selective Sequence Electronic Calculator. Una conversación improvisada desembocó en su contratación. Pronto trabajó en programas matemáticos y en Speedcoding, que simplificaba cálculos en el IBM 701.
Speedcoding aumentaba la productividad, pero la interpretación ralentizaba mucho la ejecución. Cuando el tiempo de máquina era escaso y caro, se seguía usando código máquina o ensamblador pese a las semanas de trabajo y los errores. En 1953, Backus propuso un sistema más ambicioso: escribir fórmulas próximas a la notación matemática y compilarlas eficientemente para el futuro IBM 704.
FORTRAN era tanto un compilador como un lenguaje
Backus reunió un equipo con conocimientos de matemáticas, programación y arquitectura. Incluía a Harlan Herrick, Irving Ziller, Peter Sheridan, Roy Nutt, Robert Nelson y Lois Haibt. Nadie podía diseñar por sí solo el lenguaje, optimizar el compilador y probar todos los cálculos.
FORTRAN procede de Formula Translation. Expresaba aritmética, bucles y saltos sin manipular códigos del IBM 704. Una instrucción describía el cálculo; el compilador elegía las operaciones de máquina.
La traducción debía conservar el rendimiento. El equipo desarrolló técnicas de análisis y optimización para organizar cálculos y registros. Construir el primer compilador llevó años y produjo un programa excepcionalmente grande para la época.
Cuando FORTRAN se entregó en 1957, su eficiencia debilitó el principal argumento a favor del ensamblador. Los científicos pudieron centrarse en modelos matemáticos, producir programas antes y adaptar gradualmente el lenguaje a otras máquinas.
Un éxito colectivo que cambió la economía del software
Presentar a Backus como único creador sería engañoso. Propuso y dirigió el proyecto y participó en el diseño, pero lenguaje y compilador fueron logros colectivos de IBM.
Su papel decisivo consistió en mantener dos objetivos difíciles: acercar el código a las matemáticas sin renunciar a la velocidad. El éxito demostró que un lenguaje de alto nivel podía servir para cálculos reales.
FORTRAN se difundió por laboratorios, industria y universidades. El código científico podía vivir más que el ordenador para el que se escribió. Las versiones posteriores mejoraron portabilidad, estructura y dominios sin abandonar un gran patrimonio numérico. La historia de FORTRAN sigue esa evolución; esta biografía explica el problema inicial de hacer creíble la traducción automática.
Describir la gramática de un lenguaje
Después de FORTRAN, Backus participó en las discusiones sobre ALGOL 58 y ALGOL 60. Los diseñadores necesitaban indicar sin ambigüedad qué secuencias formaban programas válidos.
El lenguaje corriente no bastaba. Backus propuso una notación formal cuyas categorías sintácticas se definían mediante reglas de sustitución. Peter Naur la adaptó para el informe de ALGOL 60 y se convirtió en la forma de Backus-Naur, o BNF.
Una regla puede indicar que una expresión es un número o dos expresiones unidas por un operador. Su aplicación recursiva describe infinitos programas con un conjunto finito de producciones. La BNF separa la sintaxis —la forma permitida— de la implementación que la analiza y ejecuta. Sus variantes aún documentan lenguajes, formatos y protocolos.
Cuestionar el modelo que había ayudado a difundir
FORTRAN mejoró profundamente la programación imperativa: un programa lee y modifica valores almacenados, instrucción tras instrucción. Backus acabó considerando que este modelo seguía demasiado ligado al ordenador de programa almacenado.
En su conferencia Turing de 1977, Can Programming Be Liberated from the von Neumann Style?, criticó el cuello de botella de von Neumann. Los programas trasladan valores entre procesador y memoria y su razonamiento depende de cambios de estado sucesivos.
Backus presentó FP, un sistema basado en componer funciones. En lugar de detallar cada actualización, combinaba transformaciones para facilitar el razonamiento matemático. FP no sustituyó a los lenguajes imperativos, pero su importancia intelectual es notable: quien dirigió uno de sus primeros éxitos también mostró sus límites, junto a la tradición funcional del Lisp de John McCarthy.
Componer programas en vez de gestionar cada estado
La propuesta no se limitaba a añadir funciones a un lenguaje imperativo. FP utilizaba formas funcionales: composición, construcción de pares, aplicación de una operación a todos los elementos y reducción de una secuencia.
Para sumar cuadrados, un programa imperativo crea un total, recorre una lista y lo actualiza. Una descripción compositiva eleva cada elemento al cuadrado y reduce los resultados mediante suma. Expresa relaciones entre transformaciones, no el orden detallado de las asignaciones.
Backus esperaba razonar mediante leyes algebraicas: composiciones equivalentes podrían sustituirse sin seguir cada estado intermedio. Esta ambición anticipó optimizaciones y paralelización de cadenas de datos, aunque FP tuvo poca adopción.
Su crítica afectaba tanto a la arquitectura intelectual como al tráfico entre procesador y memoria. Elevar la abstracción exigía dar prioridad a las transformaciones y su composición.
Un legado más allá de FORTRAN
Backus recibió el Premio Turing en 1977 por sus aportaciones a los lenguajes de alto nivel, la compilación y la especificación. Siguió como IBM Fellow hasta jubilarse en 1991 y murió en 2007.
Su legado conecta tres niveles. FORTRAN demostró que la abstracción podía producir código eficiente. La BNF definió con precisión la forma de un lenguaje. FP preguntó si la estructura dominante de los programas era realmente la mejor.
Los compiladores modernos prolongan el primer reto; las gramáticas formales, el segundo; la programación funcional, el tercero. Backus no solo acercó el código a las matemáticas: interrogó sucesivamente la traducción, la descripción y la estructura de los programas.
Cronología
- 1924: John Warner Backus nace en Filadelfia.
- 1950: obtiene un máster en Columbia y entra en IBM.
- Principios de los años 1950: desarrolla Speedcoding para el IBM 701.
- 1953: propone traducir fórmulas para el IBM 704.
- 1954: se constituye el equipo de FORTRAN.
- 1957: se entrega el primer compilador FORTRAN.
- 1958–1960: contribuye a ALGOL y a la notación que será la BNF.
- 1963: es nombrado IBM Fellow.
- 1977: recibe el Premio Turing y critica el estilo de von Neumann.
- 1978: su conferencia y FP aparecen en Communications of the ACM.
- Años 1970–1980: investiga FP y programación funcional.
- 1991: se jubila de IBM.
- 2007: fallece en Ashland, Oregón.
- Hoy: FORTRAN, las gramáticas formales y la composición funcional prolongan tres dimensiones de su trabajo.
Preguntas frecuentes
¿Creó John Backus FORTRAN él solo?
No. Propuso y dirigió el proyecto de IBM, pero lenguaje y compilador fueron obra del equipo. Sus conocimientos combinados produjeron código eficiente para convencer a los usuarios.
¿Por qué fue tan importante el primer compilador FORTRAN?
Un lenguaje legible habría fracasado si sus programas fueran mucho más lentos que el ensamblador. La optimización mostró que la traducción automática podía aportar productividad y rendimiento.
¿Inventó Backus la BNF él solo?
Propuso la notación inicial para ALGOL; Peter Naur la adaptó para el informe ALGOL 60. El nombre forma de Backus-Naur reconoce esa sucesión de aportaciones.
¿Se sigue utilizando FORTRAN?
Sí. Sus versiones modernas siguen presentes en cálculo científico y programas con grandes bibliotecas numéricas probadas. El lenguaje actual difiere mucho del de 1957.
¿Por qué criticó Backus la programación imperativa?
Consideraba difícil combinar y razonar sobre programas centrados en modificar memoria. FP exploró la composición de funciones en lugar de secuencias de asignaciones.
¿Qué relación existe entre Backus y Grace Hopper?
Ambos equipos intentaron alejar a los programadores del código máquina. FORTRAN se orientó al cálculo científico; FLOW-MATIC y COBOL al tratamiento comercial.