Articulo de referencia

Autocódigo Atlas

Atlas Autocode ( AA ) [1] [2] es un lenguaje de programación desarrollado alrededor de 1963 en la Universidad de Manchester . Una variante del lenguaje ALGOL , fue desarrollado ...

Atlas Autocode ( AA ) [1] [2] es un lenguaje de programación desarrollado alrededor de 1963 en la Universidad de Manchester . Una variante del lenguaje ALGOL , fue desarrollado por Tony Brooker y Derrick Morris para la computadora Atlas . Los compiladores AA y AB iniciales fueron escritos por Jeff Rohl y Tony Brooker utilizando el compilador Brooker-Morris Compiler , con una implementación posterior no CC codificada a mano (ABC) por Jeff Rohl. [3]

La palabra Autocode era básicamente un término temprano para lenguaje de programación . Los distintos autocodes podían variar enormemente.

Características

AA era un lenguaje estructurado en bloques que incluía variables , subrutinas y funciones tipificadas explícitamente . Omitía algunas características de ALGOL, como pasar parámetros por nombre , lo que en ALGOL 60 significa pasar la dirección de memoria de una subrutina corta (un thunk ) para recalcular un parámetro cada vez que se lo menciona.

El compilador AA podía generar una verificación de rango para accesos a matrices y permitía que una matriz tuviera dimensiones que se determinaban en tiempo de ejecución , es decir, una matriz podía declararse como , donde y eran valores calculados. integer array Thing (i:j)ij

Las rutinas de alto nivel AA podrían incluir código de máquina , ya sea para hacer que un bucle interno sea más eficiente o para efectuar alguna operación que de otra manera no se podría realizar fácilmente. [1]

AA incluyó un complextipo de datos [1] para representar números complejos , en parte debido a la presión del departamento de ingeniería eléctrica , ya que los números complejos se utilizan para representar el comportamiento de la corriente alterna . La raíz cuadrada unitaria imaginaria de -1 se representó mediante i, que se trató como una constante compleja fija = i .

El complextipo de datos se abandonó cuando Atlas Autocode evolucionó posteriormente al lenguaje Edinburgh IMP . IMP era una extensión de AA y se utilizó para escribir el sistema operativo Edinburgh Multiple Access System (EMAS) .

El segundo mayor mérito de AA (después de ser el progenitor de IMP y EMAS) fue que tenía muchas de las características del compilador original Compiler . Una variante del compilador AA incluía soporte en tiempo de ejecución para un analizador descendente recursivo de arriba hacia abajo . El estilo de analizador utilizado en Compiler Compiler se utilizó de forma continua en Edimburgo desde los años 60 hasta casi el año 2000.

Se desarrollaron otros Autocodes para el ordenador Titan , un prototipo Atlas 2 en Cambridge y el Ferranti Mercury.

Sintaxis

La sintaxis de Atlas Autocode era muy similar a ALGOL, aunque estaba influenciada por el dispositivo de salida que tenía disponible el autor, un Friden Flexowriter . Por lo tanto, permitía símbolos como ½for .5y el superíndice 2for elevado a la potencia de 2. El Flexowriter admitía la sobrescritura y, por lo tanto, AA también lo hacía: se podían sobrescriturar hasta tres caracteres como un solo símbolo. Por ejemplo, el conjunto de caracteres no tenía símbolo, por lo que la exponenciación era una sobrescritura de |y *. El subrayado mencionado anteriormente de palabras reservadas (palabras clave) también se podía realizar mediante sobrescritura. El lenguaje se describe en detalle en el Manual de referencia de Atlas Autocode. [1]

Otros caracteres de Flexowriter que se utilizaron en AA fueron: αen números de punto flotante, por ejemplo , 3.56α-7para 3.56e-7 ; βpara significar la segunda mitad de una palabra de memoria Atlas de 48 bits ; πpara la constante matemática pi .

Cuando AA fue trasladado a la computadora English Electric KDF9 , el conjunto de caracteres se cambió a la Organización Internacional de Normalización (ISO). El Proyecto de Historia de la Computación de Edimburgo recuperó ese compilador de una vieja cinta de papel y está disponible en línea, al igual que un escaneo de alta calidad de la versión original de Edimburgo del manual Atlas Autocode. [2]

Las palabras clave en AA se distinguían del resto del texto por estar subrayadas, lo que se implementó mediante tachado en Flexowriter (comparado con negrita en ALGOL). También había dos regímenes de subrayado . Primero, había un modo de "delimitadores de mayúsculas" donde todas las letras mayúsculas (cadenas externas) se trataban como minúsculas subrayadas. Segundo, en algunas versiones (pero no en la versión original de Atlas), era posible subrayar palabras clave colocando un %signo " " delante de ellas, por ejemplo, la palabra clave endofprogrammepodía escribirse como %end %of %programmeo %endofprogramme. Esto redujo significativamente la escritura, debido a que solo se necesitaba un carácter, en lugar de sobrescribir toda la palabra clave. Al igual que en ALGOL, no había palabras reservadas en el lenguaje ya que las palabras clave se identificaban mediante subrayado (o tachado), no mediante el reconocimiento de secuencias de caracteres reservadas. En la declaración , hay tanto una palabra clave como una variable llamada . if token=if then result = tokenifif

Al igual que en ALGOL, AA permitía espacios en los nombres de las variables, como integer previous value. Los espacios no eran significativos y se eliminaban antes del análisis en una etapa trivial de preanálisis léxico llamada " reconstrucción de línea ". Lo que el compilador vería en el ejemplo anterior sería " ". Los espacios eran posibles debido en parte a que las palabras clave se distinguían de otras formas y en parte a que la fuente se procesaba mediante análisis sin escáner , sin una fase de análisis léxico separada, lo que permitía que la sintaxis léxica fuera sensible al contexto. iftoken=ifthenresult=token

La sintaxis de las expresiones permite omitir el operador de multiplicación, p. ej., 3ase trató como 3*ay a(i+j)se trató como a*(i+j)si ano fuera una matriz. En usos ambiguos, se tomó el nombre más largo posible ( maximal munch ), por ejemplo, abno se trató como , independientemente de si y se habían declarado a*bo no .ab

Referencias

  1. ^ abcd Brooker, RA; Rohl, JS (1965). "Manual de referencia de Atlas Autocode" (PDF) . Departamento de Ciencias Informáticas de la Universidad de Manchester.(Escaneos originales archivados el 16 de enero de 2019 en Wayback Machine )
  2. ^ ab Schofoeld, PD; Osbourne, MR (1965). "Programación en Atlas Autocode, Informe de la Unidad de Computación N.º 1" (PDF) . Universidad de Edimburgo. Archivado desde el original (PDF) el 2020-05-15 . Consultado el 2006-04-12 .(Escaneos originales archivados el 21 de julio de 2011 en Wayback Machine )
  3. ^ "Tony Brooker y el compilador Atlas Compiler" (PDF) . Febrero de 2014. Consultado el 16 de febrero de 2024 .
  • Las principales características de Atlas Autocode, por RA Brooker, JS Rohl y SR Clark
  • Minimanual de Atlas Autocode de WF Lunnon y G. Riding (julio de 1965)
  • Manual de referencia de Atlas Autocode de RA Brooker y JS Rohl (marzo de 1965)
  • Autocódigo Mercury, Autocódigo Atlas y algunos temas relacionados, por Vic Forrington (enero de 2014)
  • Diagramas de flujo para el compilador Atlas Autocode en KDF9.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Atlas_Autocode&oldid=1207912476"