IMP (lenguaje de programación)


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

IMP es uno de los primeros lenguajes de programación de sistemas que fue desarrollado por Edgar T. Irons desde finales de la década de 1960 hasta principios de la de 1970, en la Agencia de Seguridad Nacional (NSA). A diferencia de la mayoría de los otros lenguajes de sistemas, IMP admite sintaxis : programación extensible .

A pesar de que su diseñador se refiere al lenguaje como "basado en ALGOL " [ cita requerida ] , IMP excluye muchas características definitorias de ese lenguaje, mientras soporta una muy diferente a ALGOL: la extensibilidad de la sintaxis.

Un compilador para IMP existía ya en 1965 y se utilizó para programar el sistema de tiempo compartido CDC 6600 , que estaba en uso 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 prácticos de producción.

Los compiladores de 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 de sintaxis, IMP utiliza un poderoso algoritmo de análisis basado en un gráfico de sintaxis y varias matrices de conectividad. El programador puede agregar nuevas producciones en formato Backus – Naur (BNF) al gráfico.

La sintaxis de IMP72 se amplía mediante declaraciones de sintaxis BNF ampliadas 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 IMP72 que constaba completamente de declaraciones de sintaxis, que se ingresó a un compilador trivial que inicialmente pudo traducir el caso más simple de la declaración de sintaxis. . También hay una forma simple de la declaración de sintaxis que parece una macro para el usuario casual.

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

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

Por ejemplo, para agregar la construcción descrita por el siguiente BNF:

< EXP > :: =  INCREMENTO < VBL >

con la semántica a la que INCREMENT Vdebería traducirse 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:

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

La parte semántica de esta declaració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 en la parte superior de la pila en el momento en que se invoca esta producción. DEWOPes una rutina semántica que toma respectivamente como argumentos un código de operación en 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 declaración de sintaxis anterior será compilar el código para calcular el valor absoluto de A.

Sistema operativo folclórico

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

Ver también

  • Idioma IMP de Edimburgo (contraste)

Referencias

  1. ^ Cotter, George. "Computación de alto rendimiento en la Agencia Nacional de Seguridad" . Fronteras de la supercomputación II . Prensa de la Universidad de California . Consultado el 25 de mayo de 2012 .
  • Irons, Edgar T. (enero de 1970). "Experiencia con un lenguaje extensible". Comunicaciones de la ACM . Asociación de Maquinaria Informática . 13 (1): 31–40. doi : 10.1145 / 361953.361966 . S2CID  17635545 .
  • Bilofsky, Walter (mayo de 1974). "Extensión de sintaxis y lenguaje de programación IMP72". Avisos SIGPLAN . Asociación de Maquinaria Informática . 9 (5): 13–30. doi : 10.1145 / 987413.987416 . S2CID  2170981 - a través de la Universidad de Yale.

enlaces externos

  • PDP-10 IMP72 Manual de referencia
  • Fuentes IMP72 (dcus: [43,50306] *. *)
Obtenido de " https://en.wikipedia.org/w/index.php?title=IMP_(programming_language)&oldid=1038931520 "