De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar

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

Action Semantics pretende ser pragmático. Las descripciones semánticas de acción (ASD) están diseñadas para escalar y manejar lenguajes de programación realistas. Esto es ayudado por la extensibilidad y modificabilidad de los ASD. Esto ayuda a garantizar que las extensiones y los cambios no requieran demasiados cambios en la descripción. Esto contrasta con el caso típico cuando se amplía la semántica denotacional u operacional, que puede requerir una reformulación de la descripción completa.

El marco de Action Semantics se desarrolló originalmente en la Universidad de Aarhus y la Universidad de Glasgow . Desde entonces, grupos e individuos de todo el mundo han contribuido aún más al enfoque.

Entidades semánticas

Una parte importante de la semántica de acción que le da una modularidad no vista en la semántica de lenguajes de programación anteriores es el uso de entidades semánticas de primer orden. El primer orden se refiere a cómo, a diferencia de la semántica denotacional, donde una función semántica se puede aplicar a otra función semántica, en la semántica de acción, una entidad semántica no se puede aplicar a otra entidad semántica de su 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 servir para denotar tanto el comportamiento del programa que es independiente de cualquier implementación particular como la forma en que las partes de un programa influyen en el desempeño general del todo. La notación de acción con el nombre apropiado se emplea para expresar los tres tipos de entidades semánticas que se encuentran en la semántica de acciones : acciones , datos y productores . La entidad semántica central en este marco son las acciones, con datos y rendidores que ocupan roles suplementarios. [2] Más específicamente, las acciones son los mecanismos a través de los cuales se procesan los proveedores 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, cambia la información actual o hace ambas cosas. Los productores aparecen dentro de las acciones y solo acceden a la información actual. Una entidad productora puede ser evaluada y, cuando lo es, el producto es una entidad de referencia. [2]

Entidades de acción

Las entidades de acción pueden representar directamente la semántica de los programas al describir posibles comportamientos del programa o representar, de una manera más indirecta, el impacto que las partes individuales de un programa, como declaraciones o expresiones, tienen en la semántica del programa en su conjunto. [2] Modelan el comportamiento computacional indicando cambios de estado mediante la generación de nuevos valores a partir de valores pasados. Específicamente, una acción acepta los datos que se le pasan a través de la información actual (los datos transitorios que se le otorgan, las vinculaciones recibidas y el estado actual de almacenamiento) y, a partir de esto, proporciona nuevos datos transitorios, crea nuevas vinculaciones, actualiza la estado de almacenamiento, o cualquier combinación de estos. [1] Una entidad de acción puede culminar de cuatro formas posibles. Puede: completar(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 mediante el desempeño de las acciones. La información transitoria corresponde a resultados intermedios y es accesible para su uso inmediato por parte de la acción. [2] Los datos que comprenden información transitoria engloban los valores dados por expresiones. Si estos valores no se utilizan inmediatamente, se pierden. [1] La información con alcance corresponde a tablas de símbolos y se puede hacer referencia a ella 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 sólo sería accesible localmente dentro de ese ámbito, para esa subacción. [1] Información establecorresponde a los valores asignados a las variables y se puede modificar en el desempeño de la acción. [2] Debido a que las alteraciones del 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 de alcance, no se puede ocultar. La información permanente corresponde a los datos intercambiados entre acciones y puede ampliarse pero no modificarse. La información transitoria se produce solo cuando una acción se completa o escapa, y la información de alcance se produce solo cuando se completa una acción. La modificación de la información estable y la extensión de la información permanente debe 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 se basa en 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á ligada a información de ningún tipo. La faceta funcional se ocupa del procesamiento de información transitoria y se caracteriza por acciones que dan y aceptan datos. La faceta declarativa se ocupa del procesamiento de información con alcance 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 de asignación y liberación de celdas de almacenamiento, y obtención y modificación de los datos almacenados en ellas. ElLa faceta comunicativa se ocupa del procesamiento de información permanente y se caracteriza por acciones de envío y recepción de mensajes y de “oferta de 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 fluye el control y la información para cada faceta involucrada en una acción combinada. [2] Al combinar acciones, los combinadores de acciones gobiernan la secuencia de las representaciones de subacción y los flujos de datos entrantes y salientes para cada subacción. [1]

Entidades de datos

Las entidades de datos son los elementos que comprenden la información procesada en las entidades de acción. Los datos se organizan en estructuras conocidas como géneros. Las clasificaciones son conjuntos de objetos matemáticos, incluyen operaciones que se pueden realizar en esos objetos y se definen de acuerdo con criterios algebraicos. [1] Estas estructuras permiten el acceso a cada entidad individual. Los 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 el propósito de alguna operación computacional, a saber, acceso a datos, como agentes, celdas correspondientes a ubicaciones de memoria. y tokens, o elementos como contratos y mensajes que son un compuesto de componentes de datos. [2] Una abstracciónes 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 acción que se realiza. Ésta es la técnica mediante la cual la semántica de acciones representa la declaración e invocación de subprogramas. [1]

Entidades productoras

Las entidades productoras consisten en cantidades de datos no evaluadas. Los valores de estas cantidades dependen de la información actual y el estado de los cálculos. Los productores se basan en datos transitorios, enlaces y almacenamiento para seleccionar la información que se procesará mediante acciones. [1] Es durante el desempeño de la acción cuando se evalúan los rendidores 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 productora, la evaluación no puede influir en la información actual. Si las operaciones de datos se emplean en entidades productoras, se pueden formar entidades productoras compuestas como resultado. [2]

Notación de acción

Las palabras regulares en inglés sirven como símbolos de notación de acción. La notación de acción está diseñada para simular el lenguaje natural, que se ilustra en las partes del habla utilizadas para denotar entidades semánticas. Las entidades de acción están representadas por frases verbales y entidades de datos y productoras por frases nominales. El resultado de esta elección de símbolos es un marco que es altamente legible y no menos formal que otros marcos, ya que permanece definido con precisión. [2]

Otros aspectos clave

La semántica de la acción encarna un nivel de abstracción que aumenta su comprensibilidad. Los detalles del control y los flujos de datos que implica una acción están implícitamente incorporados en la acción, en lugar de expresarse explícitamente, ya que los detalles de las funciones semánticas están en semántica denotacional. Cuando se realiza una acción, la mayor parte del procesamiento y manipulación de la información se produce automáticamente. [1]

Las frases de programa se asignan 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 al desempeño de la acción a la que se asigna. [1]

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

Referencias

  1. ^ a b c d e f g h i j k l m Kenneth Slonneger y Barry L. Kurtz (1995) Sintaxis formal y semántica de lenguajes de programación: un enfoque basado en laboratorio . Reading, MA: Addison-Wesley,.
  2. ^ a b c d e f g h i j k l m 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.