S(Semantica)

by

ma….dispiacerebbe a qualcuno fornire una definizione di linguaggio formale e di linguaggio di programmazione?

Per il primo l’ho già scritta: un linguaggio formale è un insieme di stringhe. Per il secondo non ho mai letto una definizione rigorosa e mi affido a wikipedia per una definizione informale: “un linguaggio di programmazione è un linguaggio formale dotato di una sintassi ben definita per scrivere programmi per calcolatori”.

allora non riesco ancora a capire cosa significhi che

“la semantica dei linguaggi di programmazione è spesso definita in termini intuitivi, con il risultato che alcune espressioni di questi linguaggi risultano privi di una semantica ben definita (ed è pertanto decisa dal compilatore).”a cosa si riferisce quindi la semantica dei linguaggi di programmazione? come fa una funzione a essere definita in termini intuitivi?
Ti faccio un esempio davvero terra terra in C, eventualmente chiedi a Tiziano. Lo standard del linguaggio C definisce la semantica di istruzioni come:

z = x+y; (a z viene assegnato il valore di x+y)

A[i]=z; (alla cella ‘i’ del vettore A viene assegnato il valore z)

i++; (‘i’ viene incrementata di 1)

Ci sono però espressioni sintatticamente corrette come:

A[i++] = i;

della quale la specifica del linguaggio C non fornisce la semantica. E’ come se durante un gioco di società i giocatori potessero raggiungere una casella misteriosa della quale le regole del gioco non parlano. Il problema evidenziato dall’esempio sarebbe facilmente risolvibile, ma ce ne sono di arbitrariamente complessi.
Per i linguaggi di programmazione come il C degli Informatici hanno scritto un sistema di “regole del gioco” molto complesso che evita questo genere di problemi. Per linguaggi di programmazione più astratti questa opera è ancora in corso.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...


%d blogger cliccano Mi Piace per questo: