programmazione ii - lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfintroduzione...
TRANSCRIPT
![Page 1: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/1.jpg)
Programmazione II
Lezione 1
Daniele Sgandurra
19/10/2010
1/39 Programmazione II Lezione 1 19/10/2010
![Page 2: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/2.jpg)
Sommario
1 IntroduzioneStruttura del CorsoObiettiviInfo
2 Cenni StoriciEvoluzione dei Linguaggi
2/39 Programmazione II Lezione 1 19/10/2010
![Page 3: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/3.jpg)
Introduzione
Parte I
Introduzione
3/39 Programmazione II Lezione 1 19/10/2010
![Page 4: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/4.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Programmazione II
Programmazione II.
9 CFU.
72 ore (36 lezioni).1 Linguaggi di programmazione (28 ore).2 Introduzione a Java (20 ore).3 Metodologie di programmazione (24 ore).
4/39 Programmazione II Lezione 1 19/10/2010
![Page 5: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/5.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Parte 1: Linguaggi di Programmazione
Argomenti:
Macchine astratte, compilazione, interpretazione.
Sintassi, semantica.
Tipi di dato.
Espressioni e comandi.
Blocchi, ambiente e scoping.
Memoria.
Sottoprogrammi.
Strutture di controllo.
Oggetti e classi.
Passaggio di parametri.
5/39 Programmazione II Lezione 1 19/10/2010
![Page 6: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/6.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Testo di Riferimento
Linguaggi di programmazione: principi e paradigmi. MaurizioGabbrielli, Simone Martini. McGraw-Hill Italia (prima edizione2006, seconda edizione 2010?).
6/39 Programmazione II Lezione 1 19/10/2010
![Page 7: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/7.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Parte 2: Introduzione a Java
Argomenti:
Concetti base, classi, oggetti, compilazione, esecuzione.
Speci�catore accesso, overloading, ereditarietà.
Gerarchie di tipi, classi astratte, interfacce, risoluzione dei nomi, tipiprimitivi.
Iteratori, eccezioni, generics.
Laboratorio.
7/39 Programmazione II Lezione 1 19/10/2010
![Page 8: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/8.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Testo di Riferimento
Core Java 2. Vol. 1: Fondamenti. Horstmann Cay S.; Cornell Gary.Pearson Italia (2005).
8/39 Programmazione II Lezione 1 19/10/2010
![Page 9: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/9.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Parte 3: Metodologie di Programmazione
Argomenti:
Astrazioni.
Astrazioni procedurali.
Eccezioni.
Astrazione sui dati.
Iteratori.
Gerarchie di tipi.
Polimor�smo.
9/39 Programmazione II Lezione 1 19/10/2010
![Page 10: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/10.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Testo di Riferimento
Program Development in Java: Abstraction, Speci�cation, andObject-Oriented Design. Barbara Liskov, John Guttag.Addison-Wesley Professional (2000).
10/39 Programmazione II Lezione 1 19/10/2010
![Page 11: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/11.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Obiettivi
�Computer science is no more aboutcomputers than astronomy is abouttelescopes�. (Edsger Wybe Dijkstra,1930-2002; premio Turing 1972).
�A good programming language is aconceptual universe for thinking aboutprogramming. (Alan Jay Perlis,1922-1990; primo premio Turing1966).
11/39 Programmazione II Lezione 1 19/10/2010
![Page 12: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/12.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Obiettivi Parte Prima
Conoscere i paradigmi comuni a centinaia di linguaggi.
Imparare cosa sia importante nei linguaggi di programmazione.
Stretta connessione tra progettazione e implementazione di unlinguaggio.
Come i costrutti linguistici possono essere implementati e illoro relativo costo:
tradeo�.
Aspetti architetturali che possono in�uenzare la progettazionee l'implementazione.
12/39 Programmazione II Lezione 1 19/10/2010
![Page 13: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/13.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Obiettivi Parte Seconda
Conoscere il nucleo di Java.
Programmazione ad oggetti.
Saper progettare e sviluppare programmi in Java.
13/39 Programmazione II Lezione 1 19/10/2010
![Page 14: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/14.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Obiettivi Parte Terza
Speci�ca, implementazione, dimostrazioni.
Programmazione come decomposizione guidata da astrazioni.
Meccanismi di astrazione: parametrizzazione, speci�ca.
Tipi di astrazione: procedure, tipi di dato astratti, iterazioneastratta, gerarchie di tipi.
Metodologie di programmazione orientata ad oggetti(esempli�cate tramite Java).
Programmi robusti e facili da mantenere.
14/39 Programmazione II Lezione 1 19/10/2010
![Page 15: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/15.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Orario
9-10 10-11 11-12 12-13
Lun
Mar PR2 (LAB1) PR2 (LAB1)
Mer
Gio
Ven PR2 (LAB2) PR2 (LAB2) PR2 (LAB2) PR2 (LAB2)
15/39 Programmazione II Lezione 1 19/10/2010
![Page 16: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/16.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Modalità Esame
Esame = prova scritta + orale.
L'orale deve essere sostenuto nella stessa sessione dello scritto.
Ammissione all'orale con votazione ≥ 15 nello scritto.
2 prove intermedie (compitini) che possono sostituire la provascritta.
16/39 Programmazione II Lezione 1 19/10/2010
![Page 17: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/17.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Consigli
Seguire il corso mantenendosi al passo con il programma.
Partecipare (attivamente) alle esercitazioni e al laboratorio.
Sostenere le prove intermedie.
17/39 Programmazione II Lezione 1 19/10/2010
![Page 18: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/18.jpg)
IntroduzioneStruttura del CorsoObiettiviInfo
Sito Web e Contatti
Sito web (under construction):http://www.di.unipi.it/~daniele/teaching/pr2-10/
Contatto e-mail: [email protected].
Oggetto delle e-mail nella forma: [PR2]: oggetto.
Ricevimento su appuntamento: da concordare via e-mail.
18/39 Programmazione II Lezione 1 19/10/2010
![Page 19: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/19.jpg)
Cenni Storici
Parte II
Cenni Storici
19/39 Programmazione II Lezione 1 19/10/2010
![Page 20: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/20.jpg)
Cenni Storici Evoluzione dei Linguaggi
Primi Calcolatori
1941: Z3. �Primo calcolatore totalmente programmabile e automatico�:
Konrad Zuse.
1944: Mark I. �Primo calcolatore digitale automatico�:
IBM e Harvard University (Howard Hathaway Aiken).
1946: ENIAC. �Primo computer elettronico general-purpose�:
J. Presper Eckert e John Mauchly (University of Pennsylvania);in�uenzato dal seminario di Von Neumann sull'EDVAC.
1949: EDSAC. �Primo computer elettronico a programma memorizzato�:
costruito dal gruppo di Maurice Wilkes all'università di Cambridge;in�uenzato dall'ENIAC.
20/39 Programmazione II Lezione 1 19/10/2010
![Page 21: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/21.jpg)
Cenni Storici Evoluzione dei Linguaggi
Z3 e Mark I
21/39 Programmazione II Lezione 1 19/10/2010
![Page 22: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/22.jpg)
Cenni Storici Evoluzione dei Linguaggi
ENIAC e EDSAC
22/39 Programmazione II Lezione 1 19/10/2010
![Page 23: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/23.jpg)
Cenni Storici Evoluzione dei Linguaggi
Generazione dei Linguaggi
Per programmare queste macchine si usavano linguaggi macchina:
basso livello;codi�ca in binario delle operazioni e meccanismi di calcolo dellamacchina stessa;istruzioni elementari: somma, load, store;linguaggi di prima generazione (1GL).
Richiesti formalismi più lontani dal linguaggio macchina e più �vicini� al
linguaggio naturale:
primo passo: linguaggi assembly;rappresentazioni simboliche del linguaggio macchina;assemblatore (assembler): traduzione in linguaggio macchina;linguaggi di seconda generazione (2GL).
Anni '50: linguaggi di alto livello:
linguaggi astratti: prescindono dalle caratteristiche �siche deicalcolatori;linguaggi di terza generazione (3GL).
23/39 Programmazione II Lezione 1 19/10/2010
![Page 24: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/24.jpg)
Cenni Storici Evoluzione dei Linguaggi
Evoluzione
Anni '50-'60:
L'architettura hardware in�uenza direttamente i linguaggi: es. goto.
Obiettivo principale: e�cienza.
�Programmers cheap, machines expensive: keep the machine busy!�.
�I think there is a world market for about �ve computers� (attribuita aThomas J. Watson, 1943, presidente IBM).
24/39 Programmazione II Lezione 1 19/10/2010
![Page 25: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/25.jpg)
Cenni Storici Evoluzione dei Linguaggi
Evoluzione
Oggi:
Compilazione di programmi scritti in maniera e�ciente.
Connessione diretta tra software design e linguaggio:
incapsulamento;ereditarietà.
Software engineering.
�Programmers expensive, machines cheap: keep theprogrammers busy!�.
25/39 Programmazione II Lezione 1 19/10/2010
![Page 26: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/26.jpg)
Cenni Storici Evoluzione dei Linguaggi
Anni '40-'50, '50-'60
Anni '40-'50: linguaggio macchina e assembly.Anni '50-'60: primi linguaggi di alto livello:
FORTRAN (Backus 1957): per calcolo numerico-scienti�co (FORmulaTRANslator); uso di notazione matematica in espressioni.
ALGOL (Naur 1958): progettato come linguaggio universale peresprimere algoritmi (ALGOrithmic Language). Passaggio parametri pernome; blocchi; grammatica BNF (Backus Naur Form); ricorsione;gestione dinamica della memoria.
LISP (McCarthy 1959): per intelligenza arti�ciale (LISt Processor);funzioni di ordine superiore.
COBOL (1959): per applicazioni commerciali (COmmon BusinessOriented Language).
SIMULA (1962): primo linguaggio con classi e oggetti.
PL/I (IBM 1964): tentativo di creare un linguaggio multiuso(Fortran=applicazioni scienti�che, COBOL=applicazioni commerciali).Programmazione strutturata e ricorsione. Scarso successo.
26/39 Programmazione II Lezione 1 19/10/2010
![Page 27: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/27.jpg)
Cenni Storici Evoluzione dei Linguaggi
Anni '70
Pascal (Wirth): basato su ALGOL. Portabilità: P-code (codiceintermedio). Linguaggio strutturato a blocchi; funzioni e blocchi annidati.De�nizione di nuovi tipi.
C (Dennis Ritchie): evoluzione del B (a sua volta del BCPL);programmazione di sistema (Unix). E�cienza. Notevole successo.
Smalltalk (Alan Kay): strumenti di incapsulamento e information-hiding;nozione di classe e oggetto; regole di visibilità.
ML: linguaggio funzionale; nato come Meta Linguaggio per sistemasemi-automatico di dimostrazione di proprietà di programmi.
Prolog: uso della logica come base di un linguaggio di programmazione.
27/39 Programmazione II Lezione 1 19/10/2010
![Page 28: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/28.jpg)
Cenni Storici Evoluzione dei Linguaggi
Anni '80-'90
ADA (Ichbiah): bando di gara del Dipartimento della Difesa degli USAper un linguaggio per sviluppare programmi di dimensioni elevate (ede�nire un linguaggio standard). Include tutto ciò che si conosceva altempo (anche concorrenza); stato dell'arte dell'ingegneria del software;compilatori certi�cati!
Nome in onore di Augusta Ada Byron (Ada Lovelace, �glia di Lord
Byron):riconobbe le macchine di Babbage (macchina analitica) comestrumenti programmabili;prima programmatrice: algoritmo per il calcolo dei numeri diBernoulli.
28/39 Programmazione II Lezione 1 19/10/2010
![Page 29: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/29.jpg)
Cenni Storici Evoluzione dei Linguaggi
Anni '80-'90
C++ (Bjarne Stroustrup, 1986): �C più classi ed ereditarietà�.Programmazione ad oggetti; uso dei template (polimor�smoparametrico); funzioni virtuali; ereditarietà multipla.
Java (SUN, James Gosling): altamente portabile (�Write once, runanywhere�); Java Virtual Machine e bytecode; type-safety (controllo a trelivelli: compilatore, bytecode, interprete); sand-box; garbage-collector;caricamento dinamico delle classi.
29/39 Programmazione II Lezione 1 19/10/2010
![Page 30: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/30.jpg)
Cenni Storici Evoluzione dei Linguaggi
Classi�cazione dei Linguaggi
Imperativi
von Neumann: Fortran, Pascal, Basic, C;orientati agli oggetti: Smalltalk, Ei�el, C++;linguaggi di scripting: Perl, Python, JavaScript, PHP.
Dichiarativi
funzionali: Scheme, ML, pure Lisp, FP;logici, basati su vincoli: Prolog, VisiCalc, RPG.
30/39 Programmazione II Lezione 1 19/10/2010
![Page 31: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/31.jpg)
Cenni Storici Evoluzione dei Linguaggi
Linguaggi Imperativi
Basati sulla nozione di stato:
insieme di locazioni di memoria con valori.
Le istruzioni sono comandi (statements) che cambiano lostato:
es: assegnamento (y=y+2;)
C, Pascal, FORTRAN, COBOL.
Linguaggi orientati agli oggetti (Java, C++, Smalltalk):
incapsulamento;ereditarietà.
31/39 Programmazione II Lezione 1 19/10/2010
![Page 32: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/32.jpg)
Cenni Storici Evoluzione dei Linguaggi
Linguaggi Dichiarativi
Basati sulla nozione di funzione o relazione.
Le istruzioni sono dichiarazioni di nuovi valori, in modo diretto, oppure
per composizione di funzioni o relazioni:
(fun(x). x+2)3
Linguaggi funzionali (Lisp, Scheme, ML, Haskell):
basati sulla nozione di funzione;risultato del programma = valore esplicito di un'espressione;applicazione e de�nizione di funzioni;ricorsione;programmare = costruire la funzione che calcola il risultato.
32/39 Programmazione II Lezione 1 19/10/2010
![Page 33: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/33.jpg)
Cenni Storici Evoluzione dei Linguaggi
Linguaggi Dichiarativi
Linguaggi logici (Prolog, CLP):
basati sul relazioni;risultato = valore di alcune variabili determinato da alcune relazioni;istruzioni = implicazioni logiche fra formule;programmare = speci�care la relazione che de�nisce il valore dellevariabili di interesse.
33/39 Programmazione II Lezione 1 19/10/2010
![Page 34: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/34.jpg)
Cenni Storici Evoluzione dei Linguaggi
Diagramma Temporale Principali Linguaggi
34/39 Programmazione II Lezione 1 19/10/2010
![Page 35: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/35.jpg)
Cenni Storici Evoluzione dei Linguaggi
Popolarità Linguaggi di Programmazione
35/39 Programmazione II Lezione 1 19/10/2010
![Page 36: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/36.jpg)
Cenni Storici Evoluzione dei Linguaggi
Andamento a Lungo Termine dei Linguaggi Top Ten
36/39 Programmazione II Lezione 1 19/10/2010
![Page 37: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/37.jpg)
Cenni Storici Evoluzione dei Linguaggi
Perché Così Tanti Linguaggi?
Evoluzione: nel tempo abbiamo imparato metodi migliori perfare alcune cose.
Fattori socio-economici: interessi proprietari, vantaggicommerciali.
Linguaggi �special purposes�: es., C per programmazione disistema.
Preferenze personali: chi preferisce programmare in C++, chilo odia.
37/39 Programmazione II Lezione 1 19/10/2010
![Page 38: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/38.jpg)
Cenni Storici Evoluzione dei Linguaggi
Perché un Linguaggio Ha Successo?
Potere espressivo: meccanismi di astrazione.
Facilità di utilizzo: BASIC, Pascal, LOGO, Scheme.
Facilità di implementazione: BASIC, Forth.
Buoni compilatori: Fortran (codice veloce, piccolo).
Sponsor: COBOL, PL/1, Ada, Visual Basic.
Open source: C.
38/39 Programmazione II Lezione 1 19/10/2010
![Page 39: Programmazione II - Lezione 1groups.di.unipi.it/~daniele/teaching/pr2-10/pr2-01.pdfIntroduzione Struttura del Corso Obiettivi Info Programmazione II Programmazione II. 9 CFU. 72 ore(36](https://reader034.vdocuments.mx/reader034/viewer/2022042418/5f34aff298aa301d905e9e4f/html5/thumbnails/39.jpg)
Cenni Storici Evoluzione dei Linguaggi
Riferimenti
[1] Linguaggi di programmazione: principi e paradigmi (Cap 13).
Maurizio Gabbrielli, Simone Martini.
[2] History of Programming Languages.
http://oreilly.com/news/graphics/prog_lang_poster.pdf
39/39 Programmazione II Lezione 1 19/10/2010