La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione II §Docente: Francesca Levi §

Presentazioni simili


Presentazione sul tema: "Programmazione II §Docente: Francesca Levi §"— Transcript della presentazione:

1 Programmazione II §Docente: Francesca Levi §

2 Nota §Il corso di Metodologie di Programmazione e disattivato a partire dallA.A Questo corso coincide con quello di MP solo per una piccola parte Sara sempre possibile sostenere gli esami di MP per i prossimi tre anni

3 3 1. Metodologie di Programmazione Object-Oriented §tecniche per la programmazione orientata ad oggetti (in piccolo) l specifica, implementazione, dimostrazioni §esemplificate utilizzando il linguaggio Java §testo di riferimento (prima parte): l Barbara Liskov, Program Development in Java, Abstraction, Specification and Object-Oriented Design, Addison-Wesley 2001

4 4 2: Linguaggi di Programmazione §paradigmi linguistici, costrutti §semantica operazionale §implementazione, strutture a tempo di esecuzione §testi di consultazione l T.W. Pratt & M.V. Zelkowitz, Programming languages. Design and Implementation. Prentice-Hall, 1996 l M. Gabbrielli & S. Martini, Linguaggi di programmazione – Principi e paradigmi, McGraw-Hill 2006.

5 Un po di storia §un qualunque linguaggio macchina dotato di semplici operazioni primitive per effettuare la scelta e per iterare (o simili) è Turing-equivalente, cioè può descrivere tutti gli algoritmi §i linguaggi hanno tutti lo stesso potere espressivo, ma la caratteristica distintiva importante è il quanto costa esprimere l direttamente legato al livello di astrazione fornito dal linguaggio

6 Linguaggi di basso livello §linguaggio della macchina hardware §istruzioni di basso livello, codice binario §impossibile per programmare

7 7 Linguaggi e astrazione §i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori l che possono, con un solo costrutto del linguaggio, rappresentare un numero (anche infinito) di interminabili sequenze di istruzioni macchina corrispondenti §i linguaggi si sono evoluti trasformando in costrutti linguistici (e realizzando una volta per tutte nellimplementazione del linguaggio) l tecniche e metodologie sviluppate nellambito della programmazione, degli algoritmi, dellingegneria del software e dei sistemi operativi §di fondamentale importanza è stata lintroduzione nei linguaggi di vari meccanismi di astrazione, che permettono di l estendere il linguaggio (con nuove operazioni, nuovi tipi di dato, etc.) semplicemente scrivendo dei programmi nel linguaggio stesso

8 8 Un po di storia dei linguaggi §i linguaggi di programmazione nascono con la macchina di Von Neumann l la macchina possiede un interprete capace di fare eseguire il programma memorizzato, e quindi di implementare un qualunque algoritmo descrivibile nel linguaggio macchina l linguaggio macchina

9 9 I linguaggi macchina ad alto livello §dai linguaggi macchina ai linguaggi Assembler l versione simbolica del linguaggio macchina §(anni 50) FORTRAN e COBOL §notazioni ad alto livello orientate rispettivamente al calcolo scientifico (numerico) ed alla gestione dati (anche su memoria secondaria) l astrazione procedurale (sottoprogrammi, ma con caratteristiche molto simili ai costrutti forniti dai linguaggi macchina) l nuove operazioni e strutture dati (per esempio, gli arrays in FORTRAN, e i records in COBOL) l nulla di significativamente diverso dai linguaggi macchina

10 10 Anni 60: LISP e ALGOL60 §risultati teorici a monte l formalizzazione degli aspetti sintattici primi risultati semantici basati sul -calcolo §caratteristiche comuni l introduzione dellambiente l vera astrazione procedurale con ricorsione l argomenti procedurali e per nome §ALGOL60 l primo linguaggio imperativo veramente ad alto livello §LISP (sempreverde, ancora oggi il linguaggio dellA.I.) primo linguaggio funzionale, direttamente ispirato al -calcolo

11 11 Evoluzione del filone imperativo §risultati anni 70 l metodologie di programmazione, tipi di dati astratti, modularità, classi e oggetti l programmazione di sistema in linguaggi ad alto livello: eccezioni e concorrenza §PASCAL l estensione di ALGOL60 con la definizione di tipi (non astratti), luso esplicito di puntatori e la gestione dinamica della memoria a heap (senza garbage collector) l semplice implementazione mista (vedi dopo) facilmente portabile

12 12 Il dopo PASCAL §C§C l PASCAL + moduli + tipi astratti + eccezioni + semplice interfaccia per interagire con il sistema operativo §C ++ l C + classi e oggetti (allocati sulla heap, ancora senza garbage collector)

13 13 Levoluzione del filone logico: programmazione funzionale §ML implementazione del -calcolo tipato l definizione di nuovi tipi ricorsivi l i valori dei nuovi tipi sono termini, che possono essere visitati con un meccanismo di pattern matching (versione semplificata dellunificazione) l scoping statico (a differenza di LISP) l semantica statica molto potente (inferenza e controllo dei tipi) un programma corretto per la semantica statica quasi sempre va bene l gestione della memoria a heap con garbage collector §HASKELL l ML con regola di valutazione lazy

14 14 JAVA §molte caratteristche dal filone imperativo l essenzialmente tutte quelle del linguaggio più avanzato del filone, cioè C ++ §alcune caratteristiche dei linguaggi del filone logico l gestione della memoria con garbage collector §utilizza il meccanismo delle classi e dellereditarietà per ridurre il numero di meccanismi primitivi l quasi tutto viene realizzato con classi predefinite nelle librerie §ha una implementazione mista

15 15 Prima Parte §programmazione come decomposizione guidata da astrazioni l meccanismi di astrazione: parametrizzazione, specifica l tipi di astrazione: procedure, tipi di dato astratti, iterazione astratta, gerarchie di tipi

16 16 Metodolologie §metodologie di programmazione orientata ad oggetti l esemplificate utilizzando Java l non tutto Java e non solo Java §un insieme di tecniche basate su vari tipi di astrazione l alcune supportate da Java in modo più o meno diretto l la più importante non è supportata da Java lastrazione attraverso la specifica invece di (o in aggiunta a) codice Java –specifiche informali

17 17 In dettaglio §astrazioni procedurali §astrazioni sui dati §iterazione astratta §gerarchie di tipi §polimorfismo

18 18 Astrazione tramite la specifica §specifiche, implementazioni, dimostrazioni di correttezza l relazioni formali fra 2 specifiche, fra 1 specifica ed una implementazione, etc. §le dimostrazioni sono tanto importanti quanto le implementazioni §ogni meccanismo di astrazione ha associata una particolare sequenza di operazioni di specifica, implementazione e dimostrazione l che ci porterà ad utilizzare sottoinsiemi di costrutti Java coerenti §non è compito di questo corso introdurre il linguaggio nella sua interezza l nè tanto meno le sue librerie (che si possono imparare da soli se servono)

19 19 Seconda parte: linguaggi vorremmo parlare di linguaggi di programmazione, nel senso di paradigmi di programmazione, imperativo, funzionale etc. della loro implementazione: macchine astratte, interpreti, compilatori

20 20 Semantica Semantica operazionale l linguaggio didattico (in modo incrementale) §tipi di dato, tipi di dato astratti, tipi §espressioni e comandi §ambiente, dichiarazioni, blocchi §sottoprogrammi, regole di scoping, passaggio di parametri

21 21 Linguaggio didattico §trattando un linguaggio didattico orientato ad oggetti, che ha come frammenti un linguaggio funzionale puro ed un linguaggio imperativo puro classici l il linguaggio viene introdotto in modo incrementale sia rispetto ai costrutti che rispetto ai paradigmi

22 Ocaml §Semantica operazionale: implementazione e strutture a tempo di esecuzuioone §Un po nello stile dellinterprete C visto a Programmazione I §definizioni formali e realizzazioni sempre implementate l utilizzando un linguaggio (Ocaml) adatto sia alla specifica che allimplementazione

23 23 Obiettivo §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in modo naturale linguaggi diversi e loro implementazioni l ed esiste una chiara relazione tra concetti semantici e strutture di implementazione §tali concetti e strutture mettono in evidenza ciò che è comune ai vari linguaggi e possono essere trattati a prescindere dal particolare linguaggio §per questa ragione, non tratteremo mai alcun linguaggio vero l in particolare, ignoreremo completamente le differenze legate alle specifiche sintassi

24 24 Principi di semantica e di tecniche di implementazione §Non vogliamo l una descrizione formale della semantica indipendente dallimplementazione necessaria per poter ragionare sul significato dei programmi che scriviamo l solo una descrizione delle strutture a tempo di esecuzione della particolare implementazione necessaria per ragionare sulla performance dei nostri programmi §queste due cose (e la relazione fra di esse) sono loggetto di interesse di questa parte del corso

25 25 Linguaggi §conoscere questi principi di semantica e di tecniche di implementazione consente di l migliorare la conoscenza del linguaggio che usate comunemente perché quel meccanismo non è fornito o è particolarmente costoso? l migliorare il vostro vocabolario di costrutti un costrutto che ci sarebbe utile, ma non viene fornito dal linguaggio, può spesso essere simulato l imparare agevolmente un nuovo linguaggio l scegliere il linguaggio più adatto alle vostre esigenze

26 26 Lo strumento utilizzato seconda parte del corso §Ocaml (Objective CaML), una estensione, orientata ad oggetti (e con un frammento imperativo), di uno dei più importanti linguaggi funzionali (ML) l progettato ed implementato allINRIA (Francia) §limplementazione (per tutte le piattaforme importanti) si può scaricare dal sito §il manuale on line al sito

27 27 Pagina Web §il materiale didattico delle lezioni (in formato html e di presentazione powerpoint scaricabile) è disponibile sulla pagina web §si consiglia di seguire le lezioni avendo a disposizione una copia dei lucidi (non appena avro fatto la pagina web!!!)

28 28 Esame §esame = prova scritta + orale l lorale deve essere sostenuto nella stessa sessione dello scritto §prerequisiti Programmazione I Algoritmi


Scaricare ppt "Programmazione II §Docente: Francesca Levi §"

Presentazioni simili


Annunci Google