Lenguaje de programación
ALGOL 58 , originalmente llamado IAL , pertenece a la familia de lenguajes de programación informática ALGOL . Fue uno de los primeros diseños de compromiso que pronto fue reemplazado por ALGOL 60 . Según John Backus :
La Conferencia ACM-GAMM de Zurich tuvo dos motivos principales al proponer la 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 declaración compuesta , pero estaba restringida solo 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
Hubo propuestas para un lenguaje universal por parte de la Asociación de Maquinaria de Computación (ACM) y también de la Gesellschaft für Angewandte Mathematik und Mechanik ("Sociedad de Matemáticas y Mecánica Aplicadas") (GAMM) alemana. Se decidió organizar una reunión conjunta para combinarlos. La reunión tuvo lugar del 27 de mayo al 2 de junio de 1958 en la ETH Zurich y asistieron las siguientes personas:
Originalmente se propuso que el lenguaje se llamara IAL ( Lenguaje Algebraico Internacional ), pero según Perlis, [5]
esto fue rechazado como un "acrónimo 'indescriptible' 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 usaba el nombre IAL. [6]
A finales de 1958, el grupo ZMMD había construido un compilador ALGOL 58 funcional para la computadora Z22 . ZMMD era una abreviatura de Zürich (donde trabajaba Rutishauser), München (lugar de trabajo de Bauer y Samelson), Mainz (ubicación del ordenador Z22), Darmstadt (lugar de trabajo de Bottenbruch).
ALGOL 58 vio algún esfuerzo 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ó a ALGOL 60 . Una implementación para Burroughs 220 llamada BALGOL también evolucionó siguiendo sus propias líneas, pero conservó gran parte del carácter original de ALGOL 58. [7]
La principal contribución de ALGOL 58 fue a los idiomas posteriores; fue utilizado como base para JOVIAL , [4] MAD , NELIAC [4] y ALGO . También se utilizó durante 1959 para publicar algoritmos en el CACM , iniciando una tendencia de utilizar la notación ALGOL en las publicaciones que continuó durante muchos años.
Cronología de 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 orientada 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índice superior e inferior arbitrarios, y permiten que los límites de subíndice se definan mediante expresiones enteras.
- Tanto IAL como ALGOL 60 permiten el anidamiento de declaraciones de procedimientos y los alcances de identificadores correspondientes.
- El informe IAL describió la sustitución de parámetros en los mismos términos que el informe ALGOL 60, dejando abierta la posibilidad de llamar por nombre . No está claro si esto se hizo realidad en ese momento.
- IAL permite etiquetas de declaraciones numéricas, que ALGOL 60 mantuvo.
- Ya se insinuó la posibilidad de incluir código que no sea ALGOL dentro de un programa, en el contexto de los parámetros de los procedimientos.
- Tanto IAL como ALGOL 60 tienen un designador de cambio , sin embargo, no relacionado con la declaración de cambio en C y otros lenguajes.
- Funciones en línea del formulario ; se propusieron en IAL pero se eliminaron en ALGOL 60.
f(x) := x / 2
- Las declaraciones de procedimientos IAL proporcionan listas de declaraciones separadas para parámetros de entrada y salida; un procedimiento puede devolver múltiples valores; este mecanismo fue reemplazado en ALGOL 60 por 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 deberían ocurrir antes de todas las declaraciones de ejecución.
- La declaración for tiene la forma , asemejándose directamente al bucle del lenguaje de programación Superplan
for i:=base(increment)limit
de Rutishauser , reemplazando con y reemplazando su palabra clave alemana con la traducción directa al inglés ; ALGOL 60 reemplazó los paréntesis con la palabra delimitadores y , de modo que la declaración anterior sería .=
:=
Für
for
step
until
i:=base step increment until limit
- La declaración if de IAL no tiene una cláusula then ni una cláusula else ; más bien protege la declaración siguiente. IAL proporciona una declaración if any que permite probar claramente múltiples condiciones. Ambos fueron reemplazados por el constructo si - entonces de ALGOL , con la introducción de la ambigüedad " colgando- si no ".
- IAL proporciona macrosustitució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 cualquiera 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 emparejadas hacia arriba y hacia abajo, lo que eliminó cualquier confusión sobre la interpretación correcta de los exponentes anidados; ALGOL 60 reemplazó las flechas emparejadas con una única flecha hacia arriba cuya función es equivalente a la de FORTRAN ** .
- El informe de la IAL no especifica explícitamente qué funciones estándar debían proporcionarse, haciendo una vaga referencia a las "funciones estándar de análisis". El informe ALGOL 60 tiene una lista más explícita de funciones estándar.
Referencias
- ^ Rojas, Raúl; Hashagen, Ulf (2002). Las primeras computadoras: historia y arquitecturas. Prensa del MIT. pag. 292.ISBN 978-0262681377. Consultado el 25 de octubre de 2013 .
- ^ Backus, JW (1959). "La sintaxis y semántica del lenguaje algebraico internacional propuesto en la Conferencia ACM-GAMM de Zúrich". Actas de la Conferencia Internacional sobre Procesamiento de 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 Computación en los años cincuenta”. Conferencia Nacional ACM. Nashville, Tennessee . Los Alamito, CA: (Transcripción en JAN Lee (ed.), Computer Pioneers, IEEE Computer Society Press (publicado en 1995). págs. 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", Grupo de Preservación de Software , Museo de Historia de la Computación . 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 medida por personas que Había 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 avance para el software. Fue el primer software que utilizó procesamiento de listas y estructuras de datos de alto nivel. de una manera inteligente. Tomaron las ideas de Newell y Simon y las aplicaron a los compiladores. Daron vueltas en torno a todas las demás cosas que estábamos haciendo". [Don Knuth, Historia oral de CHM, 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