Semantiche dei linguaggi di programmazione

Slides:



Advertisements
Presentazioni simili
Informatica II – Basi di Dati (08/09) – Parte 1
Advertisements

Algebra Booleana Generalità
Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Punti Fissi.
Linguaggi di programmazione
Type Checking (1° parte)
Generazione di Codice Intermedio
Algoritmi e Programmazione
Massa Laura Mela Enrica
Informatica Generale Marzia Buscemi
Generalità Linguaggio e Macchina Astratta
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Ordini Parziali - Reticoli
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Interpretazione Astratta
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Semantica Denotazionale
Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica.
Semantica Denotazionale
Ordini Parziali - Reticoli
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
1 Le competenze di base dell'asse matematico Utilizzare le tecniche e le procedure del calcolo aritmetico ed algebrico, rappresentandole anche sotto forma.
Algebra di Boole ed elementi di logica
Informatica di base A.A. 2003/2004 Algoritmi e programmi
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
Intelligenza Artificiale
Fondamenti di Informatica Algoritmi
Il Linguaggio C.
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Analisi di Immagini e Dati Biologici
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
LINGUAGGI DI PROGRAMMAZIONE
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Elementi di Informatica di base
CODIFICA Da flow-chart a C++.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1 Nuovo Obbligo Scolastico: Gli Assi Culturali. 2 Asse dei Linguaggi Asse Matematico Asse Scientifico-Tecnologico Asse Storico Sociale.
Anno accademico Le istruzioni di controllo in C.
4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Un po’ di ripasso di algebra §necessaria per discutere la semantica denotazionale l e da riprendere quando parleremo di interpretazione astratta §reticoli.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Elementi di semantica denotazionale ed operazionale
Transcript della presentazione:

Semantiche dei linguaggi di programmazione

A cosa serve la semantica di un linguaggio? Uno standard preciso per l’implementazione del linguaggio (generazione di compilatori): Come puo’ essere implementato il linguaggio in diverse macchine? Documentazione per l’utente: Qual’e’ il significato di un programma, data una particolare combinazione dei costrutti linguistici supportati? Uno strumento per la progettazione e l’analisi: Come puo essere sintonizzata la definizione del linguaggio in modo che possa essere implementata in modo efficiente? Tino Cortesi Analisi e Verifica di Programmi

Metodi per specificare la semantica Semantica Operazionale: [[ program ]] = programma per una macchina astratta Semplice da implementare Difficile ragionarci sopra Semantica Denotazionale: [[ program ]] = denotazione matematica (una funzione) Facilita il ragionarci sopra Non sempre e’ facile trovare domini semantici appropriati Tino Cortesi Analisi e Verifica di Programmi

Metodi per specificare la semantica Semantica Assiomatica: [[ programma ]] = insieme di proprieta’ Utile per provare teoremi sui programmi Distante dalla implementazione Structured Operational Semantics: [[ programma ]] = transition system (regole di inferenza) Utile per concorrenza e non determinismo Difficile ragionare sull’equivalenza Tino Cortesi Analisi e Verifica di Programmi

Metodi per specificare la semantica Semantica Denotazionale Definisce un modello, una astrazione, una interpretazione for the language designers Semantica Assiomatica Costruisce una teoria logica for the programmers Semantica Operazionale Costruisce un interprete o una rappresentazione finita for the language implementors Tino Cortesi Analisi e Verifica di Programmi

Esempio di semantica operazionale Il comando C for ( expr1; expr2; expr3 ){ • • • } viene espresso come: Basata su linguaggi di livello inferiore, non su matematica o logica expr1; loop: if expr2 = 0 goto out • • • exp3; goto loop out: • • • Tino Cortesi Analisi e Verifica di Programmi

Esempio di semantica assiomatica Notazione: {P} S {Q} P preconditon S comando Q postcondition Esempio Trova la weakest precondition P per: {P} a = b + 1 {a > 1} Una possibile precondition: {b > 10} Weakest precondition: {b > 0} Tino Cortesi Analisi e Verifica di Programmi

Esempio: Comando di assegnamento Sia x=E un generico comando di assegnamento In questo caso la semantcia dell’assegnamento e` data da un unico assioma: {Q x  E} x = E {Q} La weakest precondition P viene data da Q x  E In altre parole, P si ottiene dalla proprieta` Q sostituendo tutte le occorrenze di x con l’espressione E Ad esempio, {?} a = a + b – 3 {a > 10} Sostuituisce tutte le occorrenze di a in {a >10} con a+b-3 Questo diventa: a+b-3>10, ovvero b>13-a Quindi, Q x  E e’ { b>13-a } Tino Cortesi Analisi e Verifica di Programmi

Esempio: comando di selezione Consideriamo il comando if-then-else La regola di inferenza e’ Esempio {?} if ( x > 0 ) then y = y - 5 else y = y + 3 { y > 0 } Le precondizioni per S2 sono { x <= 0 } e {y > -3 } Le precodizioni per S1 sono { x > 0 } e {y > 5 } Chi e’ allora P ? Nota che { y > 5 } => { y > -3 } Quindi la precondizione P e’ { y > 5 } { B and P } S1 { Q }, { (not B) and P } S2 { Q} { P } if B then S1 else S2 { Q } Tino Cortesi Analisi e Verifica di Programmi

Semantica Denotazionale

Semantica Denotazionale Ad ogni costrutto sintattico (parte del programma) P viene associata la sua denotazione [| P |], un oggetto matematico che rappresenta il contributo di P al significato di un qualsiasi programma che contenga P. Composizionalità: la denotazione di un costrutto linguistico (parte del programma) dipende unicamente dalla denotazione delle sue sotto-componenti Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Il linguaggio while Elementi sintattici Notazione BNF Tino Cortesi Analisi e Verifica di Programmi

Semantica dei numerali La funzione semantica associa ad ogni numerale (in forma binaria) il suo significato (un elemento dell’insieme dei numeri interi Z) Ad esempio, Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Stato ed Espressioni Il significato dei una espressione aritmetica dipende dallo stato delle variabili che vi appaiono. Uno stato è una funzione che associa ad un insieme di variabili un corrispondente insieme di valori Data un’espressione aritmetica ed uno stato possiamo determinare il valore di questa espressione Tino Cortesi Analisi e Verifica di Programmi

Semantica delle Espressioni Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Esempio Consideriamo l’espressione aritmetica (x+1), valutata in uno stato s tale che s x = 3 Tino Cortesi Analisi e Verifica di Programmi

Semantica delle espressioni booleane Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Semantica dei comandi Un comando è un costrutto che può modificare lo stato della memoria: è quindi una funzione parziale tra stati La semantica dell’assegnamento assicura che se allora Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Comando sequenziale La semantica del comando sequenziale considera il caso In cui una ddelle due funzioni non sia definita riespetto agli argomenti: Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Comando condizionale Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Comando while La semantica del comando deve essere la stessa di Quindi la semantica di deve essere il punto fisso del funzionale F definito da Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Comando while La semantica del comando while è quindi: dove l’operatore di punto fisso FIX è del tipo: ma cosa ci assicura che il punto fisso esista? Tino Cortesi Analisi e Verifica di Programmi

C’è un minimo punto fisso? Operazionalmente possono verificarsi tre casi nell’esecuzione del comando while b do S a partire da uno stato s0 : Il comando termina C’è un loop interno (c’e’ un comando all’interno di S che non termina) E’ il loop while che non termina Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Esempio Se è lo stato in cui x vale 5, ecco un esempio per ognuno dei tre casi precedenti: while x>0 do x:=x-1 while x>0 do if (x=1) then (while true do skip) else x:= x-1 While true do skip Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Problema… Per garantire l’esistenza di soluzioni a questa equazione di punto fisso sono necessarie condizioni: Sul dominio: un ordine parziale? un CPO? un reticolo completo? Sul funzionale: monotono? continuo? Tino Cortesi Analisi e Verifica di Programmi