ALGOL 58 , originalmente llamado IAL , es un miembro de la familia de lenguajes de programación ALGOL . Fue un diseño de compromiso inicial que pronto fue reemplazado por ALGOL 60. Según John Backus :
La Conferencia ACM-GAMM de Zúrich 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 determinado en una variedad de máquinas... [ 2 ]
ALGOL 58 introdujo la noción fundamental de la instrucción compuesta , pero estaba restringida únicamente al flujo de control y no estaba vinculada al ámbito del identificador de la misma manera que 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 para la Maquinaria de Computación (ACM) y la Sociedad Alemana de Matemáticas Aplicadas y Mecánica (GAMM) presentaron propuestas para un lenguaje universal . Se decidió organizar una reunión conjunta para aunar ambas iniciativas. La reunión tuvo lugar del 27 de mayo al 2 de junio de 1958 en la ETH Zúrich y contó con la asistencia de las siguientes personas:
- Friedrich L. Bauer , Hermann Bottenbruch , Heinz Rutishauser y Klaus Samelson (del GAMM)
- John Backus , Charles Katz , Alan Perlis y Joseph Henry Wegstein (de la ACM).
Originalmente se propuso que el lenguaje se llamara IAL ( Lenguaje Algebraico Internacional ), pero según Perlis, [ 5 ] este nombre fue rechazado 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 aún utilizó el nombre IAL. [ 6 ]
A finales de 1958, el grupo ZMMD había construido un compilador ALGOL 58 funcional para el ordenador Z22 . ZMMD era una 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).
IBM intentó implementar ALGOL 58 , pero el proyecto competía con FORTRAN y pronto se abandonó. También se implementó en Dartmouth College en un LGP-30 , pero esta implementación pronto evolucionó a ALGOL 60. Una implementación para el 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 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 , iniciando una tendencia de usar la notación ALGOL en publicaciones que continuó durante muchos años.
Cronograma 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" con una representación separada de los identificadores elegidos libremente (por lo tanto, sin palabras reservadas). ALGOL 60 mantuvo este concepto de tres niveles. [ 8 ]
- La distinción entre asignación (
:=representada por 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índice inferiores y superiores arbitrarios, y permiten que los límites de los subíndices se definan mediante expresiones enteras.
- Tanto IAL como ALGOL 60 permiten el anidamiento de declaraciones de procedimientos y los ámbitos de identificadores correspondientes.
- El informe de IAL describía la sustitución de parámetros en términos muy similares a los del informe ALGOL 60, dejando abierta la posibilidad de la llamada por nombre . No está claro si esto se tuvo en cuenta en aquel momento.
- IAL permite etiquetas de sentencias numéricas, algo que ALGOL 60 conservaba.
- Ya se había insinuado 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 switch , que, sin embargo, no guarda relación con la instrucción switch en C y otros lenguajes.
- Las funciones en línea de la forma ; fueron propuestas en IAL pero descartadas en ALGOL 60.
f(x) := x / 2 - Las declaraciones de procedimientos de IAL proporcionan listas de declaración separadas para los parámetros de entrada y salida; un procedimiento puede devolver varios valores. Este mecanismo fue reemplazado en ALGOL 60 por la declaración de valor .
- En IAL, las declaraciones de variables pueden ubicarse en cualquier parte del programa, no necesariamente al inicio de un procedimiento. En cambio, las declaraciones dentro de un bloque ALGOL 60 deben aparecer antes de todas las instrucciones de ejecución.
- La instrucción for tiene la forma , que se asemeja directamente al bucle del lenguaje de programación Superplan
for i:=base(increment)limitde Rutishauser , reemplazando con , y reemplazando su palabra clave alemana con la traducción directa al inglés ; ALGOL 60 reemplazó los paréntesis con los delimitadores de palabras y , de modo que la instrucción anterior sería en su lugar .=:=Fürforstepuntili:=base step increment until limit - La instrucción `if` de IAL no tiene una cláusula ` then` ni una cláusula `else` ; más bien protege la instrucción siguiente. IAL proporciona una instrucción `if either` que permite evaluar fácilmente múltiples condiciones. Ambas fueron reemplazadas por la construcción ` if - then` de ALGOL , con la introducción de la ambigüedad del ` else` colgante .
- IAL proporciona sustitución de macros con la instrucció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 todos o algunos de los argumentos a un procedimiento que se pasa 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 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 ** de FORTRAN .
- El informe de IAL no especifica explícitamente qué funciones estándar debían proporcionarse, haciendo una referencia vaga a las "funciones estándar de análisis". El informe ALGOL 60 contiene una lista más explícita de funciones estándar.
Referencias
- ↑ Rojas, Raúl; Hashagen, Ulf (2002). Los primeros ordenadores: historia y arquitecturas . MIT Press. pág. 292. ISBN 978-0262681377. Consultado 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), Entrevista con Friedrich L. Bauer (PDF) , Instituto Charles Babbage , archivado del original (PDF) el 22 de abril de 2012.
- ^ 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 la informática en los años cincuenta". Conferencia Nacional de la ACM. Nashville, TN . 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" . Communications of the 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 comenta sobre BALGOL: "Estoy en mi segundo año en Caltech y fui consultor de Burroughs. Tras finalizar mi compilador para Burroughs, me incorporé al Departamento de Planificación de Productos. Este departamento estaba compuesto en gran parte por personas que habían escrito el mejor software jamás creado hasta entonces: un compilador de Burroughs ALGOL para la computadora 220. Fue un gran avance para el software. Fue el primer software que utilizó el procesamiento de listas y estructuras de datos de alto nivel de forma inteligente. Tomaron las ideas de Newell y Simon y las aplicaron a los compiladores. Superó con creces todo lo que estábamos haciendo". [Don Knuth, Historia Oral del 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
- Algol 58 en el Grupo de Preservación de Software (véase Museo de Historia de la Computación )
- Informe de Algol 58 de CACM en el Grupo de Preservación de Software
- Manual de BALGOL El compilador algebraico de Burroughs (Edición revisada de 1963)
- Antecedentes de BALGOL en el blog de The Burroughs 205 y 220
- Lenguajes de programación compilados
- Familia de lenguajes de programación Algol
- Lenguajes de programación creados en 1958