ALGOL W es un lenguaje de programación . Se basa en una propuesta para ALGOL X por Niklaus Wirth y Tony Hoare como sucesor de ALGOL 60 en el Grupo de Trabajo 2.1 de la Federación Internacional para el Procesamiento de la Información (IFIP) IFIP sobre Lenguajes y Cálculos Algorítmicos, que especifica , mantiene y apoya los lenguajes ALGOL 60 y ALGOL 68 . [1] Cuando el comité decidió que la propuesta era un avance insuficiente sobre ALGOL 60, la propuesta se publicó como Una contribución al desarrollo de ALGOL . [2]Después de realizar pequeñas modificaciones en el lenguaje [3] Wirth supervisó una implementación de alta calidad para IBM System / 360 en la Universidad de Stanford que fue ampliamente distribuida. [4]
Paradigmas | Multi-paradigma : procedimental , imperativo , estructurado |
---|---|
Familia | ALGOL |
Diseñada por | Niklaus Wirth y Tony Hoare |
Apareció por primera vez | 1966 |
Disciplina de mecanografía | Estático , fuerte |
Alcance | Léxico |
Lenguaje de implementación | PL360 |
Plataforma | IBM System / 360 |
SO | Linux |
Influenciado por | |
ALGOL 60 | |
Influenciado | |
Pascal , Modula-2 |
Representó una modificación relativamente conservadora de ALGOL 60, agregando cadena , cadena de bits, número complejo y referencia a tipos de datos de registro y paso de parámetros llamada por resultado , introduciendo la declaración, reemplazando con la declaración y, en general, endureciendo el lenguaje.while
switch
case
La implementación se escribió en PL360 , un lenguaje ensamblador similar a ALGOL diseñado por Wirth. La implementación incluye capacidades influyentes de depuración y creación de perfiles .
Sintaxis y semántica
La sintaxis de ALGOL W se basa en un subconjunto del conjunto de codificación de caracteres EBCDIC . En ALGOL 60 , las palabras reservadas son elementos léxicos distintos, pero en ALGOL W son solo secuencias de caracteres y no es necesario incluirlas . Las palabras e identificadores reservados están separados por espacios. [4] De esta manera, la sintaxis de ALGOL W se asemeja a la de Pascal y lenguajes posteriores.
La descripción del lenguaje ALGOL W [5] define ALGOL W en una gramática de afijos que se asemeja a la forma Backus-Naur (BNF). Esta gramática formal fue precursora de la gramática de Van Wijngaarden . [2] [6]
Gran parte de la semántica de ALGOL W se define gramaticalmente: [5]
- Los identificadores se distinguen por su definición dentro del ámbito actual . Por ejemplo, a
⟨procedure identifier⟩
es un identificador que ha sido definido por una declaración de procedimiento, a⟨label identifier⟩
es un identificador que se utiliza como etiqueta goto . - Los tipos de variables y expresiones se representan mediante afijos. Por ejemplo,
⟨τ function identifier⟩
es la entidad sintáctica de una función que devuelve un valor de tipoτ
, si un identificador se ha declarado como una función entera en el ámbito actual, entonces se expande a⟨integer function identifier⟩
. - Los errores tipográficos son errores gramaticales. Por ejemplo,
⟨integer expression⟩ / ⟨integer expression⟩
y⟨real expression⟩ / ⟨real expression⟩
son entidades sintácticas válidas pero distintas que representan expresiones, pero⟨real expression⟩ DIV ⟨integer expression⟩
(es decir, la división de enteros realizada en un valor de punto flotante) es una entidad sintáctica no válida.
Ejemplo
Esto demuestra la facilidad de tipo de registro de ALGOL W.
RECORD PERSONA ( STRING ( 20 ) NOMBRE ; INTEGER AGE ; LOGICAL MACHO ; REFERENCIA ( PERSONA ) PADRE , MADRE , YOUNGESTOFFSPRING , ELDERSIBLING ) ;REFERENCIA ( PERSONA ) PROCEDIMIENTO TÍTULO JOVEN ( REFERENCIA ( PERSONA ) R ) ; COMENZAR REFERENCIA ( PERSONA ) P , M ; P : = JOVEN PRIMAVERA ( PADRE ( PADRE ( R ))) ; MIENTRAS ( P ¬ = NULO ) Y ( ¬ MASCULINO ( P )) O ( P = PADRE ( R )) HACEN P : = ELDERSIBLING ( P ) ; M : = JOVEN PRIMAVERA ( MADRE ( MADRE ( R ))) ; MIENTRAS ( M ¬ = NULO ) Y ( ¬ MASCULINO ( M )) HACEN M : = ELDERSIBLING ( M ) ; SI P = NULO ENTONCES M O BIEN SI M = NULO ENTONCES P ELSE SI EDAD ( P ) < EDAD ( M ) ENTONCES P ELSE M FIN
Implementación
La mayor parte de ALGOL W, que asciende a aproximadamente 2.700 tarjetas, se escribió en PL360 de Wirth. Se escribió un módulo de interfaz para el sistema operativo (SO) de IBM en uso (SO, DOS, MTS, ORVYL ) en lenguaje ensamblador de IBM, que asciende a menos de 250 tarjetas. [1]
En un entorno de sistema operativo en un 360/67 con archivos de entrada y salida en cola, el compilador se recompilará a sí mismo en unos 25 segundos. El compilador tiene aproximadamente 2700 imágenes de tarjetas. Por lo tanto, cuando el tiempo del programador del sistema operativo se resta del tiempo de ejecución indicado anteriormente, se ve que el compilador se ejecuta a una velocidad superior a 100 tarjetas por segundo (para código denso).
En un entorno DOS en un 360/30, el compilador está limitado solo por la velocidad del lector de tarjetas. El compilador se ha recompilado con éxito en un 64K 360/30 a una velocidad de 1200 tarjetas por minuto (la velocidad del lector de tarjetas). Esto es impresionante en comparación con el tiempo que necesita el ensamblador de DOS para ensamblar el módulo de interfaz que consta de menos de 250 tarjetas. Cuando se expanden las instrucciones macro, la interfaz de DOS tiene 972 imágenes de tarjetas y el ensamblador tarda 15 minutos en ensamblarse.
Referencias
- ^ Swierstra, Doaitse; Gibbons, Jeremy ; Meertens, Lambert (2 de marzo de 2011). "ScopeEtc: IFIP21: Foswiki" . Foswiki . Consultado el 7 de octubre de 2020 .
- ^ a b Wirth, Niklaus ; Hoare, CAR (junio de 1966). "Una contribución al desarrollo de ALGOL" . Comunicaciones de la ACM . 9 : 413–432 . Consultado el 7 de octubre de 2020 , a través de Association for Computing Machinery .
- ^ Wirth, Niklaus (septiembre de 1966). "Notas adicionales sobre" Una contribución al desarrollo de ALGOL " " . Boletín ALGOL . 24 : 13-17 . Consultado el 7 de octubre de 2020 , a través de Association for Computing Machinery .
- ^ a b Bauer, Henry R .; Becker, Sheldon I .; Graham, Susan L .; Forsythe, George E .; Satterthwaite, Edwin H. (marzo de 1968). Número de informe técnico: CS-TR-68-89 . Departamento de Informática (Informe). Universidad Stanford.(Varios documentos de 1972 la aplicación de ALGOL W de Stanford, este informe incluye el ALGOL W Descripción del lenguaje .
- ^ a b Bauer, Henry R .; Becker, Sheldon I .; Graham, Susan L .; Satterthwaite, Edwin H .; Sites, Richard L. (junio de 1972). Descripción del lenguaje ALGOL W (PDF) (Informe). Archivado desde el original (PDF) el 19 de noviembre de 2012.
- ^ van Wijngaarden, Adriaan (22 de octubre de 1965). Diseño ortogonal y descripción de un lenguaje formal: MR76 (PDF) (Informe). Amsterdam , Holanda: Centro Matemático . Consultado el 7 de octubre de 2020 , a través de Ernst-Abbe-Hochschule Jena , Universidad de Ciencias Aplicadas, Alemania.
enlaces externos
- aw2c - compilador ALGOL W para Linux
- awe - versión actualizada de aw2c
- ALGOL W @ Everything2 : descripción informal pero detallada del lenguaje por un antiguo usuario, con barras laterales que ensalzan ALGOL W sobre Pascal como un lenguaje de programación educativo
- 1969 Listado del compilador ALGOL W en bitsavers.org
- La Terminal de Michigan del sistema Manuales, Volumen 16: ALGOL W en MTS
- Materiales ALGOL W Más de 200 programas y documentación ALGOL W