Articulo de referencia

semántica de acción

La semántica de acción es un marco para la especificación formal de la semántica de los lenguajes de programación, inventado por David Watt y Peter D. Mosses en la década de 199...

La semántica de acción es un marco para la especificación formal de la semántica de los lenguajes de programación, inventado por David Watt y Peter D. Mosses en la década de 1990. Es una mezcla de semántica denotacional , operacional y algebraica .

La semántica de acción busca ser pragmática, y las descripciones semánticas de acción ( DSA ) están diseñadas para escalar y manejar lenguajes de programación realistas. Esto se ve favorecido por la extensibilidad y modificabilidad de las DSA, lo que ayuda a garantizar que las extensiones y los cambios no requieran demasiadas modificaciones en la descripción. Esto contrasta con el caso típico de extender la semántica denotacional u operacional, que puede requerir la reformulación completa de la descripción.

El marco de la semántica de la acción fue desarrollado originalmente en la Universidad de Aarhus y la Universidad de Glasgow . Desde entonces, grupos e individuos de todo el mundo han contribuido a este enfoque.

Entidades semánticas

Una parte importante de la semántica de acción que le confiere una modularidad sin precedentes en la semántica de lenguajes de programación es el uso de entidades semánticas de primer orden. El término "primer orden" se refiere a cómo, a diferencia de la semántica denotacional, donde una función semántica puede aplicarse a otra función semántica, en la semántica de acción, una entidad semántica no puede aplicarse a otra entidad semántica de su mismo tipo. [ 1 ] Además, las entidades semánticas utilizadas por la semántica de acción amplían la capacidad del marco para describir las construcciones de un lenguaje de programación, al denotar tanto el comportamiento del programa independiente de cualquier implementación particular como la forma en que las partes de un programa influyen en el rendimiento general del conjunto. La notación de acción, cuyo nombre es apropiado, se emplea para expresar los tres tipos de entidades semánticas presentes en la semántica de acción: acciones , datos y generadores . La entidad semántica central en este marco son las acciones, mientras que los datos y los generadores desempeñan funciones complementarias. [ 2 ] Más específicamente, las acciones son los mecanismos mediante los cuales se procesan los generadores y los datos. [ 1 ] Una acción, que puede ocurrir dentro de otra acción, es una representación paso a paso del comportamiento del programa, donde cada paso accede a la información actual, la modifica o realiza ambas acciones. Los yielders aparecen dentro de las acciones y solo acceden a la información actual. Una entidad yielder puede ser evaluada y, cuando lo es, el producto es una entidad de datos. [ 2 ]

Entidades de acción

Las entidades de acción pueden representar directamente la semántica de los programas describiendo posibles comportamientos del programa o representar, de forma más indirecta, el impacto que las partes individuales de un programa, como sentencias o expresiones, tienen en la semántica del programa en su conjunto. [ 2 ] Modelan el comportamiento computacional al indicar cambios de estado mediante la generación de nuevos valores a partir de valores pasados. Específicamente, una acción acepta datos que se le pasan a través de la información actual (los datos transitorios que se le proporcionan, las vinculaciones que recibe y el estado actual del almacenamiento) y, a partir de esto, proporciona nuevos datos transitorios, crea nuevas vinculaciones, actualiza el estado del almacenamiento o cualquier combinación de estos. [ 1 ] Una entidad de acción puede culminar de cuatro maneras posibles. Puede: completarse (terminar normalmente), escapar (terminar en una excepción), fallar (se descarta la alternativa) o divergir (no terminar). [ 2 ]

Hay cuatro categorías de información que se procesan durante la ejecución de una acción. La información transitoria corresponde a resultados intermedios y es accesible para su uso inmediato por la acción. [ 2 ] Los datos que componen la información transitoria abarcan los valores dados por expresiones. Si estos valores no se utilizan inmediatamente, se pierden. [ 1 ] La información con ámbito corresponde a tablas de símbolos y se puede referenciar desde cualquier lugar dentro de la acción y sus subacciones. [ 2 ] También es posible que dicha información se oculte dentro de una subacción, mediante la creación de un ámbito interno, en cuyo caso solo sería accesible localmente dentro de ese ámbito, para esa subacción. [ 1 ] La información estable corresponde a valores asignados a variables y se puede modificar durante la ejecución de la acción. [ 2 ] Debido a que las alteraciones en el almacenamiento durante la ejecución de una acción son persistentes, solo las acciones explícitas pueden causar tales modificaciones. [ 1 ] De acuerdo con esto, la información estable está disponible hasta que se destruye explícitamente. Y, a diferencia de la información con ámbito, no se puede ocultar. La información permanente corresponde a datos intercambiados entre acciones y se puede extender pero no modificar. La información transitoria se produce únicamente cuando una acción finaliza o se interrumpe, y la información con alcance se produce únicamente cuando una acción finaliza. La modificación de la información estable y la extensión de la información permanente deben tener lugar durante la ejecución de la acción. [ 2 ]

Una entidad de acción tiene cinco facetas diferentes, una para el procesamiento que no depende de información y cuatro para procesar cada uno de los cuatro tipos diferentes de información. La faceta básica , un ejemplo de la cual serían los flujos de control, no está vinculada a ningún tipo de información. La faceta funcional se ocupa del procesamiento de información transitoria y se caracteriza por acciones que dan y reciben datos. La faceta declarativa se ocupa del procesamiento de información con ámbito y se caracteriza por acciones que crean y reciben enlaces. La faceta imperativa se ocupa del procesamiento de información estable y se caracteriza por acciones que asignan y liberan celdas de almacenamiento, y que obtienen y modifican los datos almacenados en ellas. La faceta comunicativa se ocupa del procesamiento de información permanente y se caracteriza por acciones que envían y reciben mensajes y que "ofrecen contratos a los agentes". [ 2 ] Hay dos tipos diferentes de acciones en términos de su efecto sobre la información en cada faceta. Las acciones primitivas solo afectan la información en una faceta. Los combinadores de acciones permiten acciones que involucran múltiples facetas, gobernando cómo fluyen el control y la información para cada faceta involucrada en una acción combinada. [ 2 ] Al combinar acciones, los combinadores de acciones rigen la secuencia de las ejecuciones de subacciones y los flujos de datos entrantes y salientes para cada subacción. [ 1 ]

Entidades de datos

Las entidades de datos son los elementos que componen la información procesada en las entidades de acción. Los datos se organizan en estructuras conocidas como tipos. Los tipos son conjuntos de objetos matemáticos, incluyen operaciones que se pueden realizar sobre esos objetos y se definen según criterios algebraicos. [ 1 ] Estas estructuras permiten el acceso a cada entidad individual. Ejemplos de entidades de datos pueden incluir elementos concretos como mapas, listas, conjuntos, cadenas, caracteres, números y valores de verdad; elementos más abstractos utilizados únicamente para alguna operación computacional, a saber, el acceso a datos, como agentes, celdas correspondientes a ubicaciones de memoria y tokens; o elementos como contratos y mensajes que son una composición de componentes de datos. [ 2 ] Una abstracción es una entidad de datos que encapsula una entidad de acción, en cuyo caso la ejecución de la abstracción da como resultado la realización de la acción. Esta es la técnica mediante la cual la semántica de acción representa la declaración e invocación de subprogramas. [ 1 ]

Entidades generadoras de rendimiento

Las entidades generadoras consisten en cantidades de datos no evaluadas. Los valores de estas cantidades dependen de la información actual y del estado de la computación. Las entidades generadoras utilizan datos transitorios, enlaces y almacenamiento para seleccionar la información que se procesará mediante acciones. [ 1 ] Es durante la ejecución de las acciones que se evalúan las entidades generadoras, y su evaluación da como resultado entidades de datos. Si bien la información actual puede influir en los datos producidos por la evaluación de una entidad generadora, la evaluación no puede influir en la información actual. Si se emplean operaciones de datos en entidades generadoras, se pueden formar entidades generadoras compuestas como resultado. [ 2 ]

Notación de acción

Las palabras inglesas regulares sirven como símbolos de la notación de acciones. Esta notación está diseñada para simular el lenguaje natural, lo cual se ilustra en las partes de la oración utilizadas para denotar entidades semánticas. Las entidades de acción se representan mediante frases verbales y las entidades de datos y de rendimiento mediante frases nominales. El resultado de esta elección de símbolos es un marco que resulta muy legible y no menos formal que otros marcos, ya que permanece definido con precisión. [ 2 ]

Otros aspectos clave

La semántica de acción incorpora un nivel de abstracción que aumenta su comprensibilidad. Los detalles del control y los flujos de datos que implica una acción se incorporan implícitamente a la misma, a diferencia de la semántica denotacional, donde se expresan explícitamente los detalles de las funciones semánticas. Cuando se realiza una acción, la mayor parte del procesamiento y la manipulación de la información se produce automáticamente. [ 1 ]

Las frases de programación se asocian a acciones al construir una definición del significado de un lenguaje de programación en la semántica de acciones. La ejecución de una frase de programación corresponde a la realización de la acción a la que se asocia. [ 1 ]

La especificación del lenguaje de programación generada a partir de la aplicación de la semántica de acciones se puede dividir en un nivel inferior ( microsemántica ) y un nivel superior ( macrosemántica ). El nivel inferior consiste en definir el significado de la notación de acciones, mientras que el nivel superior consiste en definir el significado de un lenguaje de programación, utilizando para ello la notación de acciones. [ 1 ]

Referencias

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Slonneger, Kenneth; Kurtz, Barry L. (1995). Sintaxis formal y semántica de los lenguajes de programación: un enfoque basado en el laboratorio . Reading, MA: Addison-Wesley.
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 Peter D. Mosses (1996) Teoría y práctica de la semántica de la acción . Publicación. Aarhus, DK: Universidad de Aarhus, 1996. Serie de informes BRICS RS9653.