Articulo de referencia

Lenguaje de programación ECL

El lenguaje y sistema de programación ECL era un lenguaje de programación de alto nivel extensible y un entorno de desarrollo creados en la Universidad de Harvard en la década d...

El lenguaje y sistema de programación ECL era un lenguaje de programación de alto nivel extensible y un entorno de desarrollo creados en la Universidad de Harvard en la década de 1970. El nombre «ECL» significaba «Lenguaje de Computación Extensible» o «Lenguaje ECléctico». Algunas publicaciones utilizaban el nombre «ECL» para referirse al sistema en su conjunto y EL/1 (Lenguaje Extensible) para el lenguaje.

ECL era un sistema interactivo donde los programas se representaban dentro del sistema; contaba con un compilador e intérprete compatibles . Tenía una sintaxis similar a la de ALGOL y un sistema de tipos de datos extensible , con los tipos de datos como elementos de primera clase . Los objetos de datos eran valores, no referencias, y las convenciones de llamada permitían elegir entre pasar por valor o por referencia para cada argumento.

ECL se utilizó principalmente para la investigación y la docencia en diseño de lenguajes de programación , metodología de programación (en particular, programación por refinamiento transformacional ) y entornos de programación en Harvard, aunque también se decía que se utilizaba en algunas agencias gubernamentales. Se implementó por primera vez en el PDP-10 , con una implementación posterior (solo interpretada) en el PDP-11 escrita en BLISS -11 y compilada de forma cruzada en el PDP-10.

Procedimientos y clases de enlace

Un procedimiento ECL para calcular el máximo común divisor de dos enteros según el algoritmo euclidiano podría definirse de la siguiente manera:

mcd <-EXPR ( m : INT BYVAL , n : INT BYVAL ; INT )COMENZARDECL r : INT ;REPETIRr <- rem ( m , n );r = 0 => n ;m <- n ;n <- r ;FIN;FIN

Esta es una asignación de una constante de procedimiento a la variable gcd. La línea

EXPR(m:INT BYVAL, n: INT BYVAL; INT)

indica que el procedimiento toma dos parámetros, de tipo INT, llamados my n, y devuelve un resultado de tipo INT. (Los tipos de datos se llaman modos en ECL). La clase de enlaceBYVAL en cada declaración de parámetro indica que ese parámetro se pasa por valor . Los componentes computacionales de un programa ECL se llaman formas . Algunas formas se asemejan a las expresiones de otros lenguajes de programación y otras se asemejan a sentencias. La ejecución de una forma siempre produce un valor. La construcción REPEAT... ENDes una forma de bucle. Ejecución de la construcción

r = 0 => n

Cuando la forma r = 0se evalúa como TRUEprovoca que la ejecución del bucle termine con el valor n. El valor de la última instrucción en una forma de bloque ( BEGIN... END) se convierte en el valor de la forma de bloque. El valor de la forma en una declaración de procedimiento se convierte en el resultado de la llamada al procedimiento.

Además de la clase de enlace BYVAL, ECL tiene las clases de enlace SHARED, LIKE, UNEVAL, y LISTED. La clase de enlace SHAREDindica que un parámetro se pasará por referencia . La clase de enlace LIKEhace que un parámetro se pase por referencia si es posible y por valor si no lo es (por ejemplo, si el parámetro real es un valor puro o una variable a la que se debe aplicar una conversión de tipo). La clase de enlace UNEVALespecifica que se pasará un árbol de sintaxis abstractaLISTED para el parámetro real al parámetro formal; esto proporciona una flexibilidad extraordinaria para que los programadores inventen sus propias notaciones, con su propia semántica de evaluación, para ciertos parámetros de procedimiento. La clase de enlace es similar a UNEVAL, pero proporciona una capacidad similar a la de los argumentos variables en C : la LISTEDclase de enlace solo puede aparecer en el último parámetro formal del procedimiento, y ese parámetro formal está vinculado a una lista de representaciones de árboles de sintaxis abstracta , una para cada parámetro real restante. ECL tiene una EVALfunción integrada para evaluar un árbol de sintaxis abstracta ; Alternativamente, existen funciones mediante las cuales los programadores pueden explorar los nodos del árbol de sintaxis abstracta y procesarlos según su propia lógica.

Véase también

Referencias

PISEL = Actas del simposio internacional sobre lenguajes extensibles , Grenoble, Francia, 1971, publicado en ACM SIGPLAN Notices 6:12 , diciembre de 1971.

  • Benjamin M. Brosgol, "Una implementación de tipos de datos ECL", PISEL, págs.  87–95.
  • Thomas E. Cheatham, Jr. , Glenn H. Holloway, Judy A. Townley, «Refinamiento de programas mediante transformación», Actas de la 5.ª conferencia internacional sobre ingeniería de software , 1981, págs.  430-437. ISBN 0-89791-146-6
  • Glenn H. Holloway, "Integración intérprete/compilador en ECL", PISEL, págs.  129–134.
  • Charles J. Prenner, "Las instalaciones de la estructura de control de ECL", PISEL, págs.  104–112.
  • Ben Wegbreit, "Una visión general del sistema de programación ECL", PISEL, págs.  26-28.
  • Ben Wegbreit, "Estudios sobre lenguajes de programación extensibles". Informe técnico ESD-TR-70-297. Universidad de Harvard, Cambridge, Massachusetts, mayo de 1970.
  • Glenn Holloway, Judy Townley, Jay Spitzen, Ben Wegbreit, "Manual del programador de ECL", Informe 23-74, Centro de Investigación en Tecnología Informática, Universidad de Harvard, diciembre de 1974.
  • Larry Denenberg, "La implementación de PDP-11 ECL", Informe técnico 29-77, Centro de Investigación en Tecnología Informática, Universidad de Harvard, junio de 1977.