ALGOL 68C es un imperativo lenguaje de programación de computadoras , un dialecto de ALGOL 68 , que fue desarrollado por Stephen R. Bourne y Michael Guy para programar el Cambridge Algebra System (CAMAL). El compilador inicial fue escrito en Princeton Syntax Compiler (PSYCO, por Edgar T. Irons) que fue implementado por JH Mathewman en Cambridge.
Desarrollador (es) | Stephen Bourne , Michael Guy , Andrew D. Birrell, Ian Walker, Chris Cheney, et al. |
---|---|
Versión inicial | alrededor de 1970 |
Lanzamiento estable | 1.3039 / 3 de marzo de 2013 |
Escrito en | ALGOL 68 |
Sistema operativo | IBM 360 , 370 , etc., mainframes (o emulaciones) que ejecutan MVT o MVS |
Tipo | Compilador , traductor |
Sitio web | bitbucket |
ALGOL 68C se utilizó más tarde para el sistema operativo CHAOS para la computadora CAP de seguridad basada en capacidades en la Universidad de Cambridge en 1971. Otros contribuyentes tempranos fueron Andrew D. Birrell [1] e Ian Walker.
Se realizó un 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 el código base todavía se está ejecutando [ aclaración necesaria ] en un sistema operativo / MVT emulado usando Hercules .
El compilador ALGOL 68C generó una salida en ZCODE , un lenguaje intermedio basado en registros, que luego podría interpretarse o compilarse en un ejecutable nativo. Esta capacidad de interpretar o compilar ZCODE alentó la migración de ALGOL 68C a muchas plataformas informáticas diferentes . Además de la computadora CAP , el compilador se transfirió a sistemas que incluyen Conversational Monitor System (CMS), TOPS-10 y Zilog Z80 .
Cultura popular
Guy y Bourne utilizaron un antecesor muy temprano de este compilador para escribir los primeros programas de Game of Life en el PDP-7 con una pantalla DEC 340. [2] [3]
Varias ediciones de Liverpool Software Gazette detallan la implementación de Z80. El compilador requirió alrededor de 120 KB de memoria para ejecutarse; por lo tanto, la memoria de 64 KB del Z80 es demasiado pequeña para ejecutar el compilador. Por lo tanto, los programas ALGOL 68C para el Z80 tenían que compilarse de forma cruzada desde la computadora CAP más grande o una computadora central IBM System / 370 .
Algol 68C y Unix
Stephen Bourne posteriormente reutilizado ALGOL 68 's , y cláusulas en el común Unix Bourne shell , pero con ' s sintaxis cambiado, eliminado y reemplazado con (para evitar conflicto con la OD de utilidad). if ~ then ~ else ~ fi
case ~ in ~ out ~ esac
for ~ while ~ do ~ od
in
out
od
done
Después de Cambridge, Bourne pasó nueve años en Bell Labs con el equipo Versión 7 Unix (Séptima edición Unix). Además de desarrollar el shell Bourne, portó 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 pila para programas escritos en ALGOL 68C. Aquí hay un extracto de las páginas del manual de la séptima edición de Unix: [4]
NOMBRE adb - depuradorSINOPSIS adb [-w] [objfil [corfil]][...]COMANDOS[...] $ modificador Comandos misceláneos. Los modificadores disponibles están: [...] un seguimiento de pila 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 los primeros cuadros de recuento están impresos.
Extensiones de ALGOL 68C a ALGOL 68
A continuación se muestra una muestra de algunas extensiones notables: [5]
- Operación automática : = para cualquier operador, p. Ej.
*:=
Y+:=
UPTO
,DOWNTO
yUNTIL
en cláusulas de bucle;- operador de desplazamiento (
:=:=
) ANDF
,ORF
YTHEF
elementos sintácticos .- compilación separada -
ENVIRON
cláusula yUSING
cláusula - ámbitos no comprobados
- límites en declaradores formales
CODE
...EDOC
cláusula - para incrustar ZCODE
Las cláusulas ENVIRON
yUSING
La compilación separada en ALGOL 68C se realiza mediante las cláusulas ENVIRON
y USING
. El ENVIRON
guarda el entorno completo en el punto que parece. Un módulo separado escrito comenzando con una USING
cláusula se inserta efectivamente en el primer módulo en el punto en ENVIRON
que aparece la cláusula.
ENVIRON
y USING
son útiles para un estilo de programación de arriba hacia abajo , en contraste con el estilo de abajo hacia arriba que implican los mecanismos de biblioteca tradicionales.
Estas cláusulas son una especie de inverso del #include que se encuentra en el lenguaje de programación C , o de la importación que se encuentra en Python . El propósito del ENVIRON
mecanismo es permitir que una fuente de programa se divida en piezas de tamaño manejable. Solo es necesario analizar el archivo de origen compartido una vez, a diferencia de un #include que se encuentra en el lenguaje de programación C, donde el archivo de inclusión debe analizarse para cada archivo de origen que lo incluye.
Ejemplo de ENVIRON
cláusula
Un archivo llamado mylib.a68 :
EMPEZAR INT dim = 3; # una constante # INT un número: = 120; # una variable # ENTORNO EJEMPLO1; MODE MATRIX = [dim, dim] REAL; # una definición de tipo # MATRIX m1; un número: = ENVIRON EJEMPLO2; imprimir ((un número))FINAL
Ejemplo de USING
cláusula
Un archivo llamado usemylib.a68 :
USANDO EJEMPLO2 DE "mylib"EMPEZAR MATRIZ m2; # solo ejemplo # print ((un número)); # declarado en mylib.a68 # imprimir ((2 UPB m1)); # también declarado en mylib.a68 # MEDIO AMBIENTE EJEMPLO3; # ENVIRONs se pueden anidar # 666FINAL
Restricciones al idioma del estándar ALGOL 68
- Sin ALGOL 68 FLEX y matrices de longitud variable
MODE STRING
implementado sin FLEX- La cláusula PAR paralela no se implementó
- Transput no estándar
- otros...
Un traductor-compilador para ALGOL 68C estaba disponible para PDP-10 , IBM System / 360 y varias otras computadoras.
Referencias
- ^ Birrell, Andrew D. (diciembre de 1977). "Programación del sistema 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 .
- ^ "Detalle del artículo: Digital Equipment Corporation Modelo 340" . Sociedad Australiana del Museo de la Computación (ACMS) . Alojamiento web AceWare . Consultado el 17 de abril de 2020 .
- ^ Gardner, Martin (octubre de 1970). "Las fantásticas combinaciones del nuevo juego de solitario de John Conway" life " " (PDF) . Juegos matemáticos. Scientific American . No. 223. págs. 120-123.
Para poblaciones longevas como ésta, Conway a veces usa 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, habría sido difícil hacer algunos descubrimientos sobre el juego.
- ^ "El navegador manual modular: Adb" . UnixDev.net . Archivado desde el original el 3 de marzo de 2016 . Consultado el 17 de abril de 2020 .
- ^ Bourne, Stephen R .; Birrell, Andrew D .; Walker, Ian (1975). Manual de referencia ALGOL 68C . Laboratorio de Computación de la Universidad de Cambridge.
enlaces externos
- Página web oficial
- Cambridge ALGOL 68: en la lista histórica de lenguajes informáticos ; incluye más de 10 referencias de publicaciones.
- A Transporte de ALGOL 68C - PJ Gardner, Universidad de Essex - marzo de 1977 (de 370 a DECsystem-10)
- Ejecución de ALGOL 68C en MVS : cómo instalar ALGOL 68C en un sistema MVS emulado