Qual è la differenza tra significato e denotazione?


10

Nella semantica del linguaggio di programmazione, si sente spesso che le persone parlano di significato e denotazione . Sembrano non essere gli stessi. Qual è la differenza? Il primo è associato alla semantica operativa mentre il secondo alla semantica denotazionale? Grazie.


Puoi citare una fonte che lo fa, per favore? Nella mia esperienza, significato e denotazione sono usati per riferirsi allo stesso concetto nella letteratura della semantica del linguaggio di programmazione (sebbene, in Filosofia, siano usati in modi diversi, come Neel spiega di seguito).
Uday Reddy,

@UdayReddy: mi è venuta in mente la domanda. Non riesco a ricordare dove l'ho preso, probabilmente da testi filosofici.
giorno

Risposte:


18

Il "significato" è usato in modo più ampio rispetto alla denotazione.

La dicotomia originale, ereditata dalla logica e dalla filosofia, è tra "senso" e "denotazione" (che i filosofi chiamano "riferimento").

Questa distinzione può essere illustrata dall'esempio originale di Frege. Ha osservato che le frasi "la stella del mattino" e "la stella della sera" si riferivano allo stesso oggetto --- il pianeta Venere --- ma che la frase "la stella del mattino e la stella della sera sono lo stesso pianeta" trasmette effettivamente alcune informazioni ad un lettore. Ha suggerito che il significato di una frase sostantivo può andare oltre l'oggetto reale che indica, incluso qualcosa su come presenta l'oggetto che indica.

Allo stesso modo, in un linguaggio di programmazione, l'espressione non è la stessa dell'espressione , anche se possono essere (dovrebbero essere!) Completamente indistinguibili da qualsiasi programma client. Ma anche se sono indistinguibili , non sono uguali : quando si valutano i due programmi, la macchina esegue una moltiplicazione nel primo caso e non nel secondo.8×756

Quando costruiamo una semantica denotazionale, proviamo a costruire un modello di una lingua in cui programmi indistinguibili denotano --- si riferiscono a --- lo stesso oggetto matematico. L'obiettivo è semplificare il ragionamento sul comportamento dei programmi, poiché possiamo ragionare sulle denotazioni, sugli oggetti matematici, senza doversi preoccupare dei dettagli di come viene presentato il programma. Questo ci consente di evitare di dover affrontare aspetti del significato dei programmi che non ci interessano.

Il modo in cui senso e denotazione si riferiscono alla semantica operativa è più complicato e diverso. Potrei estendere la mia risposta in seguito per coprire questo, ma ora devo correre. :)

EDIT: Okay, sto estendendo questa risposta ora.

La connessione tra "denotazione" e "riferimento" è praticamente esatta, ed è esatta perché le persone che hanno inventato la semantica denotazionale (ad esempio, Scott e Strachey) si appropriavano consapevolmente delle idee dalla logica filosofica come parte del loro progetto.

Per capire come si correlano significato e semantica operativa, è utile ricordare il concetto del filosofo Michael Dummett di una "teoria del significato" e come si differenzia da una "teoria semantica".

Nella terminologia di Dummett, una teoria semantica è un modo compositivo di mettere in relazione frasi con determinati oggetti matematici. Nella logica, il significato di una frase è il suo valore di verità, ed è determinato dai valori di verità dei suoi costituenti. La semantica denotazionale dei linguaggi di programmazione utilizza una varietà molto più ampia di oggetti matematici, ma funziona allo stesso modo: diamo il significato di un termine del programma in termini di significato dei suoi sotterfidi. Quindi, nella terminologia di Dummett, la semantica denotazionale offre teorie semantiche dei linguaggi di programmazione.

Una teoria del significato è anche un modo compositivo per mettere in relazione frasi con oggetti matematici, ma in più contiene un resoconto di ciò che giustifica la relazione tra la frase e l'oggetto matematico. Ha sviluppato questa idea per capire come i matematici intuizionisti comprendessero la nozione di verità. In particolare, avevano un resoconto compositivo del significato dei connettivi logici, ma non davano loro valori semantici allo stesso modo dei logici classici. Ad esempio, nel racconto di Brouwer-Heyting-Kolmogorov della logica intuizionista, la verità è definita nel modo seguente:

  • Una prova canonica di è una coppia , dove è una prova canonica di e è una prova canonica di .AB(p1,p2)p1Ap2B
  • Una dimostrazione canonica di è una coppia , dove è o , e se è , allora è una dimostrazione canonica di , e se è , allora è un la prova canonica .AB(i,p)i01i0pAi1pB
  • Una prova canonica di è una procedura efficace, che prende alcuna prova canonica di e calcola una prova canonica di .ABAB
  • Una dimostrazione canonica di è una procedura efficace che accetta un numero e calcola una dimostrazione canonica di .x.A(x)nA(n)
  • Una prova canonica di è una coppia , dove è un numero e è una prova di .x.A(x)(n,p)npA(n)

Una proposizione si dice che sia vero quando è possibile dare una prova canonica di .AA

Ora, nota che questa definizione collega proposizioni e valori di verità, ma la connessione deve essere giustificata dalla possibilità di fornire prove canoniche.

La semantica operativa entra in scena attraverso questa nozione di giustificazione. Una semantica operativa è solo una descrizione di ciò che fa una macchina astratta. Dopo aver dato una semantica denotazionale, generalmente vogliamo dimostrare che la semantica denotazionale è fedele alla semantica operativa. Questa proprietà si chiama adeguatezza (insieme all'astrazione completa del fratello maggiore ) e equivale esattamente a dare una teoria dei significati che collega gli stati macchina astratti con oggetti denotazionali, che è chiusa sotto la riduzione della macchina astratta.

Questa non è in realtà l'intera storia, poiché quello che ho esposto qui è come collegare gli approcci operativi e denotazionali attraverso un modello di realizzabilità. Le teorie dei tipi possono anche avere una semantica teorica delle prove (in effetti, questa prospettiva era ciò a cui Dummett era maggiormente interessato), ma non ho spiegato questa connessione in questo post.


Grazie per la bella spiegazione. In attesa dell'espansione che copre le loro relazioni con la semantica operativa.
giorno

Grande spiegazione, Neel. Grazie mille. Quindi, se capisco correttamente, la cosiddetta teoria del significato è più formale. Nel caso della logica intuizionista, la verità è definita come prova teoricamente.
giorno

Le teorie del significato non sono necessariamente più formali; una semantica denotazionale è matematica completamente formale! Una teoria semantica dice che " uguale a " e una teoria del significato dice che " è correlata a , a causa di ". Se dici che è , non fornisci una giustificazione perché è un'equazione. Ad ogni modo, The Logical Basis of Metaphysics è un libro davvero fantastico, e vale la pena perseverare attraverso il ponderoso filosofo-inglese di Dummett per leggerlo. XYXYZXY
Neel Krishnaswami,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.