ALGOL ( / æ l del ɡ del ɒ l , - del ɡ ɔ l / ; abreviatura de " algorítmico Lenguaje ") [1] es una familia de imperativos equipo lenguajes de programación desarrollado originalmente en 1958. ALGOL fuertemente influenciado muchos otros idiomas y fue el método estándar para la descripción de algoritmos utilizados por la Association for Computing Machinery (ACM) en libros de texto y fuentes académicas durante más de treinta años. [2]
Paradigma | Procesal , imperativo , estructurado |
---|---|
Familia | ALGOL |
Diseñada por | Bauer , Bottenbruch , Rutishauser , Samelson , Backus , Katz , Perlis , Wegstein , Naur , Vauquois , van Wijngaarden , Woodger , Green , McCarthy |
Apareció por primera vez | 1958 |
Disciplina de mecanografía | Estático , fuerte |
Alcance | Léxico |
Influenciado | |
La mayoría de los lenguajes imperativos posteriores (los llamados lenguajes similares a ALGOL ), por ejemplo, PL / I , Simula , BCPL , B , Pascal , C |
En el sentido de que la sintaxis de la mayoría de los lenguajes modernos es "similar a Algol", [3] fue posiblemente el más influyente de los cuatro 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 que se observan con FORTRAN y finalmente dio lugar a muchos otros lenguajes de programación, incluyendo PL / I , Simula , BCPL , B , Pascal y C .
ALGOL introdujo bloques de código y los pares begin
... end
para 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 del lenguaje formal y, a través del Informe Algol 60, introdujo la forma Backus-Naur , una notación gramatical formal principal para el diseño del lenguaje.
Había tres especificaciones principales, nombradas después de los años en que se publicaron por primera vez:
- ALGOL 58 - originalmente propuesto para llamarse IAL , para Lenguaje Algebraico Internacional .
- ALGOL 60 : implementado por primera vez como X1 ALGOL 60 a mediados de 1960. Revisado en 1963. [5] [6]
- ALGOL 68 : introdujo nuevos elementos que incluyen matrices flexibles, cortes, paralelismo e identificación del operador. Revisado en 1973. [7]
ALGOL 68 es sustancialmente diferente de ALGOL 60 y no fue bien recibido, por lo que en general "Algol" significa ALGOL 60 y sus dialectos.
Implementaciones importantes
El Lenguaje Algebraico Internacional (IAL), rebautizado como ALGOL 58 , fue muy influyente y, en general, se consideró el antepasado de la mayoría de los lenguajes de programación modernos (los denominados lenguajes tipo Algol). Además, el código objeto de ALGOL era una arquitectura de conjunto de instrucciones simple, compacta y basada en pilas que se usaba comúnmente en la enseñanza de la construcción de compiladores y otros lenguajes de alto orden; de los cuales Algol generalmente se considera el primero.
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 ( ETH Zurich ; cf. ALGOL 58 ). Especificó tres sintaxis diferentes: una sintaxis de referencia, una sintaxis de publicación y una sintaxis de implementación. Las diferentes sintaxis le permitieron usar diferentes nombres de palabras clave y convenciones para puntos decimales (comas frente a puntos) para diferentes idiomas.
ALGOL fue utilizado principalmente por científicos informáticos de investigación en los Estados Unidos y en 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 en el lenguaje por parte de grandes proveedores de computadoras además de Burroughs Corporation . Sin embargo, ALGOL 60 se convirtió en el estándar para la publicación de algoritmos y tuvo un efecto profundo en el desarrollo futuro del lenguaje.
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, a sugerencia de Donald Knuth , se le cambió el nombre a la forma Backus-Naur . [8]
Peter Naur: "Como editor del Boletín ALGOL, me involucré en los debates internacionales sobre el idioma y fui seleccionado para ser miembro del grupo de diseño lingüístico europeo en noviembre de 1959. En esta capacidad, fui el editor del informe ALGOL 60, producido como resultado de la reunión de ALGOL 60 en París en enero de 1960 ". [9]
Las siguientes personas asistieron a la reunión en París (del 1 al 16 de enero):
- Friedrich L. Bauer , Peter Naur , Heinz Rutishauser , Klaus Samelson , Bernard Vauquois , Adriaan van Wijngaarden y Michael Woodger (de Europa)
- John W. Backus , Julien Green , Charles Katz , John McCarthy , Alan J. Perlis y Joseph Henry Wegstein (de EE. UU.).
Alan Perlis dio una vívida descripción de la reunión: "Las reuniones fueron agotadoras, interminables y estimulantes. Uno se agravaba cuando se descartaban las buenas ideas de uno junto con las malas de los demás. Sin embargo, la diligencia persistió durante todo el período. La química de el 13 fue excelente ".
ALGOL 60 inspiró muchos idiomas que le siguieron. Tony Hoare comentó: "Aquí hay un lenguaje tan adelantado a su tiempo que no solo fue una mejora con respecto a sus predecesores, sino también a casi todos sus sucesores". [10] 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 esquema de lenguaje algorítmico" para sus documentos de estándares en homenaje a ALGOL. [11]
Investigación de ALGOL y lenguajes de programación
Como señaló Peter Landin , ALGOL fue el primer idioma en combinar a la perfección efectos imperativos con el cálculo lambda ( llamada por nombre ) . Quizás la formulación más elegante del lenguaje se deba a John C. Reynolds , y muestra mejor su pureza sintáctica y semántica. El ALGOL idealizado de Reynolds también presentó un argumento metodológico convincente con respecto a 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 . La integridad conceptual del lenguaje lo convirtió en uno de los principales objetos de investigación semántica, junto con la Programación de Funciones Computables (PCF) y ML. [12]
Cronograma de implementaciones de IAL
Hasta la fecha ha habido al menos 70 ampliaciones, extensiones, derivaciones y sublenguajes de Algol 60. [13]
Nombre | Año | Autor | País | Descripción | CPU de destino |
---|---|---|---|---|---|
Implementación de ZMMD | 1958 | Friedrich L. Bauer , Heinz Rutishauser, Klaus Samelson, Hermann Bottenbruch | Alemania | implementación de ALGOL 58 | Z22 (más tarde , el Z23 de Zuse se entregó con un compilador Algol 60) [14] |
X1 ALGOL 60 | Agosto de 1960 [15] | Edsger W. Dijkstra y Jaap A. Zonneveld | Países Bajos | Primera implementación de ALGOL 60 [16] | Electrologica X1 |
Elliott ALGOL | 1960 | COCHE Hoare | Reino Unido | Tema de la conferencia de Turing de 1980 [17] | Serie Elliott 803 , Elliott 503, Elliott 4100 |
JOVIAL | 1960 | Jules Schwartz | EE.UU | A DOD HOL antes de Ada | Varios (ver artículo) |
Algol de Burroughs (Varias variantes) | 1961 | Burroughs Corporation (con participación de Hoare, Dijkstra y otros) | EE.UU | Base de las computadoras Burroughs (y ahora basadas en Unisys MCP ) | Burroughs sistemas grandes y su rango medio también. |
Caso ALGOL | 1961 | Case Institute of Technology [18] | EE.UU | Simula se contrató originalmente como una extensión de simulación del Caso ALGOL | UNIVAC 1107 |
GOGOL | 1961 | William M. McKeeman | EE.UU | Para el sistema de tiempo compartido ODIN [19] | PDP-1 |
RegneCentralen ALGOL | 1961 | Peter Naur , Jørn Jensen | Dinamarca | Implementación de Algol 60 completo | DASK en Regnecentralen |
Dartmouth ALGOL 30 | 1962 | Thomas Eugene Kurtz y col. | EE.UU | LGP-30 | |
USS 90 Algol | 1962 | L. Petrone | Italia | ||
Traductor de Algol | 1962 | G. van der Mey y WL van der Poel | Países Bajos | Staatsbedrijf der Posterijen, Telegrafie en Telefonie | CEBRA |
Kidsgrove Algol | 1963 | FG Duncan | Reino Unido | Compañía eléctrica inglesa KDF9 | |
VALGOL | 1963 | Val Schorre | EE.UU | Una prueba del compilador del compilador META II | |
Piedra de afilar | 1964 | Brian Randell y LJ Russell | Reino Unido | División de Energía Atómica de English Electric Company. Precursor de las implementaciones de Ferranti Pegasus , National Physical Laboratories ACE y English Electric DEUCE . | Compañía eléctrica inglesa KDF9 |
NU ALGOL | 1965 | Noruega | UNIVAC | ||
ALGEK | 1965 | URSS | АЛГЭК, basado en el soporte ALGOL-60 y COBOL , para tareas económicas | Minsk-22 | |
ALGOL W | 1966 | Niklaus Wirth | EE.UU | Propuesta de sucesor de ALGOL 60 | IBM System / 360 |
MALGOL | 1966 | publ. A. Viil, M Kotli y M. Rakhendi, | RSS de Estonia | Minsk-22 | |
ALGAMS | 1967 | Grupo GAMS (ГАМС, группа автоматизации программирования для машин среднего класса), cooperación de Comecon Academies of Science | Comecon | Minsk-22 , más tarde ES EVM , BESM | |
ALGOL / ZAM | 1967 | Polonia | Ordenador ZAM polaco | ||
Simula 67 | 1967 | Ole-Johan Dahl y Kristen Nygaard | Noruega | Algol 60 con clases | UNIVAC 1107 |
Algol chino | 1972 | porcelana | Caracteres chinos, expresados a través del sistema de símbolos | ||
DG / L | 1972 | EE.UU | Familia de ordenadores DG Eclipse | ||
S-algol | 1979 | Ron Morrison | Reino Unido | Adición de tipos de datos ortogonales con uso previsto como lenguaje de enseñanza | PDP-11 con una implementación posterior en Java VM |
Los dialectos de Burroughs incluían dialectos especiales de Bootstrapping como ESPOL y NEWP . Este último todavía se utiliza para el software del sistema Unisys MCP.
Propiedades
ALGOL 60, tal como se definió oficialmente, no tenía instalaciones de E / S ; las implementaciones definían las suyas de formas que rara vez eran compatibles entre sí. En contraste, ALGOL 68 ofreció una extensa biblioteca de facilidades de transput (entrada / salida).
ALGOL 60 permitió 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 indexada por esa misma variable entera. . [20] Piense en pasar un puntero para intercambiar (i, A [i]) en una función. Ahora que cada vez que se hace referencia a swap, se reevalúa. Diga 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 de hombre o niño " para separar compiladores que implementaron correctamente " referencias recursivas y 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 lenguaje de programación se etiquetan como "semántica" y deben expresarse en una prosa de lenguaje natural propensa a la ambigüedad, y luego implementarse en compiladores como código ad hoc adjunto al lenguaje formal. analizador.
Ejemplos y problemas de portabilidad
Comparaciones de muestras de código
ALGOL 60
(La forma en que se debe escribir el texto en negrita depende de la implementación, por ejemplo, 'INTEGER' (comillas incluidas) para el número entero . Esto se conoce como trazo ).
procedimiento Absmax (a) Tamaño: (n, m) Resultado: (y) Subíndices: (i, k); valor n, m; matriz a; número entero n, m, i, k; realmente ;comentario El elemento más grande absoluto de la matriz a, de tamaño n por m se transfiere ay, 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 que n hacer para q: = 1 paso 1 hasta que m hacer si abs (a [p, q])> y luego comienza y: = abs (a [p, q]); i: = p; k: = q final final Absmax
Aquí hay un ejemplo de cómo producir una tabla usando Elliott 803 ALGOL. [21]
PRUEBA ALGOL PUNTO FLOTANTE ' COMIENZA REAL A, B, C, D ' RE AÑADIR' PARA A: = 0.0 PASO D HASTA 6.3 HACER EMPEZAR IMPRIMIR PUNZÓN (3), £ £ L ?? ' B: = SIN (A) ' C: = COS (A) ' IMPRIMIR PUNZÓN (3), SAMELINE, ALINEADO (1,6), A, B, C ' FINAL' FINAL'
PUNCH (3) envía la salida a la teleimpresora en lugar de a la perforadora de cinta.
SAMELINE suprime el retorno de carro + avance de línea normalmente impreso entre argumentos.
ALIGNED (1,6) controla el formato de la salida con 1 dígito antes y 6 después del punto decimal.
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 estropear . En el caso de ALGOL 68, los tokens con el tipo de letra en negrita son palabras, tipos ( modos ) u operadores reservados .
proc abs max = ([,] real a, ref real y, ref int i, k) real : comment El elemento absoluto más grande de la matriz a, de tamaño ⌈a por 2⌈ase transfiere ay, y los subíndices de este elemento a i y k; el comentario comienza real y: = 0; yo: = ⌊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]; i: = p; k: = q fi od od ; yend # abs max #
Nota: los límites inferior (⌊) y superior (⌈) de una matriz y el corte de matriz están disponibles directamente para el programador.
prueba algol68 de punto flotante:( real a, b, c, d; # printf : envía la salida al archivo destacado . # # printf ($ p $); - selecciona una nueva página # printf (($ pg $, "Ingresa d:")); re añadir); para el paso desde 0 mientras a: = paso * d; a <= 2 * pi do printf ($ l $); # $ l $ - selecciona una nueva línea . # b: = pecado (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 programa clásico hello world .
ALGOL 58 (IAL)
ALGOL 58 no tenía instalaciones de E / S.
Familia ALGOL 60
Dado que ALGOL 60 no tenía instalaciones de E / S, no existe un programa portátil hello world en ALGOL. Los siguientes tres ejemplos están en Burroughs Extended Algol. Las dos primeras salidas directas en el terminal interactivo en el que se ejecutan. El primero usa una matriz de caracteres, similar a C. El lenguaje permite que el identificador de la matriz se use como un puntero a la matriz y, por lo tanto, en una instrucción REPLACE.
EMPEZAR ARCHIVO F (TIPO = REMOTO); ARRAYE EBCDIC E [0:11]; SUSTITUYA E POR "¡HOLA MUNDO!"; ESCRIBIR (F, *, E);FINAL.
Un programa más simple que usa un formato en línea:
EMPEZAR ARCHIVO F (TIPO = REMOTO); ESCRIBIR (F, <"¡HOLA MUNDO!">);FINAL.
Un programa aún más simple que usa la declaración Display. Tenga en cuenta que su salida terminaría en la consola del sistema ('SPO'):
BEGIN DISPLAY ("¡HOLA MUNDO!") FIN.
Un ejemplo alternativo, el uso de E / S de Elliott Algol es el siguiente. Elliott Algol usó diferentes caracteres para "open-string-quote" y "close-string-quote":
programa HiFolks; comenzar a imprimir 'Hola mundo'; terminar ;
Aquí hay una versión para el Elliott 803 Algol (A104) El Elliott 803 estándar usaba cinta de papel de 5 orificios y, por lo tanto, solo tenía mayúsculas. El código carecía de caracteres de cotización, por lo que se utilizó £ (signo de libra esterlina) para la cotización abierta y? (Signo de interrogación) para una cita cercana. Las secuencias especiales se colocaron entre comillas dobles (por ejemplo, £ £ L ?? produjo una nueva línea en la teleimpresora).
HOLA AMIGOS' EMPEZAR IMPRIMIR £ HOLA MUNDO £ L ?? ' FINAL'
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 'completo' permite minúsculas. La salida fue a una impresora de línea. Los caracteres de comillas de apertura y cierre se representaron usando '(' y ')' y espacios con%. [22]
'EMPEZAR' ESCRIBIR TEXTO ('(' HOLA% MUNDO ')'); 'FINAL'
ALGOL 68
El código ALGOL 68 se publicó con palabras reservadas generalmente en minúsculas, pero en negrita o subrayadas.
empezar printf (($ gl $, "¡Hola, mundo!"))final
En el lenguaje del "Informe Algol 68", las facilidades de entrada / salida se denominaron colectivamente "Transput".
Cronología de los personajes especiales de ALGOL
Los ALGOL fueron concebidos en un momento en 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 computadoras y sistemas operativos modernos, pero, desafortunadamente, no eran compatibles con la mayoría de los sistemas informáticos en ese momento. Por ejemplo: ×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣ y ⏨.
Septiembre de 1961: ASCII - El conjunto de caracteres ASCII , entonces en una etapa temprana de desarrollo, tenía el carácter \ (barra invertida) agregado para admitir los operadores booleanos / \ y \ / de ALGOL . [23]
1962: ALCOR - Este conjunto de caracteres incluía el carácter inusual de cruz rúnica "" [24] para la multiplicación y el símbolo de exponente decimal "⏨" [25] para la notación de punto flotante. [26] [27] [28]
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. [29]
1968: El "Informe Algol 68" - usó caracteres ALGOL existentes, y además adoptó caracteres →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥ y ¢ que se pueden encontrar en el teclado IBM 2741 con cabezales de impresión typeball (o pelota de golf ) insertados (como la pelota de golf APL ). 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 forman 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 software histórico ALGOL del programa Buran . [30]
Ver también
- Lenguaje de programación de direcciones
- Atlas Autocode
- Coral 66
- IMP de Edimburgo
- Dispositivo de Jensen
- YO NADO
- JOVIAL
- Tron (videojuego)
- NELIAC
- Simula
- S-algol
- Scheme (lenguaje de programación)
Referencias
- ^ El nombre de esta familia de idiomas a veces se da 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 ). Por simplicidad, este artículo utiliza ALGOL .
- ^ Algoritmos recopilados de ACM Archivado el 17 de octubre de 2011 en Wikiwix Archivos comprimidos de los algoritmos. ACM .
- ^ O'Hearn, PW; Tennent, RD (septiembre de 1996). "Lenguajes tipo algol, Introducción" . Archivado desde el original el 14 de noviembre de 2011.
- ^ "El lenguaje de programación ALGOL" Archivado el 6 de octubre de 2016 en Wayback Machine , Universidad de Michigan-Dearborn
- ^ Backus, JW; Bauer, FL; Green, J .; Katz, C .; McCarthy, J .; Perlis, AJ; Rutishauser, H .; Samelson, K .; Vauquois, B .; Wegstein, JH; van Wijngaarden, A .; Woodger, M. (mayo de 1960). Naur, Peter (ed.). Informe sobre el lenguaje algorítmico ALGOL 60 . Copenhague. doi : 10.1145 / 367236.367262 . ISSN 0001-0782 .
- ^ "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 .
- ^ "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 .
- ^ Knuth, Donald E. (1964). "Forma normal de Backus vs forma de Backus Naur". Comunicaciones de la ACM . 7 (12): 735–736. doi : 10.1145 / 355588.365140 .
- ^ Cita del premio ACM: Peter Naur Archivado el 2 de abril de 2012 en Archive-It , 2005
- ^ "Hints on Programming Language Design" Archivado el 15 de septiembre de 2009 en Wayback Machine , CAR Hoare, diciembre de 1973. Página 27. (Esta declaración a veces se atribuye erróneamente a Edsger W. Dijkstra , también involucrado en la implementación del primer compilador ALGOL 60).
- ^ 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 .
- ^ O'Hearn, Peter ; Tennent, Robert D. (1997). Lenguajes tipo Algol . Cambridge, Massachusetts, Estados Unidos: Birkhauser Boston. doi : 10.1007 / 978-1-4612-4118-8 . ISBN 978-0-8176-3880-1.
- ^ "La enciclopedia de los lenguajes informáticos" . Archivado desde el original el 27 de septiembre de 2011 . Consultado el 20 de enero de 2012 .
- ^ Computer Museum History Archivado el 20 de agosto de 2010 en Wayback Machine , Historical Zuse-Computer Z23, restaurado por Konrad Zuse Schule en Hünfeld, para el Computer Museum History Center en Mountain View (California) EE. UU.
- ^ Luz del día, EG (2011). "Grito de guerra de Dijkstra para la generalización: el advenimiento del procedimiento recursivo, finales de 1950 - principios de 1960" . The Computer Journal . 54 : 1756-1772. CiteSeerX 10.1.1.366.3916 . doi : 10.1093 / comjnl / bxr002 . Archivado desde el original el 12 de marzo de 2013.
- ^ Kruseman Aretz, FEJ (30 de junio de 2003). "El compilador Dijkstra-Zonneveld ALGOL 60 para Electrologica X1". Ingeniería de software (PDF) . Historia de la informática. Kruislaan 413, 1098 SJ Amsterdam: Centrum Wiskunde & Informatica. Archivado (PDF) desde el original el 4 de marzo de 2016.Mantenimiento de CS1: ubicación ( enlace )
- ^ Hoare, Antony (1980). "La ropa vieja del emperador" . Comunicaciones de la ACM . 24 (2). doi : 10.1145 / 358549.358561 . Archivado desde el original el 13 de septiembre de 2017.
- ^ 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 .
- ^ "GOGOL - PDP-1 Algol 60 (Lenguaje de computadora)" . 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 .
- ^ 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 en el mismo
- ^ "803 ALGOL" Archivado el 29 de mayo de 2010 en Wayback Machine , el manual de Elliott 803 ALGOL
- ^ "Serie ICL 1900: lenguaje Algol" . Publicación técnica ICL 3340. 1965.
- ^ Cómo ASCII obtuvo su barra invertida Archivado el 11 de julio de 2014 en Wayback Machine , Bob Bemer
- ^ hierro / cruz rúnica
- ^ Símbolo de exponente decimal
- ^ Baumann, R. (octubre de 1961). "Manual ALGOL del Grupo ALCOR, Parte 1" [Manual ALGOL del Grupo ALCOR]. Elektronische Rechenanlagen (en alemán): 206–212.
- ^ 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.
- ^ Baumann, R. (abril de 1962). "Manual ALGOL del Grupo ALCOR, Parte 3" [Manual ALGOL del Grupo ALCOR]. Elektronische Rechenanlagen (en alemán). 2 .
- ^ "Estándar GOST 10859" . Archivado desde el original el 16 de junio de 2007 . Consultado el 5 de junio de 2007 .
- ^ 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) desde el 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 el software y la documentación basados en GOST: 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 el punto flotante no IEEE La representación de BESM-6 no se puede simplemente volver a compilar y se espera que funcione de manera confiable, y puede ser necesaria alguna intervención humana.
Otras lecturas
- FL Bauer, R. Baumann, M. Feliciano, K. Samelson, Introducción a Algol . Prentice Hall, 1964, ISBN 0-13-477828-6
- Brian Randell y LJ Russell, Implementación de ALGOL 60: la traducción y el uso de programas ALGOL 60 en una computadora . Academic Press, 1964. El diseño del compilador Whetstone . Una de las primeras descripciones publicadas sobre la implementación de un compilador. Consulte los artículos relacionados: Whetstone Algol Revisited y The Whetstone KDF9 Algol Translator de Brian Randell
- Dijkstra, E. W (1961), traducción de Algol 60: un traductor de algol 60 para x1 y hacer un traductor para algol 60 (PDF) , informe MR 35/61, Amsterdam: Mathematisch Centrum
- Informe revisado sobre el lenguaje algorítmico Algol 60 de Peter Naur, et al. Definición de ALGOL
- "El lado europeo de la última fase del desarrollo de ALGOL 60" por Peter Naur
enlaces externos
- Historia de ALGOL en el Museo de Historia de la Computación
- Compilador ALGOL-F habilitado para la web para pequeños experimentos [ enlace muerto permanente ]