Es posible que este artículo necesite una reorganización para cumplir con las pautas de diseño de Wikipedia . ( Julio de 2016 ) |
This article needs additional citations for verification. (August 2012) |
Desarrollador(es) | Stephen Bourne , Michael Guy , Andrew D. Birrell, Ian Walker, Chris Cheney, et al. |
---|---|
Lanzamiento inicial | alrededor de 1970 (1970) |
Versión estable | 1.3039 / 3 de marzo de 2013 (2013-03-03) |
Escrito en | ALGOL 68 |
Sistema operativo | Mainframes (o emulaciones) IBM 360 , 370 , etc., que ejecutan MVT o MVS |
Tipo | Compilador , traductor |
Sitio web | bitbucket.org/algol68c/dl |
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, de 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 trabajó posteriormente en el compilador después de que Bourne dejara la Universidad de Cambridge en 1975. Se agregó la recolección de basura y la base del código todavía 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 .
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 la computadora CAP más grande o desde una computadora mainframe IBM System/370 .
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 ~ 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 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.
A continuación se muestra una muestra de algunas extensiones notables: [5]
*:=
y+:=
UPTO
, DOWNTO
y UNTIL
en cláusulas de bucle;:=:=
)ANDF
, ORF
y THEF
elementos sintácticos .ENVIRON
cláusula y USING
cláusulaCODE
... EDOC
cláusula - para incrustar ZCODEENVIRON
yUSING
La compilación independiente en ALGOL 68C se realiza mediante las cláusulas ENVIRON
and USING
. Esto ENVIRON
guarda el entorno completo en el punto en el que aparece. Un módulo independiente escrito a partir de una USING
cláusula se inserta de manera efectiva en el primer módulo en el punto en el que aparece la ENVIRON
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 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 ENVIRON
mecanismo 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.
ENVIRON
cláusulaUn 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
USING
cláusulaUn 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
MODE STRING
implementado sin FLEXUn traductor-compilador para ALGOL 68C estaba disponible para PDP-10 , IBM System/360 y varias otras computadoras.
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.