stringtranslate.com

Autocodificación 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 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 (ABC) codificada a mano por Jeff Rohl. [3]

La palabra Autocode fue básicamente un término temprano para lenguaje de programación . Los diferentes códigos automáticos pueden variar mucho.

Características

AA era un lenguaje estructurado en bloques que presentaba variables , subrutinas y funciones escritas explícitamente. Omitió 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 procesador ) para recalcular un parámetro cada vez que se menciona.

El compilador AA podía generar una verificación de rango para los accesos a la matriz 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 se calculaban los valores.integer array Thing (i:j)ij

Las rutinas de alto nivel 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 otro modo 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 imaginariai de -1 estaba representada por , que se trataba como una constante compleja fija = i .

El complextipo de datos se eliminó 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 reclamo de fama de AA (después de ser el progenitor de IMP y EMAS) fue que tenía muchas de las características del Compiler Compiler original . Una variante del compilador AA incluía soporte en tiempo de ejecución para un analizador de descenso recursivo de arriba hacia abajo . El estilo de analizador utilizado en el Compiler Compiler estuvo en uso continuamente en Edimburgo desde los años 60 hasta casi el año 2000.

Se desarrollaron otros códigos automáticos para la computadora Titan , un prototipo de Atlas 2 en Cambridge y el Ferranti Mercury.

Sintaxis

La sintaxis de Atlas Autocode era muy similar a la de ALGOL, aunque estaba influenciada por el dispositivo de salida que el autor tenía disponible, un Friden Flexowriter . Por lo tanto, permitía símbolos como ½for .5y el superíndice 2for elevado a 2 . Flexowriter admitía la sobreimpresión y, por tanto, AA también lo hacía: se podían sobreimprimir 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 sobretacha de |y *. El subrayado antes mencionado de palabras reservadas (palabras clave) también se podría realizar mediante sobretachadura. El lenguaje se describe en detalle en el Manual de referencia de Atlas Autocode. [1]

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

Cuando se transfirió AA a la computadora English Electric KDF9 , el juego de caracteres se cambió a Organización Internacional de Normalización (ISO). Ese compilador ha sido recuperado de una vieja cinta de papel por el Edinburgh Computer History Project 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 de otros textos por estar subrayadas, lo que se implementó mediante sobretacha en Flexowriter (compárese con negrita en ALGOL). También hubo dos regímenes de refuerzo . Primero, había un modo de "delimitadores de mayúsculas" donde todas las letras mayúsculas (fuera de las cadenas) se trataban como minúsculas subrayadas. En segundo lugar, en algunas versiones (pero no en la versión original de Atlas), era posible restringir las palabras clave colocando un %signo " " delante de ellas; por ejemplo, la palabra clave endofprogrammese podía escribir como %end %of %programmeo %endofprogramme. Esto redujo significativamente la escritura, debido a que solo se necesita un carácter, en lugar de sobrecargar toda la palabra clave. Al igual que en ALGOL, no había palabras reservadas en el idioma ya que las palabras clave se identificaban subrayando (o arrastrando), no reconociendo secuencias de caracteres reservados. En la declaración , hay tanto una palabra clave como una variable denominada .if token=if then result = tokenifif

Al igual que en ALGOL, AA permitía espacios en nombres de variables, como integer previous value. Los espacios no eran significativos y se eliminaban antes del análisis en una etapa trivial previa a la lectura 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 maneras y en parte porque la fuente se procesó mediante análisis sin escáner , sin una fase de léxico separada, lo que permitió que la sintaxis léxica fuera sensible al contexto.iftoken=ifthenresult=token

La sintaxis de las expresiones permite omitir el operador de multiplicación, por ejemplo, 3ase trata como 3*ay a(i+j)se trata como a*(i+j)si ano fuera una matriz. En usos ambiguos, se tomaba el nombre más largo posible ( maximal munch ), por ejemplo abno se trataba como a*b, independientemente de que hubiera sido declarado o ano b.

Referencias

  1. ^ abcd Brooker, RA; Rohl, JS (1965). "Manual de referencia de Atlas Autocode" (PDF) . Departamento de Ciencias de la Computación de la Universidad de Manchester.(Escaneos originales archivados el 16 de enero de 2019 en Wayback Machine )
  2. ^ ab Schofoeld, PD; Osbourne, señor (1965). «Programación en Atlas Autocode, Informe Unidad de Computación N°1» (PDF) . Universidad de Edimburgo. Archivado desde el original (PDF) el 15 de mayo de 2020 . Consultado el 12 de abril de 2006 .(Escaneos originales archivados el 21 de julio de 2011 en Wayback Machine )
  3. ^ "Tony Brooker y el compilador Atlas" (PDF) . Febrero 2014 . Consultado el 16 de febrero de 2024 .

enlaces externos