stringtranslate.com

ALGOL 68C

ALGOL 68C es un lenguaje de programación informática imperativo , un dialecto de ALGOL 68 , que fue desarrollado por Stephen R. Bourne y Michael Guy para programar el Sistema de Álgebra de Cambridge (CAMAL). El compilador inicial fue escrito en el Princeton Syntax Compiler (PSYCO, por Edgar T. Irons) que fue implementado por JH Mathewman en Cambridge.

ALGOL 68C se utilizó más tarde para el sistema operativo CHAOS para la computadora CAP de seguridad basada en capacidades de la Universidad de Cambridge en 1971. Otros contribuyentes tempranos fueron Andrew D. Birrell [1] e Ian Walker.

Se realizó trabajo posterior en el compilador después de que Bourne dejó la Universidad de Cambridge en 1975. Se agregó la recolección de basura y la base del código aún se está ejecutando [ aclaración necesaria ] en un sistema operativo/MVT emulado que utiliza Hercules .

El compilador ALGOL 68C generaba una salida en ZCODE , un lenguaje intermedio basado en registros, que luego podía interpretarse o compilarse en un ejecutable nativo. Esta capacidad de interpretar o compilar ZCODE fomentó la adaptación de ALGOL 68C a muchas plataformas informáticas diferentes . Además de la computadora CAP , el compilador se adaptó a sistemas como Conversational Monitor System (CMS), TOPS-10 y Zilog Z80 .

Cultura popular

Un predecesor muy temprano de este compilador fue utilizado por Guy y Bourne para escribir los primeros programas de Juego de la Vida en el PDP-7 con una pantalla DEC 340. [2] [3]

En varios números de Liverpool Software Gazette se detalla la implementación del Z80. El compilador requería unos 120 KB de memoria para funcionar; por lo tanto, la memoria de 64 KB del Z80 es en realidad demasiado pequeña para ejecutar el compilador. Por lo tanto, los programas ALGOL 68C para el Z80 tuvieron que compilarse de forma cruzada desde el ordenador CAP más grande o desde un ordenador mainframe IBM System/370 .

Algol 68C y Unix

Posteriormente, Stephen Bourne reutilizó las cláusulas , y de ALGOL 68 en el shell Bourne común de Unix , pero con la sintaxis de modificada, eliminada y reemplazada por (para evitar conflictos con la utilidad od ). if ~ then ~ else ~ ficase ~ in ~ out ~ esacfor ~ while ~ do ~ od inoutoddone

Después de Cambridge, Bourne pasó nueve años en Bell Labs con el equipo de Unix Versión 7 (Unix Séptima Edición). Además de desarrollar el shell Bourne, adaptó ALGOL 68C a Unix en el DEC PDP-11 -45 e incluyó una opción especial en su depurador de Unix, Advanced Debugger (adb), para obtener un seguimiento de la pila de los programas escritos en ALGOL 68C. A continuación se incluye un extracto de las páginas del manual de Unix de la séptima edición: [4]

NOMBRE adb - depuradorSINOPSIS adb [-w] [ objfil [ corfil ] ][...]COMANDOS[...] $modificador Comandos varios. Modificadores disponibles son: [...] un seguimiento de pila de ALGOL 68. Si la dirección es Dado entonces se toma como la dirección de el cuadro actual (en lugar de r4). Si cuenta Se da entonces solo el primer recuento de fotogramas. están impresos.

Extensiones de ALGOL 68C a ALGOL 68

A continuación se muestra una muestra de algunas extensiones notables: [5]

Las cláusulas ENVIRONyUSING

La compilación independiente en ALGOL 68C se realiza mediante las cláusulas ENVIRONand USING. Esto ENVIRONguarda el entorno completo en el punto en el que aparece. Un módulo independiente escrito a partir de una USINGcláusula se inserta de manera efectiva en el primer módulo en el punto en el que aparece la ENVIRONcláusula.

ENVIRONy USINGson útiles para un estilo de programación de arriba hacia abajo , en contraste con el estilo de abajo hacia arriba implicado en los mecanismos de biblioteca tradicionales.

Estas cláusulas son una especie de inversa de las cláusulas #include que se encuentran en el lenguaje de programación C o #import que se encuentran en Python . El propósito del ENVIRONmecanismo es permitir que el código fuente de un programa se divida en partes de tamaño manejable. Solo es necesario analizar el archivo fuente compartido una vez, a diferencia de las cláusulas #include que se encuentran en el lenguaje de programación C , donde el archivo de inclusión debe analizarse para cada archivo fuente que lo incluye.

Ejemplo de ENVIRONcláusula

Un archivo llamado mylib.a68 :

COMENZAR INT dim = 3; # una constante # INT un número := 120; # una variable # EJEMPLO AMBIENTE1; MATRIZ MODAL = [dim, dim]REAL; # una definición de tipo # MATRIZ m1; un numero := ENTORNO EJEMPLO2; imprimir((un numero))FIN

Ejemplo de USINGcláusula

Un archivo llamado usemylib.a68 :

USANDO EJEMPLO2 DE "mylib"COMENZAR MATRIZ m2; # solo ejemplo # print((un número)); # declarado en mylib.a68 # print((2 UPB m1)); # también declarado en mylib.a68 # EJEMPLO DE ENTORNO3; # Los ENTORNOS se pueden anidar # 666FIN

Restricciones al lenguaje del estándar ALGOL 68

Un traductor-compilador para ALGOL 68C estaba disponible para PDP-10 , IBM System/360 y varias otras computadoras.

Referencias

  1. ^ Birrell, Andrew D. (diciembre de 1977). "Programación de sistemas en un lenguaje de alto nivel" (PDF) . Tesis presentada para el grado de Doctor en Filosofía . Universidad de Cambridge . Consultado el 22 de abril de 2007 .
  2. ^ "Detalle del artículo: Digital Equipment Corporation Model 340". Sociedad Australiana de Museos Informáticos (ACMS) . AceWare Web Hosting . Consultado el 17 de abril de 2020 .[ enlace muerto permanente ]
  3. ^ Gardner, Martin (octubre de 1970). "Las fantásticas combinaciones del nuevo juego de solitario de John Conway, "vida"" (PDF) . Mathematical Games. Scientific American . No. 223. pp. 120-123. Para poblaciones longevas como ésta, Conway utiliza a veces una computadora PDP-7 con una pantalla en la que puede observar los cambios [...] El programa fue escrito por MJT Guy y SR Bourne. Sin su ayuda, algunos descubrimientos sobre el juego habrían sido difíciles de hacer.
  4. ^ "El Navegador Manual Modular: Adb". UnixDev.net . Archivado desde el original el 2016-03-03 . Consultado el 2020-04-17 .
  5. ^ Bourne, Stephen R .; Birrell, Andrew D.; Walker, Ian (1975). Manual de referencia de ALGOL 68C . Laboratorio de Computación de la Universidad de Cambridge.

Enlaces externos