stringtranslate.com

IMP (lenguaje de programación)

IMP es uno de los primeros lenguajes de programación de sistemas que desarrolló Edgar T. Irons a fines de la década de 1960 y principios de la de 1970 en la Agencia de Seguridad Nacional (NSA). A diferencia de la mayoría de los demás lenguajes de sistemas, IMP admite la sintaxis : programación extensible .

Aunque su diseñador se refiere al lenguaje como "basado en ALGOL " [ cita requerida ] , IMP excluye muchas características definitorias de ese lenguaje, mientras que admite una que no se parece en nada a ALGOL: la extensibilidad de la sintaxis.

Ya en 1965 existía un compilador para IMP que se utilizó para programar el sistema de tiempo compartido CDC 6600 , que se utilizaba en el Instituto de Análisis de Defensa desde 1967. Aunque el compilador es más lento que otros comparables para lenguajes no extensibles, se ha utilizado para trabajos de producción prácticos.

Los compiladores IMP se desarrollaron para las computadoras CDC 6600 , Cray , PDP-10 y PDP-11 . Las versiones importantes de IMP fueron IMP65, IMP70 e IMP72.

Sintaxis extensible en IMP72

Al ser un lenguaje de programación de sintaxis extensible, IMP permite a un programador extender su sintaxis, aunque no se proporcionan medios específicos para agregarle nuevos tipos de datos o estructuras. Para lograr su extensibilidad sintáctica, IMP utiliza un potente algoritmo de análisis basado en un gráfico de sintaxis y varias matrices de conectividad. El programador puede agregar nuevas producciones de la forma Backus-Naur (BNF) al gráfico.

La sintaxis de IMP72 se extiende mediante sentencias de sintaxis BNF extendidas incluidas en un programa de código fuente . El mecanismo es tan poderoso que permitió la implementación del lenguaje por sí mismo, es decir, mediante un archivo fuente de IMP72 que consistía completamente en sentencias de sintaxis, que se ingresaba en un compilador trivial que inicialmente era capaz de traducir el caso más simple de la sentencia de sintaxis. También existe una forma simple de la sentencia de sintaxis que parece una macro para el usuario ocasional.

Básicamente, la declaración de sintaxis es una producción BNF aumentada con semántica asociada agregada a la derecha:

 < class >  :: = parte-sintaxis :: = parte-semántica   

Por ejemplo, para agregar el constructo descrito por el siguiente BNF:

 < EXP >  :: = INCREMENTO < VBL >  

Con la semántica que INCREMENT Vdebería traducirse a V ← V + 1, el programador solo necesitaría insertar la siguiente declaración IMP :

 < EXP >  :: = INCREMENTO < VBL , A > :: = "A←A+1"    

La parte semántica también puede contener llamadas a rutinas semánticas , como en la siguiente declaración de sintaxis:

 < ÁTOMO >  :: = ABS ( < ÁTOMO , A > ) :: = DEWOP ( 214 B , AREG1 ( 1 , 13 ) , A )      

La parte semántica de esta instrucción consiste en una llamada a la rutina semántica DEWOP. Los argumentos son la constante octal 214B, la llamada a la rutina semántica AREG1(1,13)y A, que es el objeto que se encuentra en la parte superior de la pila en el momento en que se invoca esta producción. DEWOPes una rutina semántica que toma como argumentos respectivamente un código de operación de lenguaje de máquina PDP-10 , un objeto de registro y cualquier otro objeto, y produce un objeto cuyo valor es el resultado de ejecutar la instrucción de máquina designada utilizando como campo de dirección el objeto que es su último argumento. En este ejemplo, el código de operación 214Bdesigna la Load Magnitudeinstrucción y, por lo tanto, el resultado de la instrucción de sintaxis anterior será compilar código para calcular el valor absoluto de A.

Sistema operativo Folklore

IMP era el lenguaje utilizado en el sistema operativo de tiempo compartido de la NSA llamado Folklore . [1]

Véase también

Referencias

  1. ^ Cotter, George. "Computación de alto rendimiento en la Agencia de Seguridad Nacional". Frontiers of Supercomputing II . University of California Press . Consultado el 25 de mayo de 2012 .

Enlaces externos