stringtranslate.com

ALGOL 30 de Dartmouth

Dartmouth ALGOL 30 fue una implementación de la década de 1960, primero del lenguaje de programación ALGOL 58 y luego de ALGOL 60. Recibe su nombre por la computadora en la que se ejecutaba: una computadora de escritorio Librascope General Precision ( LGP-30 ) adquirida por Dartmouth College en 1959.

Dado que el tamaño limitado del LGP-30 (4K palabras de 31 bits) impidió una implementación completa de ALGOL 60, se omitieron ciertas características (matrices llamadas por valor, matrices propias, cadenas, límites de matrices variables y recursión); pero la implementación incluyó parámetros llamados por nombre, utilizando procesadores [1] [2] y etiquetas de números enteros. [3]

ALGOL 30 fue implementado por cuatro estudiantes de grado. Stephen J. Garland escribió el compilador, descubriendo en su segundo año que las instrucciones y bloques compuestos podían incluirse en el algoritmo de traducción de Samelson y Bauer. [4] Este simple hecho no fue publicado hasta algunos años después por David Gries. [5] Robert F. Hargraves, Jorge Llacer y Anthony W. Knapp desarrollaron el sistema de tiempo de ejecución, que incluía un intérprete para aritmética de punto flotante (no compatible con el conjunto de instrucciones limitado del LGP-30). [6]

ALGOL 30 era un sistema de dos pasadas. La primera pasada cargaba el compilador y procesaba el código fuente escrito por el usuario; generaba un código intermedio, similar a un binario reubicable, y lo perforaba en una cinta de papel. La segunda pasada cargaba tanto el sistema de ejecución como el código intermedio. Las compilaciones podían realizarse por lotes, pero el retraso entre la introducción de la cinta del código fuente y la ejecución del programa compilado era demasiado grande para permitir un uso generalizado por parte de los estudiantes. [7]

Para permitir un uso más amplio, Garland y Knapp desarrollaron un sistema de "carga y listo" conocido como SCALP, un procesador ALGOL autónomo , para un subconjunto más pequeño de ALGOL 60 (que no permitía variables booleanas ni operadores, bloques, procedimientos, matrices propias o dinámicas, expresiones condicionales y sentencias step-until for ). SCALP dedicaba un tercio de la memoria del LGP al compilador, un tercio al sistema de tiempo de ejecución (que incluía un intérprete de punto flotante y funciones numéricas) y un tercio al código de usuario compilado. Los estudiantes preparaban el código fuente fuera de línea y lo perforaban en una cinta de papel con una Friden Flexowriter. La compilación se producía casi tan rápido como se podía leer la cinta. Esto permitía que los trabajos de los estudiantes se completaran en tres minutos. Cientos de estudiantes usaban SCALP antes de que BASIC estuviera disponible en el sistema de tiempo compartido de Dartmouth en 1965. [8] [9]

ALGOL 30 fue la base para una implementación en 1965 de ALGOL 60 en el Sistema de Tiempo Compartido de Dartmouth . Varios años después, Sidney Marshall produjo una implementación de ALGOL 68. [10]

Referencias

  1. ^ PZ Ingerman, "Thunks: una forma de compilar declaraciones de procedimiento con algunos comentarios sobre declaraciones de procedimiento", Comunicaciones de la ACM 4:1 , enero de 1961, páginas 55–58.
  2. ^ ET Irons y W. Feurzeig, "Comentarios sobre la implementación de procedimientos y bloques recursivos en Algol-60", Communications of the ACM 4:11, enero de 1961, páginas 65-69
  3. ^ Thomas E. Kurtz, "Basic", Historia de los lenguajes de programación , Association for Computing Machinery, junio de 1978, página 516.
  4. ^ K. Samelson y FL Bauer, "Traducción de fórmulas secuenciales", Comunicaciones de la ACM 3:2, febrero de 1960, páginas 76–83.
  5. ^ (David Gries, "El uso de matrices de transición en la compilación", Communications of the ACM 11:1, enero de 1968, páginas 26–34.
  6. ^ ALGOL para el LGP-30, una comparación, Centro de Computación, Dartmouth College, 16 de febrero de 1962.
  7. ^ Kurtz, lugar citado.
  8. ^ Kurtz, op. cit. , página 517.
  9. ^ Un manual para SCALP, siendo un procesador Algol autónomo para General Precision LGP-30 , CCM-7A, Centro de Computación, Dartmouth College, 1 de enero de 1964.
  10. ^ Sidney Marshall, Informe preliminar sobre una implementación de ALGOL 68 , Kiewit Computation Center, Dartmouth College, 1 de diciembre de 1969.

Enlaces externos