ALGOL

Familia de lenguajes de programación

ALGOL
Un manual de 1965 para ALGOL-20
ParadigmaProcedimental , imperativo , estructurado
FamiliaALGOL
Diseñado porBauer , Bottenbruch , Rutishauser , Samelson , Backus , Katz , Perlis , Wegstein , Naur , Vauquois , van Wijngaarden , Woodger , Green, McCarthy
Apareció por primera vez1958 ; hace 66 años ( 1958 )
Disciplina de mecanografíaEstático , fuerte
AlcanceLéxico
Influenciado
La mayoría de los lenguajes imperativos posteriores (incluidos los denominados lenguajes tipo ALGOL ),
por ejemplo, PL/I , Simula , Pascal , C y Scheme.

ALGOL ( / ˈ æ l ɡ ɒ l , - ɡ ɔː l / ; abreviatura de " lenguaje algorítmico ") [1] es una familia de lenguajes de programación informática imperativos desarrollados originalmente en 1958. ALGOL influyó fuertemente en muchos otros lenguajes y fue el método estándar para la descripción de algoritmos utilizado por la Association for Computing Machinery (ACM) en libros de texto y fuentes académicas durante más de treinta años. [2]

En el sentido de que la sintaxis de la mayoría de los lenguajes modernos es "similar a Algol", [3] podría decirse que fue más influyente que otros tres lenguajes de programación de alto nivel entre los que fue más o menos contemporáneo: FORTRAN , Lisp y COBOL . [4] Fue diseñado para evitar algunos de los problemas percibidos con FORTRAN y eventualmente dio lugar a muchos otros lenguajes de programación, incluidos PL/I , Simula , BCPL , B , Pascal , Ada y C.

ALGOL introdujo los bloques de código y los pares begin... endpara delimitarlos. También fue el primer lenguaje que implementó definiciones de funciones anidadas con alcance léxico . Además, fue el primer lenguaje de programación que prestó atención detallada a la definición formal del lenguaje y, a través del Informe Algol 60, introdujo la forma Backus–Naur , una notación gramatical formal principal para el diseño de lenguajes.

Había tres especificaciones principales, nombradas según el año en que se publicaron por primera vez:

  • ALGOL 58 – originalmente propuesto para llamarse IAL , por Lenguaje Algebraico Internacional .
  • ALGOL 60 : implementado por primera vez como X1 ALGOL 60 en 1961. Revisado en 1963. [5] [6] [7]
  • ALGOL 68 : introdujo nuevos elementos, como matrices flexibles, cortes, paralelismo e identificación de operadores. Revisado en 1973. [8]

ALGOL 68 es sustancialmente diferente de ALGOL 60 y no fue bien recibido, [ ¿según quién? ] por lo que la referencia a "Algol" generalmente se entiende como ALGOL 60 y sus dialectos. [ cita requerida ]

Historia

ALGOL fue desarrollado conjuntamente por un comité de científicos informáticos europeos y estadounidenses en una reunión en 1958 en el Instituto Federal Suizo de Tecnología en Zurich (cf. ALGOL 58 ). [9] Especificó tres sintaxis diferentes: una sintaxis de referencia, una sintaxis de publicación y una sintaxis de implementación, sintaxis que le permitían usar diferentes nombres de palabras clave y convenciones para puntos decimales (comas vs. puntos) para diferentes idiomas. [5]

ALGOL fue utilizado principalmente por científicos informáticos de investigación en los Estados Unidos y en Europa; las aplicaciones comerciales se vieron obstaculizadas por la ausencia de facilidades de entrada/salida estándar en su descripción y la falta de interés en el lenguaje por parte de los grandes proveedores de computadoras (aparte de Burroughs Corporation ). [10] Sin embargo, ALGOL 60 se convirtió en el estándar para la publicación de algoritmos y tuvo un profundo efecto en el desarrollo futuro del lenguaje. [10]

subtítulo
Árbol genealógico de la dinastía de los lenguajes de programación Algol, Fortran y COBOL

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, renombrado como forma Backus–Naur . [11]

Peter Naur: "Como editor del Boletín ALGOL, me involucré en los debates internacionales sobre el lenguaje y fui seleccionado para ser miembro del grupo de diseño del lenguaje europeo en noviembre de 1959. En esta función, fui el editor del informe ALGOL 60, elaborado como resultado de la reunión ALGOL 60 en París en enero de 1960". [12]

A la reunión en París (del 11 al 16 de enero) asistieron las siguientes personas: [5]

Alan Perlis describió con gran viveza la reunión: "Las reuniones eran agotadoras, interminables y estimulantes. Uno se enfadaba cuando sus buenas ideas eran descartadas junto con las malas de los demás. Sin embargo, la diligencia persistió durante todo el período. La química entre los 13 era excelente". [13]

ALGOL 60 inspiró a muchos lenguajes que lo siguieron. Tony Hoare comentó: "He aquí un lenguaje tan adelantado a su tiempo que no sólo fue una mejora respecto de sus predecesores sino también respecto de casi todos sus sucesores". [14] El lenguaje de programación Scheme , una variante de Lisp que adoptó la estructura de bloques y el alcance léxico de ALGOL, también adoptó la redacción "Informe revisado sobre el lenguaje algorítmico Scheme" para sus documentos de estándares en homenaje a ALGOL. [15]

ALGOL y la investigación en lenguajes de programación

Como señaló Peter Landin , [ cita requerida ] ALGOL fue el primer lenguaje en combinar sin problemas los efectos imperativos con el cálculo lambda ( de llamada por nombre ) . [ cita requerida ] Quizás la formulación más elegante del lenguaje se debe a John C. Reynolds , y exhibe mejor su pureza sintáctica y semántica. [ ¿según quién? ] El ALGOL idealizado de Reynolds también presentó un argumento metodológico convincente sobre la idoneidad de los efectos locales en el contexto de los lenguajes de llamada por nombre, en contraste con los efectos globales utilizados por los lenguajes de llamada por valor como ML . [ cita requerida ] La integridad conceptual del lenguaje lo convirtió en uno de los principales objetos de investigación semántica, junto con las Funciones Computables de Programación (PCF) y ML. [ cita requerida ]

Cronología de la implementación de IAL

Hasta la fecha ha habido al menos 70 ampliaciones, extensiones, derivaciones y sublenguajes de Algol 60. [16]

NombreAñoAutorPaísDescripciónCPU de destino
Implementación de ZMMD1958Friedrich L. Bauer , Heinz Rutishauser, Klaus Samelson, Hermann Bottenbruch AlemaniaImplementación de ALGOL 58Z22
(posteriormente el Z23 de Zuse se entregó con un compilador Algol 60) [17]
X1 ALGOL60Agosto de 1960 [18]Edsger W. Dijkstra y Jaap A. Zonneveld Países BajosPrimera implementación de ALGOL 60 [19]Electrológica X1
ALGOL de ElliottDécada de 1960Coche Hoare Reino UnidoTema de la conferencia del Premio Turing de 1980 [20]Serie Elliott 803 , Elliott 503, Elliott 4100
JOVIAL1960Julio Schwartz A NOSOTROSUn DOD HOL antes de AdaVarios (ver artículo)
Burroughs Algol
(Varias variantes)
1961Corporación Burroughs (con la participación de Hoare, Dijkstra y otros) A NOSOTROSBase de las computadoras Burroughs (y ahora basadas en Unisys MCP )Burroughs Large Systems y sus rangos medios también.
Caso ALGOL1961Instituto Tecnológico Case [21] A NOSOTROSSimula fue contratado originalmente como una extensión de simulación del caso ALGOLUNIVAC1107
GÓGOL1961William M. McKeeman A NOSOTROSPara el sistema de tiempo compartido ODIN [22]PDP-1
Centrales de regulación ALGOL1961Peter Naur y Jørn Jensen DinamarcaImplementación completa de Algol 60DASK en Regnecentralen
ALGOL 30 de Dartmouth1962Thomas Eugene Kurtz y otros. A NOSOTROSLGP-30
USS 90 Algol1962L. Petrone Italia
ALGOL 601962Bernard Vauquois , Luis Bolliet [23] FranciaInstitut d'Informatique et Mathématiques Appliquées de Grenoble (IMAG) y Compagnie des Machines BullToro Gamma 60
Traductor de Algol1962G. van der Mey y WL van der Poel Países BajosStaatsbedrijf der Posterijen, Telegrafie y TelefonieCEBRA
Kidsgrove Algol1963El mariscal de campo Duncan Reino UnidoCompañía eléctrica inglesa KDF9
Valgol1963Val Schorre A NOSOTROSUna prueba del compilador META II
Piedra de afilar1964Brian Randell y LJ Russell Reino UnidoDivisión de Energía Atómica de English Electric Company. Precursora de las implementaciones de Ferranti Pegasus , National Physical Laboratories ACE y English Electric DEUCE .Compañía eléctrica inglesa KDF9
NU ALGOL1965 NoruegaUNIVAC
ÁLGEKO1965 Unión SoviéticaАЛГЭК, basado en ALGOL-60 y soporte COBOL , para tareas económicasMinsk-22
ALGOL W1966Niklaus Wirth A NOSOTROSPropuesta de sucesor de ALGOL 60Sistema IBM/360
Malgol1966público. A. Viil, M Kotli y M. Rakhendi, RSS de EstoniaMinsk-22
ALGAMAS1967Grupo GAMS (ГАМС, группа автоматизации программирования для машин среднего класса), cooperación de Comecon Academies of ScienceComeconMinsk-22 , más tarde ES EVM , BESM
ALGOL/ZAM1967 PoloniaComputadora ZAM polaca
Simulacro 671967Ole Johan Dahl y Kristen Nygaard NoruegaAlgol 60 con clasesUNIVAC1107
ALGOL de triple efecto Karlsruhe1967/1968Karlsruhe , Alemania ALGOL 60 (1963) con números triplex para aritmética de intervalos[24]
Algol chino1972 PorcelanaCaracteres chinos, expresados ​​mediante el sistema de símbolos
Director General/L1972 A NOSOTROSFamilia de ordenadores DG Eclipse
S-algol1979Ron Morrison Reino UnidoAdición de tipos de datos ortogonales con el fin de utilizarlos como lenguaje de enseñanzaPDP-11 con una implementación posterior en la máquina virtual Java

Los dialectos de Burroughs incluían dialectos especiales de arranque como ESPOL y NEWP . Este último todavía se utiliza para el software del sistema MCP de Unisys.

Propiedades

ALGOL 60, tal como se definió oficialmente, no tenía funciones de E/S ; las implementaciones definían las suyas de maneras que rara vez eran compatibles entre sí. Por el contrario, ALGOL 68 ofrecía una amplia biblioteca de funciones de transporte (entrada/salida).

ALGOL 60 permitía dos estrategias de evaluación para el paso de parámetros : la llamada común por valor y la llamada por nombre . La llamada por nombre tiene ciertos efectos en contraste con la llamada 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 una matriz que está indexada por esa misma variable entera. [25] 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 i := 1 y A[i] := 2, por lo que cada vez que se hace referencia a swap devolverá la otra combinación de los valores ([1,2], [2,1], [1,2] y así sucesivamente). 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 los interesantes " procesadores " que se utilizan para implementarla. Donald Knuth ideó la " prueba man or boy " para separar los compiladores que implementaban correctamente la " recursión y las referencias no locales". Esta prueba contiene un ejemplo de llamada por nombre.

ALGOL 68 se definió utilizando un formalismo gramatical de dos niveles inventado por Adriaan van Wijngaarden y que lleva su nombre. Las gramáticas de Van Wijngaarden utilizan una gramática libre de contexto para generar un conjunto infinito de producciones que reconocerán un programa ALGOL 68 en particular; en particular, son capaces de expresar el tipo de requisitos que en muchos otros estándares de lenguajes de programación se etiquetan como "semánticos" y tienen que expresarse en prosa de lenguaje natural propensa a la ambigüedad, y luego implementarse en compiladores como código ad hoc adjunto al analizador de lenguaje formal.

Ejemplos y portabilidad

Comparaciones de ejemplos de código

ALGOL 60

(La forma en que debe escribirse el texto en negrita depende de la implementación, por ejemplo, 'INTEGER' (comillas incluidas) para números enteros. Esto se conoce como stropping ).

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 mayor elemento 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;comienza  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]); yo := p; k := q Fin Fin Absmax

A continuación se muestra un ejemplo de cómo producir una tabla utilizando ALGOL Elliott 803. [26]

'PRUEBA DE ALGOL DE PUNTA 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 := SEÑADO(A)' C := COS(A)' PERFORADORA DE IMPRESIÓN (3), MISMA LÍNEA , ALINEADA (1,6) , A, B, C' FIN FIN'

ALGOL 68

Los siguientes ejemplos de código son versiones ALGOL 68 de los ejemplos de código ALGOL 60 anteriores.

Las implementaciones de ALGOL 68 utilizaron los enfoques de ALGOL 60 para el stropping . En el caso de ALGOL 68, los tokens con tipografía en negrita son palabras, tipos (modos) u operadores reservados.

proc abs max = ([,] real a, ref  real y, ref  int i, k) real : comentario El mayor elemento absoluto de la matriz a, de tamaño ⌈a por 2⌈ase transfiere a y, y los subíndices de este elemento a i y k; comentario comienza  real y := 0; i := ⌊a; k := 2⌊a; para p de ⌊a a ⌈a hacer  para q de 2⌊a a 2⌈a hacer  si  abs a[p, q] > y entonces y := abs a[p, q]; yo := p; k := q fi  od  od ; yfin # abs máx #

Nota: los límites inferior (⌊) y superior (⌈) de una matriz y la segmentación de la matriz están directamente disponibles para el programador.

Prueba de algol68 de punto flotante:( verdaderos a,b,c,d;   # printf – envía la salida al archivo  stand out . # # printf($p$); – selecciona una nueva página # printf(($pg$,"Ingrese d:"));  leer(d);   para paso desde 0 mientras a:=paso*d; a <= 2*pi hacer printf($l$); # $l$ - selecciona una nueva línea . # b := sin(a); c := cos(a); printf(($zd.6d$,a,b,c)) # formatea la salida con 1 dígito antes y 6 después del punto decimal. # sobredosis)

Cronología: Hola mundo

Las variaciones y la falta de portabilidad de los programas de una implementación a otra se demuestran fácilmente con el clásico programa Hola Mundo . [ cita requerida ]

ALGOL 58 (IAL)

ALGOL 58 no tenía instalaciones de E/S.

Familia ALGOL 60

Como ALGOL 60 no tenía funciones de E/S, no hay un programa de Hola mundo portátil en ALGOL. Los tres ejemplos siguientes están en Burroughs Extended Algol. Los dos primeros envían la salida directa a la terminal interactiva en la que se ejecutan. El primero utiliza una matriz de caracteres, similar a C. El lenguaje permite que el identificador de la matriz se utilice como un puntero a la matriz y, por lo tanto, en una declaración REPLACE.

INICIO  ARCHIVO  F ( TIPO = REMOTO );  MATRIZ EBCDIC  E [ 0 : 11 ]; REEMPLAZAR E POR "¡HOLA MUNDO!" ; ESCRIBIR ( F , * , E ); FIN .         

Un programa más simple que utiliza un formato en línea:

INICIO  ARCHIVO  F ( TIPO = REMOTO );  ESCRIBIR ( F ,  < "HOLA MUNDO!" > );  FIN .

Un programa aún más simple que utiliza la instrucción Display. Observe que su salida terminaría en la consola del sistema ('SPO'):

INICIO  PANTALLA ( "¡HOLA MUNDO!" )  FIN .

Un ejemplo alternativo, que utiliza la entrada/salida de Elliott Algol, es el siguiente. Elliott Algol utilizó caracteres diferentes para "abrir-cadena-comillas" y "cerrar-cadena-comillas", representados aquí por ' y ' .

programa HiFolks ; comenzar imprimir ' Hola mundo ' fin ;      

A continuación se muestra una versión de Elliott 803 Algol (A104). El Elliott 803 estándar utilizaba una cinta de papel de cinco agujeros y, por lo tanto, solo tenía mayúsculas. El código carecía de caracteres de comillas, por lo que se utilizaba £ (signo de libra esterlina) para las comillas de apertura y ? (signo de interrogación) para las comillas de cierre. Las secuencias especiales se colocaban entre comillas dobles (por ejemplo, ££L?? producía una nueva línea en el teletipo).

 Gente de alta sociedad COMENZAR IMPRIMIR £HOLA MUNDO£L??' FIN'

La versión de E/S de Algol de la serie ICT 1900 permitía la entrada desde una cinta de papel o una tarjeta perforada. El modo "completo" de cinta de papel permitía el uso de minúsculas. La salida se realizaba a una impresora de línea. Los caracteres de comillas de apertura y cierre se representaban mediante '(' y ')' y espacios en %. [27]

 'COMENZAR' ESCRIBIR TEXTO('('HOLA%MUNDO')'); 'FIN'

ALGOL 68

El código ALGOL 68 se publicó con palabras reservadas, normalmente en minúsculas, pero en negrita o subrayadas.

comenzar printf(($gl$,"¡Hola, mundo!"))fin

En el lenguaje del "Informe Algol 68", las instalaciones de entrada/salida se denominaban colectivamente "Transput".

Cronología de los personajes especiales de ALGOL

Los ALGOL fueron concebidos en una época en la que los conjuntos de caracteres eran diversos y evolucionaban rápidamente; además, los ALGOL se definieron de modo que solo se requirieran letras mayúsculas .

1960: IFIP – El lenguaje y el informe Algol 60 incluían varios símbolos matemáticos que están disponibles en los ordenadores y sistemas operativos modernos, pero que, lamentablemente, no eran compatibles con la mayoría de los sistemas informáticos de la época. Por ejemplo: ×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣ y ⏨.

Septiembre de 1961: ASCII – Al conjunto de caracteres ASCII , que entonces se encontraba en una etapa temprana de desarrollo, se le agregó el carácter \ (barra invertida) para admitir los operadores booleanos /\ y \/ de ALGOL . [28]

1962: ALCOR – Este conjunto de caracteres incluía el inusual carácter de cruz rúnica "᛭" [29] para la multiplicación y el símbolo de exponente decimal "⏨" [30] para la notación de punto flotante. [31] [32] [33]

1964: GOST – El estándar soviético GOST 10859 de 1964 permitió la codificación de caracteres de 4 bits, 5 bits, 6 bits y 7 bits en ALGOL. [34]

1968: El "Informe Algol 68" – utilizó los caracteres ALGOL existentes y adoptó además los caracteres →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥ y ¢ que se pueden encontrar en el teclado IBM 2741 con cabezales de impresión typeball (o golf ball ) insertados (como el APL golf ball ). Estos estuvieron disponibles a mediados de la década de 1960 mientras se redactaba ALGOL 68. El informe se tradujo al ruso, alemán, francés y búlgaro, y permitió la programación en idiomas con conjuntos de caracteres más grandes, por ejemplo, el alfabeto cirílico del BESM -4 soviético. Todos los caracteres de ALGOL también son parte del estándar Unicode y la mayoría de ellos están disponibles en varias fuentes populares .

Octubre de 2009: Unicode – El (símbolo de exponente decimal) para notación de punto flotante se agregó a Unicode 5.2 para compatibilidad con versiones anteriores del histórico software ALGOL del programa Buran . [35]

Legado

Una contribución importante del Informe ALGOL 58 fue proporcionar términos estándar para los conceptos de programación: declaración, instrucción, tipo, etiqueta, primario, bloque y otros. [10]

Véase también

Referencias

  1. ^ El nombre de esta familia lingüística se da a veces en mayúsculas y minúsculas (Algol 60 Archivado el 25 de junio de 2007 en Wayback Machine ), y a veces en mayúsculas (ALGOL68 Archivado el 13 de septiembre de 2014 en Wayback Machine ). Para simplificar, este artículo utiliza ALGOL .
  2. ^ Algoritmos recopilados del ACM Archivado el 17 de octubre de 2011 en Wikiwix Archivos comprimidos de los algoritmos. ACM .
  3. ^ O'Hearn, PW; Tennent, RD (septiembre de 1996). "Lenguajes similares a Algol, Introducción". Archivado desde el original el 14 de noviembre de 2011.
  4. ^ "El lenguaje de programación ALGOL" Archivado el 6 de octubre de 2016 en Wayback Machine , Universidad de Michigan-Dearborn
  5. ^ abc Backus, John Warner ; Bauer, Friedrich Ludwig ; Green, Julien; Katz, Charles ; McCarthy, John ; Naur, Peter ; Perlis, Alan Jay ; Rutishauser, Heinz ; Samelson, Klaus ; Vauquois, Bernard ; Wegstein, Joseph Henry ; van Wijngaarden, Adriaan ; Woodger, Michael (mayo de 1960). Naur, Peter (ed.). "Informe sobre el lenguaje algorítmico ALGOL 60". Comunicaciones de la ACM . 3 (5). Copenhague, Dinamarca: 299–314. doi : 10.1145/367236.367262 . ISSN  0001-0782. S2CID  278290.
  6. ^ "Informe revisado sobre el lenguaje algorítmico Algol 60". 1963. Archivado desde el original el 25 de junio de 2007. Consultado el 8 de junio de 2007 .
  7. ^ "Un traductor ALGOL 60 para el X1" (PDF) . 1961. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 7 de enero de 2021 .
  8. ^ "Informe revisado sobre el lenguaje algorítmico ALGOL 68" (PDF) . 1973. Archivado (PDF) desde el original el 13 de septiembre de 2014. Consultado el 13 de septiembre de 2014 .
  9. ^ "Historia de ALGOL — Software Preservation Group". www.softwarepreservation.org . Consultado el 14 de marzo de 2024 .
  10. ^ abc Bemer, Bob. "Una historia político-social de Algol" (PDF) . Museo de Historia de la Computación . Consultado el 9 de agosto de 2024 .
  11. ^ Knuth, Donald E. (1964). "Forma normal de Backus frente a forma de Backus Naur". Comunicaciones de la ACM . 7 (12): 735–736. doi : 10.1145/355588.365140 . S2CID  47537431.
  12. ^ Mención del premio ACM: Peter Naur Archivado el 2 de abril de 2012 en Archive-It , 2005
  13. ^ Perlis, Alan J (1978). "El lado americano del desarrollo de ALGOL". Historia de los lenguajes de programación. pp. 75–91. doi :10.1145/800025.1198352. ISBN 0-12-745040-8– vía dl.acm.org.
  14. ^ "Consejos sobre el diseño de lenguajes de programación" Archivado el 15 de septiembre de 2009 en Wayback Machine , CAR Hoare, diciembre de 1973. Página 27. (Esta afirmación a veces se atribuye erróneamente a Edsger W. Dijkstra , también involucrado en la implementación del primer compilador ALGOL 60 ).
  15. ^ Dybvig, RK; et al. Rees, Jonathan; Clinger, William; Abelson, Hal (eds.). "Informe revisado(3) sobre el esquema de lenguaje algorítmico (dedicado a la memoria de ALGOL 60)". Archivado desde el original el 14 de enero de 2010 . Consultado el 20 de octubre de 2009 .
  16. ^ "La enciclopedia de lenguajes informáticos". Archivado desde el original el 27 de septiembre de 2011. Consultado el 20 de enero de 2012 .
  17. ^ Historia del Museo de la Computación Archivado el 20 de agosto de 2010 en Wayback Machine , Computadora histórica Zuse Z23, restaurada por la Konrad Zuse Schule en Hünfeld, para el Centro de Historia del Museo de la Computación en Mountain View (California) EE.UU.
  18. ^ Daylight, EG (2011). "El grito de guerra de Dijkstra por la generalización: el advenimiento del procedimiento recursivo, finales de los años 1950 y principios de los años 1960". The Computer Journal . 54 (11): 1756–1772. CiteSeerX 10.1.1.366.3916 . doi :10.1093/comjnl/bxr002. Archivado desde el original el 12 de marzo de 2013. 
  19. ^ Kruseman Aretz, FEJ (30 de junio de 2003). "El compilador ALGOL 60 de Dijkstra-Zonneveld para Electrologica X1". Ingeniería de software (PDF) . Historia de la informática. Ámsterdam: Centrum Wiskunde & Informatica. Archivado (PDF) desde el original el 4 de marzo de 2016.
  20. ^ Hoare, Antony (1980). "Las viejas ropas del Emperador". Comunicaciones de la ACM . 24 (2): 75–83. doi : 10.1145/358549.358561 .
  21. ^ Koffman, Eliot. "Todo lo que realmente necesito saber lo aprendí en CS1" (PDF) . Archivado desde el original (PDF) el 12 de octubre de 2012. Consultado el 20 de mayo de 2012 .
  22. ^ "GOGOL – PDP-1 Algol 60 (lenguaje informático)". Enciclopedia histórica en línea de lenguajes de programación. Archivado desde el original el 2 de febrero de 2018. Consultado el 1 de febrero de 2018 .
  23. ^ 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. doi :10.1109/MAHC.2014.50. ISSN  1058-6180. S2CID  16684090.
  24. ^ Wippermann, Hans-Wilm (1968) [15 de junio de 1967, 1966]. "Definición von Schrankenzahlen en Triplex-ALGOL". Computación (en alemán). 3 (2). Karlsruhe, Alemania: Springer: 99-109. doi :10.1007/BF02277452. ISSN  0010-485X. S2CID  36685400.
  25. ^ Aho, Alfred V. ; Sethi, Ravi ; Ullman, Jeffrey D. (1986). Compiladores: principios, técnicas y herramientas (1.ª ed.). Addison-Wesley. ISBN 0-201-10194-7., Sección 7.5 y referencias allí contenidas
  26. ^ "803 ALGOL" Archivado el 29 de mayo de 2010 en Wayback Machine , el manual de Elliott 803 ALGOL
  27. ^ "Serie ICL 1900: Lenguaje Algol". Publicación técnica ICL 3340. 1965.
  28. ^ Cómo el ASCII obtuvo su barra invertida Archivado el 11 de julio de 2014 en Wayback Machine , Bob Bemer
  29. ^ cruz de hierro/rúnica
  30. ^ Símbolo de exponente decimal
  31. ^ Baumann, R. (octubre de 1961). “Manual ALGOL del Grupo ALCOR, Parte 1” [Manual ALGOL del Grupo ALCOR]. Elektronische Rechenanlagen (en alemán): 206–212.
  32. ^ Baumann, R. (diciembre de 1961). “Manual ALGOL del Grupo ALCOR, Parte 2” [Manual ALGOL del Grupo ALCOR]. Elektronische Rechenanlagen (en alemán). 6 : 259–265.
  33. ^ Baumann, R. (abril de 1962). "Manual ALGOL del Grupo ALCOR, Parte 3" [Manual ALGOL del Grupo ALCOR]. Elektronische Rechenanlagen (en alemán). 2 .
  34. ^ "Norma GOST 10859". Archivado desde el original el 16 de junio de 2007. Consultado el 5 de junio de 2007 .
  35. ^ Broukhis, Leonid (22 de enero de 2008). "Propuesta revisada para codificar el símbolo del exponente decimal" (PDF) . www.unicode.org . ISO/IEC JTC 1/SC 2/WG 2. Archivado (PDF) del original el 31 de julio de 2015 . Consultado el 24 de enero de 2016 . Esto significa que aún puede surgir la necesidad de transcodificar software y documentación basados ​​en GOST: los algoritmos numéricos heredados (algunos de los cuales pueden ser de interés, por ejemplo, para el aterrizaje automático del transbordador Buran ...) optimizados para la representación de punto flotante no IEEE de BESM-6 no se pueden simplemente volver a compilar y esperar que funcionen de manera confiable, y puede ser necesaria alguna intervención humana.

Lectura adicional

  • O'Hearn, Peter; Tennent, Robert D., eds. (1997). Lenguajes similares a Algol . Vol. 1. Cambridge, MA: Birkhauser. doi :10.1007/978-1-4612-4118-8. ISBN . 9780817638801.S2CID6273486  .El primer volumen de un conjunto de dos volúmenes, que incluye una introducción de Peter W. O'Hearn y Robert D. Tennent, un informe sobre Algol 60 de Peter Naur y colegas, cuatro capítulos de John C. Reynolds y otros capítulos de Christopher Strachey , Matthias Felleisen , Stephen Weeks , Albert R. Meyer , Kurt Sieber, Vipin Swarup, Uday S. Reddy y Evan Ireland.
  • Baumann, Richard [en alemán] ; Feliciano, Manuel; Bauer, Friedrich Ludwig ; Samelson, Klaus (1964). Introducción a ALGOL: una introducción para el no especialista, que enfatiza los usos prácticos del lenguaje algorítmico. Computación automática. Englewood Cliffs, NJ: Prentice-Hall, Inc. ISBN 0134778286. LCCN  64-10740. ark:/13960/t6qz35p37 . Consultado el 23 de octubre de 2022 .
  • Randell, Brian y LJ Russell (1964). Implementación de ALGOL 60: la traducción y el uso de programas de ALGOL 60 en una computadora. Academic Press. CiteSeerX  10.1.1.737.475 .. Sobre el diseño del compilador Whetstone y una de las primeras descripciones publicadas sobre la implementación de un compilador. Para consultar un artículo relacionado, consulte Whetstone Algol Revisited de Brian Randell , archivado el 27 de febrero de 2008 en Wayback Machine , y The Whetstone KDF9 Algol Translator.
  • Dijkstra, E. W (1961), Traducción de ALGOL 60: An ALGOL 60 Translator for the X1 and Making a Translator for ALGOL 60 (PDF) , informe MR 35/61, Amsterdam: Mathematisch Centrum, archivado (PDF) desde el original en 9 de octubre de 2022
  • Kruseman Aretz, Frans EJ, The Dijkstra-Zonneveld ALGOL 60 Compiler for the Electrologica X1 (PDF) , nota histórica SEN, 2, Amsterdam: Centrum voor Wiskunde en Informatica, archivado (PDF) desde el original el 9 de octubre de 2022
  • 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 . Archivado (PDF) desde el original el 19 de mayo de 2022 . Consultado el 14 de noviembre de 2022 .
  • Informe revisado sobre el lenguaje algorítmico Algol 60 por Peter Naur, et al.
  • La parte europea de la última fase del desarrollo de ALGOL 60, por Peter Naur
  • Una historia de ALGOL desde el Museo de Historia de la Computación
  • Un compilador ALGOL-F habilitado para la web que permite realizar pequeños experimentos [ enlace muerto permanente ]
  • Un compilador ALGOL en línea
  • Compilador ALGOL60 de Jan van Katwijk (GitHub)
Retrieved from "https://en.wikipedia.org/w/index.php?title=ALGOL&oldid=1251387121"