Lenguaje de programación
ALGOL 58 , originalmente llamado IAL , es uno de los lenguajes de programación de la familia ALGOL . Fue un diseño de compromiso temprano que pronto fue reemplazado por ALGOL 60. Según John Backus :
La Conferencia ACM-GAMM de Zurich tuvo dos motivos principales al proponer el IAL: (a) Proporcionar un medio para comunicar métodos numéricos y otros procedimientos entre personas, y (b) Proporcionar un medio para realizar un proceso establecido en una variedad de máquinas... [2]
ALGOL 58 introdujo la noción fundamental de la declaración compuesta , pero estaba restringida únicamente al flujo de control y no estaba vinculada al alcance del identificador como lo estaban los bloques de Algol 60 .
Nombre
Bauer atribuye el nombre a Hermann Bottenbruch , quien acuñó el término lenguaje algorítmico (algorithmische Sprache) en 1957, "al menos en Alemania". [3] [4]
Historia
La Asociación de Maquinaria de Computación (ACM) y la Sociedad Alemana de Matemática Aplicada y Mecánica (GAMM) propusieron un lenguaje universal . Se decidió organizar una reunión conjunta para reunirlas. La reunión tuvo lugar del 27 de mayo al 2 de junio de 1958 en la ETH de Zúrich y contó con la participación de las siguientes personas:
Originalmente se propuso que el lenguaje se llamara IAL ( Lenguaje Algebraico Internacional ), pero según Perlis, [5]
esta idea fue rechazada por ser un acrónimo "impronunciable" y pomposo. En su lugar se sugirió ALGOL, aunque no se adoptó oficialmente hasta un año después. La publicación posterior a la reunión todavía utilizaba el nombre IAL. [6]
A finales de 1958, el grupo ZMMD había creado un compilador ALGOL 58 funcional para el ordenador Z22 . ZMMD era la abreviatura de Zúrich (donde trabajaba Rutishauser), Múnich (lugar de trabajo de Bauer y Samelson), Maguncia (ubicación del ordenador Z22) y Darmstadt (lugar de trabajo de Bottenbruch).
ALGOL 58 fue objeto de algunos esfuerzos de implementación en IBM , pero el esfuerzo competía con FORTRAN y pronto se abandonó. También se implementó en Dartmouth College en un LGP-30 , pero esa implementación pronto evolucionó hacia ALGOL 60. Una implementación para Burroughs 220 llamada BALGOL también evolucionó siguiendo sus propias líneas, pero mantuvo gran parte del carácter original de ALGOL 58. [7]
La principal contribución de ALGOL 58 fue a los lenguajes posteriores; se utilizó como base para JOVIAL , [4] MAD , NELIAC [4] y ALGO . También se utilizó durante 1959 para publicar algoritmos en CACM , lo que dio inicio a una tendencia de uso de la notación ALGOL en publicaciones que continuó durante muchos años.
Cronología de las implementaciones de las variantes de ALGOL 58
La influencia de ALGOL 58 en ALGOL 60
- IAL introdujo el concepto de tres niveles de lenguaje de referencia, publicación y hardware, y el concepto de "delimitadores de palabras" que tienen una representación separada de los identificadores elegidos libremente (por lo tanto, no hay palabras reservadas). ALGOL 60 mantuvo este concepto de tres niveles. [8]
- La distinción entre asignación (
:=
que representa una flecha que apunta hacia la izquierda) y la relación de igualdad =
se introdujo en IAL y se mantuvo en ALGOL 60. - Tanto IAL como ALGOL 60 permiten matrices con límites de subíndices superiores e inferiores arbitrarios, y permiten que los límites de subíndices se definan mediante expresiones enteras.
- Tanto IAL como ALGOL 60 permiten la anidación de declaraciones de procedimientos y los alcances de identificadores correspondientes.
- El informe de IAL describió la sustitución de parámetros en términos muy similares a los del informe ALGOL 60, dejando abierta la posibilidad de que se hiciera una referencia por su nombre . No está claro si esto se hizo realidad en ese momento.
- IAL permite etiquetas de declaraciones numéricas, que ALGOL 60 mantuvo.
- La posibilidad de incluir código no ALGOL dentro de un programa ya fue insinuada en el contexto de los parámetros de los procedimientos.
- Tanto IAL como ALGOL 60 tienen un designador de cambio , no relacionado, sin embargo, con la declaración de cambio en C y otros lenguajes.
- Las funciones en línea de la forma ; se propusieron en IAL, pero se descartaron en ALGOL 60.
f(x) := x / 2
- Las declaraciones de procedimientos IAL proporcionan listas de declaraciones separadas para los parámetros de entrada y salida; un procedimiento puede devolver múltiples valores; este mecanismo fue reemplazado en ALGOL 60 con la declaración de valor .
- Las declaraciones de variables en IAL se pueden colocar en cualquier parte del programa y no necesariamente al comienzo de un procedimiento. Por el contrario, las declaraciones dentro de un bloque ALGOL 60 deben ocurrir antes de todas las instrucciones de ejecución.
- La declaración for tiene la forma
for i:=base(increment)limit
, que se asemeja directamente al bucle del lenguaje de programación Superplan de Rutishauser , reemplazando =
con :=
, y reemplazando su palabra clave alemana Für
con la traducción directa al inglés for
; ALGOL 60 reemplazó los paréntesis con los delimitadores de palabras step
y until
, de modo que la declaración anterior en su lugar sería .i:=base step increment until limit
- La sentencia if de IAL no tiene una cláusula then o else ; en cambio, protege la sentencia siguiente. IAL proporciona una sentencia if either que permite probar claramente múltiples condiciones. Ambas fueron reemplazadas por la construcción if - then de ALGOL , con la introducción de la ambigüedad " dangling- else ".
- IAL proporciona macro-sustitución con la declaración do ; esto se eliminó en ALGOL 60.
- IAL permite omitir uno o más subíndices de matriz al pasar matrices a procedimientos y proporcionar alguno o todos los argumentos a un procedimiento pasado a otro procedimiento.
- Los operadores booleanos infijos de IAL tienen todos el mismo nivel de precedencia. Los exponentes se indican con flechas hacia arriba y hacia abajo emparejadas, lo que elimina cualquier confusión sobre la interpretación correcta de los exponentes anidados; ALGOL 60 reemplazó las flechas emparejadas con una sola flecha hacia arriba cuya función es equivalente a ** de FORTRAN .
- El informe de IAL no especifica explícitamente qué funciones estándar debían proporcionarse, y hace una vaga referencia a las "funciones estándar de análisis". El informe de ALGOL 60 contiene una lista más explícita de funciones estándar.
Referencias
- ^ Rojas, Raúl; Hashagen, Ulf (2002). Las primeras computadoras: historia y arquitecturas. MIT Press. p. 292. ISBN 978-0262681377. Recuperado el 25 de octubre de 2013 .
- ^ Backus, JW (1959). "La sintaxis y la semántica del lenguaje algebraico internacional propuesto en la Conferencia ACM-GAMM de Zúrich". Actas de la Conferencia Internacional sobre Procesamiento de la Información . UNESCO. págs. 125–132.
- ^ Aspray, William (17 de febrero de 1987), Una entrevista con Friedrich L. Bauer (PDF) , Instituto Charles Babbage , archivado desde el original (PDF) el 22 de abril de 2012
- ^ abc Goos, Gerhard [en alemán] (7 de agosto de 2017). Geschichte der deutschsprachigen Informatik - Programmiersprachen und Übersetzerbau [ Historia de la informática en los países de habla alemana - Lenguajes de programación y diseño de compiladores ] (PDF) (en alemán). Karlsruhe, Alemania: Fakultät für Informatik, Instituto Tecnológico de Karlsruhe (KIT). Archivado (PDF) desde el original el 19 de mayo de 2022 . Consultado el 14 de noviembre de 2022 .(11 páginas)
- ^ Perlis, AJ (1981). "Charla sobre informática en los años cincuenta". Conferencia Nacional ACM. Nashville, TN . Los Alamito, CA: (Transcripción en JAN Lee (ed.), Computer Pioneers, IEEE Computer Society Press (publicado en 1995). pp. 545–556).
- ^ Perlis, AJ ; Samelson, K. (1958). "Informe preliminar: lenguaje algebraico internacional". Comunicaciones de la ACM . 1 (12): 8–22. doi : 10.1145/377924.594925 . S2CID 28755282.
- ^ "Implementaciones y dialectos de Algol 58", Software Preservation Group , Computer History Museum . Donald Knuth es citado en BALGOL: "Estoy en mi segundo año en Caltech y fui consultor de Burroughs. Después de terminar mi compilador para Burroughs, me uní al Departamento de Planificación de Productos. El Departamento de Planificación de Productos estaba compuesto en gran parte por personas que habían escrito el mejor software jamás creado en el mundo hasta ese momento, que era un compilador ALGOL de Burroughs para la computadora 220. Ese fue un gran salto adelante para el software. Fue el primer software que utilizó el procesamiento de listas y las estructuras de datos de alto nivel de una manera inteligente. Tomaron las ideas de Newell y Simon y las aplicaron a los compiladores. Fue un gran avance para todas las otras cosas que estábamos haciendo". [Don Knuth, CHM Oral History, 2007, página 9]
- ^ Naur, P, ed. (1962). Informe revisado sobre el lenguaje algorítmico ALGOL 60 (PDF) . Federación Internacional para el Procesamiento de la Información.
Enlaces externos
- Algol 58 en el Grupo de Preservación de Software (cf. Museo de Historia de la Computación )
- Informe de Algol 58 del CACM en el Grupo de Preservación de Software
- Manual BALGOL El compilador algebraico de Burroughs (edición revisada de 1963)
- Antecedentes de BALGOL en el blog de Burroughs 205 y 220