En la semántica del lenguaje de programación, a menudo se escucha que las personas hablan sobre significado y denotación . Parecen no ser lo mismo. ¿Cuál es la diferencia? ¿El primero está asociado con la semántica operacional mientras que el segundo con la semántica denotacional? Gracias.
10
Respuestas:
El "significado" se usa de una manera más amplia que la denotación.
La dicotomía original, heredada de la lógica y la filosofía, se encuentra entre "sentido" y "denotación" (que los filósofos llaman "referencia").
Esta distinción puede ilustrarse con el ejemplo original de Frege. Señaló que las frases "la estrella de la mañana" y "la estrella de la tarde" se referían al mismo objeto --- el planeta Venus --- pero que la oración "la estrella de la mañana y la estrella de la tarde son el mismo planeta" en realidad transmite alguna información a un lector Sugirió que el significado de una frase nominal puede ir más allá del objeto real que denota, incluyendo algo sobre cómo presenta el objeto que denota.
Cuando construimos una semántica denotacional, tratamos de construir un modelo de un lenguaje en el que los programas indistinguibles denotan --- se refieren --- al mismo objeto matemático. El objetivo es simplificar el razonamiento sobre el comportamiento de los programas, ya que podemos razonar sobre las denotaciones, los objetos matemáticos, sin tener que preocuparnos por los detalles de cómo se presenta el programa. Esto nos permite evitar tener que lidiar con aspectos del significado de los programas que no nos interesan.
La forma en que el sentido y la denotación se relacionan con la semántica operativa es más complicada y diferente. Puedo extender mi respuesta más tarde para cubrir esto, pero tengo que correr ahora. :)
EDITAR: Bien, estoy extendiendo esta respuesta ahora.
La conexión entre "denotación" y "referencia" es bastante exacta, y es exacta porque las personas que inventaron la semántica denotacional (por ejemplo, Scott y Strachey) se apropiaron de ideas de la lógica filosófica como parte de su proyecto.
Para comprender cómo se relacionan el significado y la semántica operativa, es útil recordar la noción del filósofo Michael Dummett de una "teoría del significado" y cómo difiere de una "teoría semántica".
En la terminología de Dummett, una teoría semántica es una forma compositiva de relacionar oraciones para determinar objetos matemáticos. En lógica, el significado de una oración es su valor de verdad, y se determina a partir de los valores de verdad de sus constituyentes. La semántica denotativa de los lenguajes de programación utiliza una variedad mucho más amplia de objetos matemáticos, pero funciona de la misma manera: le damos el significado de un término de programa en términos del significado de sus subterms. Entonces, en la terminología de Dummett, la semántica denotacional ofrece teorías semánticas de lenguajes de programación.
Una teoría del significado también es una forma compositiva de relacionar oraciones con objetos matemáticos, pero además contiene una descripción de lo que justifica la relación entre la oración y el objeto matemático. Desarrolló esta idea para comprender cómo los matemáticos intuicionistas entendían la noción de verdad. En particular, tenían una descripción compositiva del significado de las conexiones lógicas, pero no les daban valores semánticos de la misma manera que lo hacen los lógicos clásicos. Por ejemplo, en el relato de Brouwer-Heyting-Kolmogorov de la lógica intuicionista, la verdad se define de la siguiente manera:
Ahora, tenga en cuenta que esta definición conecta proposiciones y valores de verdad, pero la conexión debe justificarse por la posibilidad de dar pruebas canónicas.
La semántica operativa entra en escena a través de esta noción de justificación. Una semántica operativa es solo una descripción de lo que hace una máquina abstracta. Después de dar una semántica denotacional, generalmente queremos mostrar que la semántica denotacional es fiel a la semántica operacional. Esta propiedad se llama adecuación (junto con su abstracción completa del hermano mayor ), y equivale exactamente a dar una teoría del significado que conecta los estados abstractos de la máquina con los objetos denotacionales, que se cierra bajo la reducción de la máquina abstracta.
En realidad, esta no es toda la historia, ya que lo que he presentado aquí es cómo conectar enfoques operativos y denotacionales a través de un modelo de realizabilidad. Las teorías de tipo también pueden tener una semántica teórica de prueba (de hecho, esta perspectiva era lo que más le interesaba a Dummett), pero no he explicado esa conexión en esta publicación.
fuente