PDF
La Semantica Formale dei Linguaggi di Programmazione fornisce le tecniche matematiche di base necessarie a coloro che iniziano uno studio della semantica e della logica dei linguaggi di programmazione. Queste tecniche consentiranno agli studenti di inventare, formalizzare e giustificare regole con cui ragionare su una varietà di linguaggi di programmazione. Sebbene la trattazione sia elementare, molti degli argomenti trattati provengono da ricerche recenti, inclusa l’area vitale della concorrenza. Il libro contiene molti esercizi che vanno da semplici a miniprogetti. Partendo dalla teoria degli insiemi di base, viene introdotta la semantica operativa strutturale come un modo per definire il significato dei linguaggi di programmazione insieme alle tecniche di dimostrazione associate. La semantica denotazionale e assiomatica viene illustrata su un semplice linguaggio di programmi while, e vengono fornite prove fallaci dell’equivalenza della semantica operazionale e denotazionale e della solidità e relativa completezza della semantica assiomatica. È inclusa una dimostrazione del teorema di incompletezza di Godel, che sottolinea l’impossibilità di raggiungere una semantica assiomatica completamente completa. È supportato da un’appendice che fornisce un’introduzione alla teoria della computabilità basata sui programmi while. Dopo una presentazione della teoria dei domini, vengono trattati la semantica e i metodi di dimostrazione per diversi linguaggi funzionali. Il linguaggio più semplice è quello delle equazioni di ricorsione con valutazione sia chiamata per valore che chiamata per nome. Questo lavoro è esteso a linguaggi con tipi superiori e ricorsivi, inclusa una trattazione dei lambda-calcoli desiderosi e pigri. In tutto il libro viene sottolineata la relazione tra semantica denotazionale e semantica operazionale e vengono fornite prove della corrispondenza tra semantica operativa e semantica denotazionale. La trattazione dei tipi ricorsivi – una delle parti più avanzate del libro – si basa sull’uso di sistemi informativi per rappresentare i domini. Il libro si conclude con un capitolo sui linguaggi di programmazione parallela, accompagnato da una discussione sui metodi per specificare e verificare programmi non deterministici e paralleli.
DOWNLOAD

