ALGOL 60 (abreviatura de Algorithmic Language 1960 ) pertenece a la familia de lenguajes de programación ALGOL . Surgió a partir de ALGOL 58 , que introdujo bloques de código y los pares `&` para delimitarlos, lo que representó un avance clave en el auge de la programación estructurada . ALGOL 60 fue uno de los primeros lenguajes en implementar definiciones de funciones (que podían invocarse recursivamente). Las definiciones de funciones de ALGOL 60 podían anidarse unas dentro de otras (una característica introducida por ALGOL 60) con ámbito léxico . Dio origen a muchos otros lenguajes, como CPL , PL/I , Simula , BCPL , B , Pascal y C. Prácticamente todos los ordenadores de la época contaban con un lenguaje de programación de sistemas basado en conceptos de ALGOL 60.beginend
Niklaus Wirth basó su propio ALGOL W en ALGOL 60 antes de dedicarse al desarrollo de Pascal . Algol-W estaba concebido como la siguiente generación de ALGOL, pero el comité de ALGOL 68 optó por un diseño más complejo y avanzado en lugar de una versión simplificada y optimizada de ALGOL 60. Las versiones oficiales de ALGOL reciben el nombre del año de su primera publicación. ALGOL 68 es sustancialmente diferente de ALGOL 60 y fue criticado en parte por ello, de modo que, en general, "ALGOL" se refiere a dialectos de ALGOL 60.
Normalización
ALGOL 60, junto con COBOL , fueron los primeros lenguajes que buscaron la estandarización.
- ISO 1538:1984 Lenguajes de programación – ALGOL 60 (estabilizado)
- ISO/TR 1672:1977 Representación por hardware de los símbolos básicos de ALGOL... (actualmente retirada)
Historia
ALGOL 60 fue utilizado principalmente por investigadores informáticos en Estados Unidos y Europa. Su uso en aplicaciones comerciales se vio obstaculizado por la ausencia de funciones estándar de entrada/salida en su descripción y la falta de interés de los grandes fabricantes de ordenadores en el lenguaje. Sin embargo, ALGOL 60 se convirtió en el estándar para la publicación de algoritmos y tuvo un profundo impacto en el desarrollo de lenguajes posteriores.
John Backus desarrolló el método de forma normal de Backus para describir lenguajes de programación específicamente para ALGOL 58. Fue revisado y ampliado por Peter Naur para ALGOL 60, y por sugerencia de Donald Knuth se le cambió el nombre a forma de Backus-Naur . [ 1 ]
Peter Naur: "Como editor del Boletín ALGOL, participé en los debates internacionales sobre el idioma y fui seleccionado para formar parte del grupo europeo de diseño lingüístico en noviembre de 1959. En esta calidad, fui el editor del informe ALGOL 60, elaborado como resultado de la reunión ALGOL 60 celebrada en París en enero de 1960." [ 2 ]
Las siguientes personas asistieron a la reunión en París (del 11 al 16 de enero):
- Friedrich Ludwig Bauer , Peter Naur , Heinz Rutishauser , Klaus Samelson , Bernard Vauquois , Adriaan van Wijngaarden y Michael Woodger (de Europa)
- John Warner Backus , Julien Green , Charles Katz , John McCarthy , Alan Jay Perlis y Joseph Henry Wegstein (de los Estados Unidos).
Alan Perlis describió la reunión con gran viveza: «Las reuniones fueron agotadoras, interminables y estimulantes. Uno se irritaba cuando sus buenas ideas se descartaban junto con las malas de los demás. Sin embargo, la dedicación se mantuvo durante todo el período. La química entre los trece fue excelente».
El lenguaje originalmente no incluía recursión . Se insertó en la especificación en el último momento, en contra de los deseos de algunos miembros del comité. [ 3 ]
Varios autores del informe original se reunieron en abril de 1962 para resolver los problemas que habían surgido. Su trabajo dio como resultado la publicación del "Informe revisado sobre el lenguaje algorítmico ALGOL 60". [ 4 ]
El Grupo de Trabajo 2.1 del Comité Técnico 2 de IFIP realizó aclaraciones adicionales e incluyó procedimientos de E/S. Estos esfuerzos se publicaron en 1975 como el "Informe modificado sobre el lenguaje algorítmico ALGOL 60". [ 5 ]
ALGOL 60 inspiró muchos lenguajes posteriores. Tony Hoare comentó: «Este es un lenguaje tan adelantado a su tiempo que no solo supuso una mejora respecto a sus predecesores, sino también respecto a casi todos sus sucesores». [ 6 ] [ 7 ]
Cronograma de implementaciones de ALGOL 60
Hasta la fecha ha habido al menos 70 aumentos, extensiones, derivaciones y sublenguajes de ALGOL 60. [ 8 ]
Los dialectos de Burroughs incluían dialectos especiales de programación del sistema, como ESPOL y NEWP .
Propiedades
ALGOL 60, tal como se definió oficialmente, no tenía funciones de entrada/salida; las implementaciones definían las suyas propias de maneras que rara vez eran compatibles entre sí. En contraste, ALGOL 68 ofrecía una amplia biblioteca de funciones de transputación (término utilizado en ALGOL 68 para referirse a la entrada/salida).
ALGOL 60 proporcionó dos estrategias de evaluación para el paso de parámetros : el paso por valor común y el paso por nombre . La declaración del procedimiento especificaba, para cada parámetro formal, cuál se iba a usar: valor especificado para paso por valor, y omitido para paso por nombre. El paso por nombre recalcula cada parámetro cuando se usa en una expresión, por lo que tiene ciertos efectos en contraste con el paso por referencia . Por ejemplo, sin especificar los parámetros como valor o referencia , es imposible desarrollar un procedimiento que intercambie los valores de dos parámetros si los parámetros reales que se pasan son una variable entera y un array que está indexado por esa misma variable entera. [ 21 ] Piense en pasar un puntero a swap(i, A[i]) en una función. Ahora que cada vez que se hace referencia a swap, se reevalúa. Digamos que i := 1 y A[i] := 2, entonces cada vez que se haga referencia a swap, devolverá la otra combinación de los valores ([1,2], [2,1], [1,2], etc.). Una situación similar ocurre con una función aleatoria pasada como argumento real.
Muchos diseñadores de compiladores conocen la llamada por nombre por las interesantes " funciones thunk " que se utilizan para implementarla. Donald Knuth ideó la " prueba del hombre o del niño " para diferenciar los compiladores que implementaban correctamente la recursión y las referencias no locales. Esta prueba contiene un ejemplo de llamada por nombre.
Niveles de idioma
Los informes de ALGOL 60 reconocen tres niveles de lenguaje diferentes, a saber, un lenguaje de referencia, un lenguaje de publicación y varias representaciones de hardware. Los lenguajes de referencia y publicación no tienen palabras reservadas; sin embargo, los informes recomiendan [ 22 ] reservar algunos identificadores para funciones estándar. El lenguaje de referencia tiene letras minúsculas y otros caracteres no disponibles en los conjuntos de caracteres de 6 bits típicos de la era de ALGOL 60. [ a ]
Los informes describen brevemente las representaciones de hardware. Las implementaciones difieren en sus representaciones de hardware de los símbolos básicos independientes subrayados. [ 23 ]
- Palabras reservadas
- Desgaste
También difieren en la representación física de los delimitadores.
ALGOL 60 Palabras reservadas e identificadores restringidos
En el Informe Modificado hay 24 símbolos básicos que son palabras en negrita. Si bien estas palabras no están reservadas en los idiomas de referencia y publicación, algunas implementaciones de hardware pueden reservarlas. Hay 24 de estas palabras en el Informe Modificado:
ARRAYBEGINBOOLEANCOMMENTDOELSEENDFALSEFORGOTOIFINTEGERLABELOWNPROCEDUREREALSTEPSTRINGSWITCHTHENTRUEUNTILVALUEWHILE
En el sublenguaje estándar de Burroughs Large Systems hay 35 palabras reservadas de este tipo :
ALPHAARRAYBEGINBOOLEANCOMMENTCONTINUEDIRECTDODOUBLEELSEENDEVENTFALSEFILEFORFORMATGOIFINTEGERLABELLISTLONGOWNPOINTERPROCEDUREREALSTEPSWITCHTASKTHENTRUEUNTILVALUEWHILEZIP
En el sublenguaje estándar de Burroughs Large Systems existen 71 identificadores restringidos de este tipo:
ACCEPTANDATTACHBYCALLCASECAUSECLOSEDEALLOCATEDEFINEDETACHDISABLEDISPLAYDIVDUMPENABLEEQLEQVEXCHANGEEXTERNALFILLFORWARDGEQGTRIMPININTERRUPTISLBLEQLIBERATELINELOCKLSSMERGEMODMONITORMUXNEQNONOTONOPENOROUTPICTUREPROCESSPROCUREPROGRAMDUMPRBREADRELEASEREPLACERESETRESIZEREWINDRUNSCANSEEKSETSKIPSORTSPACESWAPTHRUTIMESTOWAITWHENWITHWRITE
y también los nombres de todas las funciones intrínsecas.
Operadores estándar
Ejemplos y problemas de portabilidad
Comparación de ejemplos de código
ALGOL 60
procedimiento Absmax(a) Tamaño:(n, m) Resultado:(y) Subíndices:(i, k); valor n, m; matriz a; entero n, m, i, k; real y; comentario El elemento más grande absoluto de la matriz a, de tamaño n por m, se copia a y, y los subíndices de este elemento a i y k; comenzar entero p, q; y := 0; i := k := 1; para p := 1 paso 1 hasta n hacer para q := 1 paso 1 hasta m hacer si abs(a[p, q]) > y entonces comenzar y := abs(a[p, q]); i := p; k := q fin fin Absmax;
Las implementaciones difieren en la forma en que debe escribirse el texto en negrita. Por ejemplo, en algunas implementaciones debe usarse la palabra "INTEGER", incluyendo las comillas, en lugar de integer , arriba, designándola así como un símbolo ALGOL especial.
La siguiente versión utiliza la representación de hardware compatible con el compilador ALCOR [ 24 ] para el IBM 7090. Los símbolos ALGOL se han eliminado. Además, utiliza ..para representar el carácter de dos puntos, .=para la asignación, (/ and )/en lugar de corchetes, y .,para el punto y coma. No se admitían caracteres en minúscula, por lo que se utilizan mayúsculas:
'PROCEDIMIENTO' ABSMAX(A) TAMAÑO..(N, M) RESULTADO..(Y) SUBÍNDICES..(I, K)., 'VALOR' N, M., 'MATRIZ' A., 'ENTERO' N, M, I, K., 'REAL' Y., 'COMENTAR' EL ELEMENTO MÁS GRANDE DE LA MATRIZ A, DE TAMAÑO N POR M, SE COPIA A Y, Y LOS SUBÍNDICES DE ESTE ELEMENTO A I Y K., 'COMENZAR' 'ENTERO' P, Q., Y .= 0; I .= K .= 1., 'PARA' P .= 1 'PASO' 1 'HASTA' N 'HACER' 'PARA' Q .= 1 'PASO' 1 'HASTA' M 'HACER' 'SI' ABS(A(/P, Q/)) 'MAYOR' Y 'ENTONCES' 'COMIENZA' Y .= ABS(A(/P, Q/))., Yo .= P; K .= Q 'FIN' 'FIN' ABSMAX.,
A continuación se muestra un ejemplo de cómo generar una tabla utilizando el ALGOL 803 de Elliott : [ 25 ]
PRUEBA DE ALGOLITOS DE PUNTO FLOTANTE COMIENZA REAL A, B, C, D' LEER D' PARA A:= 0.0 PASO D HASTA 6.3 HACER COMENZAR PERFORADORA DE IMPRESIÓN (3) ,££L??' B := SIN(A)' C := COS(A)' IMPRIMIR PERFORADO(3) , MISMA LÍNEA , ALINEADO(1,6) , A, B, C' FIN' FIN'
Familia ALGOL 60
Dado que ALGOL 60 no tenía funciones de E/S, no existe un programa portátil "Hola mundo" en ALGOL. El siguiente programa podía (y aún puede) compilarse y ejecutarse en una implementación de ALGOL para un mainframe Unisys A-Series, y es una simplificación directa del código tomado de The Language Guide [ 26 ] en la página del programa de ejemplo "Hola mundo! ALGOL" del Departamento de Ciencias de la Computación e Información de la Universidad de Michigan -Dearborn. [ 27 ]
COMENZAR ARCHIVO F(TIPO=REMOTO); MATRIZ EBCDIC E[0:11]; REEMPLAZAR LA E POR "HOLA MUNDO!"; ESCRIBIR(F, *, E); FIN.
Donde * etc. representaba una especificación de formato como la que se usa en FORTRAN, por ejemplo [ 28 ].
Un programa más sencillo que utiliza un formato en línea:
INICIO ARCHIVO F ( TIPO = REMOTO ); ESCRIBIR ( F , < "HOLA MUNDO!" > ); FIN .Un programa aún más sencillo que utiliza la instrucción Display:
INICIO DE VISUALIZACIÓN ( "¡HOLA MUNDO!" ) FIN .Un ejemplo alternativo, utilizando la E/S de Elliott Algol, es el siguiente. Elliott Algol utilizaba caracteres diferentes para "comillas de apertura de cadena" y "comillas de cierre de cadena", representados aquí por ' y ' .
programa HiFolks ; inicio imprimir ' Hola mundo ' fin ;Aquí hay una versión para el Elliott 803 Algol (A104). El Elliott 803 estándar usaba cinta de papel de 5 agujeros y, por lo tanto, solo tenía mayúsculas. El código carecía de caracteres de comillas, por lo que se usaba £ (signo de libra) para la comilla de apertura y ? (signo de interrogación) para la comilla de cierre. Las secuencias especiales se colocaban entre comillas dobles (por ejemplo, £., L?? producía una nueva línea en el teletipo).
HIFOLKS' COMENZAR IMPRIMIR £HOLA MUNDO£L??' FIN'
La versión de E/S Algol de la serie ICT 1900 permitía la entrada desde cinta de papel o tarjeta perforada. El modo de cinta de papel "completa" permitía el uso de minúsculas. La salida se realizaba a una impresora de línea. Nótese el uso de '(', ')' y %. [ 29 ]
'PROGRAMA' (HOLA) 'COMENZAR' 'COMENTARIO' LA COMILLA DE APERTURA ES '(', LA DE CIERRE ES ')', EL ESPACIO IMPRIMIBLE TIENE QUE SER DEBE ESCRIBIRSE COMO % PORQUE LOS ESPACIOS SE IGNORAN; ESCRIBIR TEXTO('('HOLA %MUNDO')'); 'FIN' 'FINALIZAR'Este ejemplo utiliza el outstringprocedimiento tal como se define en el Informe modificado:
comenzar Comentario: Utiliza la E/S del Informe Modificado. Se compila y ejecuta con el compilador gnu marst; outstring (1, "hola mundo!\n") fin
SALTO
LEAP es una extensión del lenguaje de programación ALGOL 60 que proporciona una memoria asociativa de triples. Los tres elementos de un triple indican la asociación entre un atributo de un objeto y un valor específico. LEAP fue creado por Jerome Feldman (Universidad de California Berkeley) y Paul Rovner (Laboratorio Lincoln del MIT) en 1967. LEAP también se implementó en SAIL.
Véase también
Notas
- ↑ Unicode , que llegó décadas después, admite todo
- U+003A : DOS PUNTOS
- U+003B ; PUNTO Y COMA
- U+005B [ CORCHETE CUADRADO IZQUIERDO
- U+005D ] CORCHETE CUADRADO DERECHO
- U+00AC ¬ NO SEÑAL
- U+00D7 × SIGNO DE MULTIPLICACIÓN
- U+00F7 ÷ SIGNO DE DIVISIÓN
- U+2191 ↑ FLECHA HACIA ARRIBA
- U+2227 ∧ Y LÓGICO
- U+2228 ∨ OR LÓGICO
- U+2260 ≠ NO ES IGUAL A
- U+2261 ≡ IDÉNTICO A
- U+2264 ≤ MENOR O IGUAL A
- U+2265 ≥ MAYOR O IGUAL A
- U+2283 ⊃ SUPERCONJUNTO DE
Referencias
- ↑ Knuth, Donald E. (diciembre de 1964). "Forma normal de Backus frente a forma normal de Backus" . Communications of the ACM . 7 (12): 735– 6. doi : 10.1145/355588.365140 . S2CID 47537431 .
- ↑ Mención del Premio ACM / Peter Naur , 2005
- ↑ van Emden, Maarten (2014). "Cómo la recursión llegó a la programación: una historia de intriga, traición y semántica avanzada de lenguajes de programación" . A Programmer's Place .
- ^ Backus, JW; Bauer, Florida; Verde, J.; Katz, C.; McCarthy, J.; Perlis, AJ; Rutishauser, H.; Samelson, K.; Vauquois, B.; Wegstein, JH; Van Wijngaarden, A.; Woodger, M. (1963). "Informe revisado sobre el lenguaje algorítmico ALGOL 60" . Comunicaciones de la ACM . 6 : 1– 17. doi : 10.1145/366193.366201 .
- ↑ "Informe modificado sobre el lenguaje algorítmico ALGOL 60" (PDF) .
- ↑ Hoare, CAR (diciembre de 1973). "Sugerencias sobre el diseño de lenguajes de programación" (PDF) . pág. 27. (Esta afirmación a veces se atribuye erróneamente a Edsger W. Dijkstra , quien también participó en la implementación del primer compilador ALGOL 60 ).
- ↑ Abelson, Hal ; Dybvig, RK ; et al. Rees, Jonathan; Clinger, William (eds.). "Revised(3) Report on the Algorithmic Language Scheme (Dedicated to the Memory of ALGOL 60)" . Recuperado el 20 de octubre de 2009 .
- ↑ La Enciclopedia de Lenguajes de Computación, archivada el 27 de septiembre de 2011 en Wayback Machine .
- ↑ Daylight, EG (2011). "El grito de guerra de Dijkstra por la generalización: el advenimiento del procedimiento recursivo, finales de la década de 1950 - principios de la década de 1960" . The Computer Journal . 54 (11): 1756– 1772. doi : 10.1093/comjnl/bxr002 .
- ↑ Kruseman Aretz, FEJ (30 de junio de 2003). "El compilador ALGOL 60 de Dijkstra-Zonneveld para Electrologica X1" (PDF) . Ingeniería de software . Historia de la informática. Ámsterdam: Centrum Wiskunde & Informatica. ISSN 1386-3711 . Archivado del original (PDF) el 17 de enero de 2004.
- ↑ Irons, Edgar T. , Un compilador dirigido por sintaxis para ALGOL 60, Communications of the ACM, Vol. 4, pág. 51. (Enero de 1961)
- ↑ Kurtz 1978 .
- ↑ Gries, D.; Paul, M.; Wiehle, H. R (1965). "Algunas técnicas utilizadas en el ALCOR Illinois 7090" . Communications of the ACM . 8 (8): 496– 500. doi : 10.1145/365474.365511 . S2CID 18365024 .
- ↑ Bayer, R.; Gries, D.; Paul, M.; Wiehle, HR (1967). "El vertedero post mortem de ALCOR Illinois 7090/7094" . Communications of the ACM . 10 (12): 804– 808. doi : 10.1145/363848.363866 . S2CID 3783605 .
- ↑ Rechenautomaten mit Trommelspeicher , Förderverein der Technischen Sammlung Dresden
- ↑ Mounier-Kuhn, Pierre (2014). "Algol en Francia: Del proyecto universal a la cultura integrada" . IEEE Annals of the History of Computing . 36 (4): 6– 25. Bibcode : 2014IAHC...36d...6M . doi : 10.1109/MAHC.2014.50 . ISSN 1058-6180 .
- ↑ Kurtz 1978 , pág. 517.
- ^ Boussard, Jean-Claude (junio de 1964). Etude et réalisation d'un compilateur Algol60 sur calculador éléctronique du type IBM 7090/94 et 7040/44 [ Diseño e implementación de un compilador Algol60 en calculadoras electrónicas IBM 7090/94 y 7040/44 ] (Doctor) (en francés). Universidad Joseph-Fourier - Grenoble I.
- ^ Claude Pair (27 de abril de 1965). Descripción del compilador ALGOL . Grupo de usuarios de la región europea 1620 . IBM.
- ^ Kruseman Aretz, FEJ (1973). Un compilador de Algol 60 en Algol 60 . Tratados del Centro de Matemáticas. Ámsterdam: Mathematisch Centrum.
- ↑ Aho, Alfred V. ; Sethi, Ravi ; Ullman, Jeffrey D. (1986). Compiladores: Principios, técnicas y herramientas (1.ª ed.). Addison-Wesley. ISBN 978-0-201-10194-2., Sección 7.5 y referencias en la misma
- ↑ Naur et al. 1963 , 3.2.4. Funciones estándar
- ↑ Naur et al. 1963 , 2.1. Letras : (1) Cabe destacar que en todo el texto de referencia se utiliza el subrayado [aquí aparece subrayado; NL] para definir símbolos básicos independientes (véanse las secciones 2.2.2 y 2.3). Se entiende que estos no guardan relación con las letras individuales que los componen. En el presente informe, el subrayado no se utilizará para ningún otro fin.
- ↑ "Manual de usuario del traductor ALCØR-ILLINØIS-7090 ALGØL-60"
- ↑ "803 ALGOL" , el manual para Elliott 803 ALGOL
- ↑ "El lenguaje de programación ALGOL" . www.engin.umd.umich.edu . Archivado del original el 10 de febrero de 2010. Consultado el 11 de enero de 2022 .
- ↑ "Hola mundo! Programa de ejemplo" . www.engin.umd.umich.edu . Archivado del original el 4 de febrero de 2010. Consultado el 11 de enero de 2022 .
- ↑ Ejemplo de Fortran#"¡Hola, mundo!"
- ↑ "Serie ICL 1900: Lenguaje Algol" . Publicación técnica ICL 3340. 1965.
Bibliografía
- Backus, John W .; Bauer, Friedrich L .; Verde, J.; Katz, C.; J. McCarthy ; P. Naur ; AJ Perlis ; H. Rutishauser ; K. Samuelson; B. Vauquois ; JH Wegstein ; A. van Wijngaarden ; M. Woodger (enero de 1963). Peter Naur (ed.). "Informe revisado sobre el lenguaje algorítmico Algol 60" . Comunicaciones de la ACM . 6 (1). Asociación de Maquinaria de Computación: 1– 17. doi : 10.1145/366193.366201 . S2CID 7853511 .
- Kurtz, Thomas E. (1978). "BASIC". Historia de los lenguajes de programación . págs. 515–537 . doi : 10.1145/800025.1198404 . ISBN 0127450408.
Lecturas adicionales
- Dijkstra, Edsger W. (1961). "ALGOL 60 Translation: An ALGOL 60 Translator for the X1 and Making a Translator for ALGOL 60 (PDF) (Technical report). Amsterdam: Mathematisch Centrum. 35.
- Randell, Brian ; Russell, Lawford John (1964). Implementación de ALGOL 60: La traducción y el uso de programas ALGOL 60 en una computadora . Academic Press. OCLC 526731 . El diseño del compilador Whetstone . Una de las primeras descripciones publicadas sobre la implementación de un compilador. Véanse los artículos relacionados: Whetstone Algol Revisited y The Whetstone KDF9 ALGOL Translator de Brian Randell.
- 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)
Enlaces externos
- Informe revisado sobre el lenguaje algorítmico ALGOL 60 por Peter Naur, et al. Definición de ALGOL
- Un resumen de sintaxis BNF de ALGOL 60
- "La ropa vieja del emperador" – Discurso de Hoare al recibir el Premio Turing de la ACM en 1980, en el que habla sobre la historia de ALGOL y su participación.
- Una implementación de ALGOL 60 para el FP6000 Archivada el 25/07/2020 en Wayback Machine Discusión sobre algunos problemas de implementación.
- Naur, Peter (agosto de 1978). "El lado europeo de la última fase del desarrollo de ALGOL 60" . ACM SIGPLAN Notices . 13 (8): 15– 44. doi : 10.1145/960118.808370 . S2CID 15552479 .
- La Universidad de Edimburgo escribió compiladores para Algol60 (posteriormente actualizados para Algol60M) basados en sus compiladores Atlas Autocode, inicialmente adaptados del Atlas al KDF-9. Los compiladores de Edimburgo generaron código para el ICL1900, el ICL4/75 (un clon del IBM360) y el ICL2900. Aquí se encuentra la notación BNF para Algol60 ( archivada el 15/05/2020 en Wayback Machine) , el código fuente del compilador ICL2900 (archivado el 15/05/2020 en Wayback Machine) , la documentación de la biblioteca (archivada el 15/05/2020 en Wayback Machine ) y un conjunto considerable de pruebas (archivado el 15/05/2020 en Wayback Machine), incluidas las pruebas de Brian Wichmann. Archivado el 15/05/2020 en Wayback Machine También hay un traductor de nivel fuente de Algol60 a Atlas Autocode bastante superficial Archivado el 15/05/2020 en Wayback Machine .
- El Museo de Retrocomputación de Eric S. Raymond , entre otros, un enlace al intérprete NASE ALGOL 60 escrito en C.
- El intérprete de NASE
- Historias del B5000 y de las personas que estuvieron allí: una computadora ALGOL dedicada,
- Bottenbruch, Hermann (1961). Estructura y uso de ALGOL 60 (Informe). doi : 10.2172/4020495 . OSTI 4020495 .
- NUMAL Una biblioteca de procedimientos numéricos en ALGOL 60 desarrollada en The Stichting Centrum Wiskunde & Informatica ( sucesor legal de Stichting Mathematisch Centrum), propietario legal .
- Recursos de ALGOL 60: traductores, documentación, programas
- ALGOL 60 incluido en la raqueta