De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

ALGOL 58 , originalmente llamado IAL , pertenece a la familia de lenguajes de programación de computadoras ALGOL . Fue un diseño de compromiso temprano pronto reemplazado por ALGOL 60 . Según John Backus [2]

"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..."

ALGOL 58 introdujo la noción fundamental de la declaración compuesta , pero estaba restringida al flujo de control únicamente, y no estaba vinculada al alcance del identificador de la forma en que lo estaban los bloques de Algol 60 .

Nombre [ editar ]

Bauer atribuye el nombre a Hermann Bottenbruch , quien acuñó el término lenguaje algorítmico (algorítmische Sprache) en 1957, "al menos en Alemania". [3]

Historia [ editar ]

Hubo propuestas para un lenguaje universal por la Asociación de Maquinaria de Computación (ACM) y también por la Gesellschaft für Angewandte Mathematik und Mechanik ("Sociedad de Matemática Aplicada y Mecánica") (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 de Zúrich y contó con la presencia de las siguientes personas:

Originalmente se propuso que el lenguaje se llamara IAL ( Lenguaje Algebraico Internacional ) pero según Perlis, [4] esto fue rechazado como un "acrónimo 'inefable' y pomposo". En su lugar, se sugirió ALGOL, aunque no se adoptó oficialmente hasta un año después. La publicación que siguió a la reunión todavía usaba el nombre IAL. [5]

A fines 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 de la computadora 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. [6]

La principal contribución de ALGOL 58 fue a los idiomas posteriores; se utilizó como base para JOVIAL , MAD , NELIAC y ALGO . También se usó durante 1959 para publicar algoritmos en CACM , comenzando una tendencia de usar la notación ALGOL en la publicación que continuó durante muchos años.

Cronograma de implementaciones de variantes de ALGOL 58 [ editar ]

La influencia de ALGOL 58 en ALGOL 60 [ editar ]

  • IAL introdujo el concepto de tres niveles de referencia, publicación y lenguaje de 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. [7]
  • La distinción entre asignación (que :=representa una flecha 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 inferior y superior 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 procedimiento y los alcances de identificador 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 su nombre . No está claro si esto se realizó en ese momento.
  • IAL permite etiquetas de declaraciones numéricas, que ALGOL 60 mantuvo.
  • La posibilidad de incluir código que no sea ALGOL dentro de un programa ya se insinuó, en el contexto de los parámetros de los procedimientos.
  • Tanto IAL como ALGOL 60 tienen un designador de cambio , que no está relacionado, sin embargo, con la declaración de cambio en C y otros idiomas.
  • Funciones en línea de la forma f ( x ): = x / 2; se propusieron en IAL pero se eliminaron en ALGOL 60.
  • Las declaraciones de procedimiento IAL proporcionan listas de declaración separadas para 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 lugar 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 declaraciones de ejecución.
  • El de -statement tiene la forma for i:=base(increment)limit, que se asemeja directamente el bucle del lenguaje de programación de Rutishauser Superplan , reemplazando =con :=, y la sustitución de su palabra clave alemán Fürcon la traducción directa Inglés for; ALGOL 60 reemplazó los paréntesis con los delimitadores de palabras stepy until, de modo que la declaración anterior en su lugar sería .i:=base step increment until limit
  • El IAL si -statement no tiene una continuación -clause o demás -clause; más bien protege la declaración siguiente. IAL proporciona una declaración de si una de las dos que permite claramente la prueba de múltiples condiciones. Ambos fueron reemplazados por el constructo if - then de ALGOL , con la introducción de la ambigüedad " colgando- else ".
  • IAL proporciona macro-sustitución con la declaración do ; esto se dejó caer 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 de un procedimiento pasado a otro procedimiento.
  • Los operadores booleanos infijos de IAL tienen 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 sola flecha hacia arriba cuya función es equivalente a la de FORTRAN ** .
  • El informe IAL no especifica explícitamente qué funciones estándar se proporcionarían, 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 [ editar ]

  1. ^ Rojas, Raúl; Hashagen, Ulf (2002). Las primeras computadoras: historia y arquitecturas . MIT Press. pag. 292. ISBN 978-0262681377. Consultado el 25 de octubre de 2013 .
  2. ^ Backus, JW (1959). "La sintaxis y semántica de la propuesta de lenguaje algebraico internacional de Zürich Conferencia ACM-GAMM". Actas de la Conferencia Internacional sobre Procesamiento de Información . UNESCO. págs. 125-132.
  3. ^ Aspray, William (17 de febrero de 1987), Una entrevista con Friedrich L. Bauer (PDF) , Charles Babbage Institute , archivado desde el original (PDF) el 22 de abril de 2012
  4. ^ Perlis, AJ (1981). "Charla sobre Informática en los años cincuenta". Conferencia Nacional ACM. Nashville ,. TN . Los Alamito, California, 1995: (Transcripción en JAN Lee (ed.), Computer Pioneers, IEEE Computer Society Press. Págs. 545–556).CS1 maint: location (link)
  5. ^ 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 . 
  6. ^ "Implementaciones y dialectos de Algol 58" , Grupo de preservación de software , Museo de Historia de la Computación . Donald Knuthse cita en BALGOL: "Estoy en mi segundo año en Caltech, y era 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. Fue un gran avance para el software. Fue el primer software que utilizó procesamiento de listas y estructuras de datos de alto nivel en una "Tomaron las ideas de Newell y Simon y las aplicaron a los compiladores. Corrió en círculos alrededor de todas las otras cosas que estábamos haciendo". [Don Knuth, Historia oral de CHM, 2007, página 9]
  7. ^ Naur, P (editor) (1962). Informe revisado sobre el lenguaje algorítmico ALGOL 60 (PDF) . Federación Internacional de Procesamiento de la Información. CS1 maint: extra text: authors list (link)

Enlaces externos [ editar ]

  • Algol 58 en el Grupo de Preservación de Software (cf. Museo de Historia de la Computación )
  • Informe Algol 58 de CACM en Software Preservation Group