Informatica 3
LEZIONE 1: Introduzione
• Modulo 1: Introduzione al corso
• Modulo 2: Introduzione ai linguaggi di
programmazione
Politecnico di Milano - Prof. Sara Comai
1
Informatica 3
Lezione 1- Modulo 1
Introduzione al corso
Politecnico di Milano - Prof. Sara Comai
2
Introduzione
• Corso di Informatica 3 suddiviso in 2 parti:
concetti e problematiche dei linguaggi di
programmazione
algoritmi e strutture di dati
Politecnico di Milano - Prof. Sara Comai
3
Concetti di linguaggi di
programmazione
• Concetti di linguaggi di programmazione
–
–
–
–
–
Sintassi e semantica
Tipi di dati
Strutturazione della computazione
Programmazione orientata agli oggetti
Linguaggi di programmazione funzionali
Politecnico di Milano - Prof. Sara Comai
4
Algoritmi e strutture di dati
• Algoritmi e strutture di dati:
–
–
–
–
–
–
–
–
Analisi degli algoritmi
Liste, code e pile
Alberi binari e alberi generici
Grafi
Strutture di dati avanzate
Algoritmi di ordinamento
Algoritmi di ricerca
Progettazione di macchine a stati e Statecharts
Politecnico di Milano - Prof. Sara Comai
5
Linguaggio di programmazione
• Linguaggio di programmazione adottato:
C++
• Revisione critica delle caratteristiche del
linguaggio
• Introduzione di nuovi concetti:
–
–
–
–
ereditarietà
polimorfismo
classi astratte e funzioni virtuali
template
Politecnico di Milano - Prof. Sara Comai
6
Informatica 3
Lezione 1- Modulo 2
Introduzione ai linguaggi di
programmazione
Politecnico di Milano - Prof. Sara Comai
7
Introduzione
• Linguaggi di programmazione
– Strumento per scrivere software
• Esempi di influenza (reciproca) tra LP e altri aspetti dello
sviluppo SW
– processo di sviluppo del software
– ambienti di sviluppo
– metodologie di progettazione
– Evoluzione dei concetti dei linguaggi
programmazione
Politecnico di Milano - Prof. Sara Comai
8
Linguaggi e processo di sviluppo del
software
Analisi dei requisiti
e specifica
Progettazione del
software
Implementazione
(codifica)
Linguaggi di
programmazione
Verifica e
validazione
Manutenzione
Politecnico di Milano - Prof. Sara Comai
9
Linguaggi e ambienti di sviluppo del
software
• Per supportare tutte le fasi di sviluppo del
software:
Strumenti CASE (Computer-Aided Software
Engineering) che integrano
– editor
– compilatori
– simulatori
– interpreti
– linker
– strumenti di debugging
Politecnico di Milano - Prof. Sara Comai
10
Linguaggi e metodi di progettazione
• Esempi di metodi di progettazione:
– top-down: scomposizione del sistema in moduli
– orientata agli oggetti: scomposizione del sistema
in classi di oggetti
– ...
• Linguaggi diversi supportano metodi di
progettazione diversi
– lo stile di programmazione indotto dal linguaggio
prende il nome di
PARADIGMA DI PROGRAMMAZIONE
Politecnico di Milano - Prof. Sara Comai
11
Paradigmi dei linguaggi
• Programmazione procedurale
– programmi decomposti in passi di computazione
– unità di modularizzazione: procedure
• Programmazione funzionale
– computazione di valori attraverso espressioni e funzioni
– elementi di base: funzioni
• Programmazione basata su tipi di dati astratti
– unità di modularizzazione: tipo di dato astratto (ADT)
• Programmazione basata su moduli
– unità di modularizzazione: gruppo di entità (variabili,
procedure, funzioni, tipi)
Politecnico di Milano - Prof. Sara Comai
12
Paradigmi dei linguaggi
• Programmazione orientata agli oggetti
– unità di modularizzazione: classi (organizzate in gerarchie)
– moduli istanziati a tempo di esecuzione
• Programmazione generica
– moduli generici che si possono istanziare a tempo di
compilazione o esecuzione
• Programmazione dichiarativa
– descrizione dichiarativa del problema (specifica)
Politecnico di Milano - Prof. Sara Comai
13
Linguaggi e architettura del
calcolatore
• Architettura di von Neumann
I/O
Memoria
CPU
fetch
execute
store
• Linguaggi di von Neumann (o imperativi o basati su
stati o basati su istruzioni): astrazione della macchina
di von Neumann
– esecuzione sequenziale delle istruzioni che modifica lo stato
della computazione (variabili)
Politecnico di Milano - Prof. Sara Comai
14
Paradigmi dei linguaggi
Linguaggi di
programmazione
Linguaggi di
Von Neumann
(Procedurali,
operazionali, ...)
Linguaggi non di
Von Neumann
Linguaggi
funzionali
(LISP, ML)
Linguaggi logici
(PROLOG)
Politecnico di Milano - Prof. Sara Comai
15
Qualità dei linguaggi di
programmazione
• Il software deve essere
– affidabile
•
•
•
•
•
Semplicità di scrittura
Leggibilità
Semplicità di apprendimento
Sicurezza
Robustezza
– manutenibile
• fattorizzazione
• località delle modifiche
– eseguibile in modo efficiente
Politecnico di Milano - Prof. Sara Comai
16
Storia del linguaggi di
programmazione
‘50
‘60
‘70
‘80
‘90
– Primi linguaggi ad alto livello
• FORTRAN: (applicazioni scientifiche) compilazione
separata di sottoprogrammi, formule
• ALGOL 60: (applicazioni scientifiche) struttura a blocchi,
ricorsione, strutture dati
• COBOL: (applicazioni orientate ai dati) file, I/O
– Altri linguaggi non convenzionali: non efficienti ma
adatti in aree di applicazione particolari
• LISP: (applicazioni IA) un’unica struttura dati (lista),
operazioni semplici, codice/dati uniformi (liste)
• APL: (prototipazione rapida) array, molte operazioni
• SNOBOL4: (manipolazione testi) stringhe, pattern
matching
Politecnico di Milano - Prof. Sara Comai
17
Storia del linguaggi di
programmazione
‘50
‘60
‘70
‘80
‘90
• ALGOL 68: ortogonalità di concetti, specifica formale
(applicazioni accademiche)
• SIMULA 67: simulazione, esecuzione parallela molto
semplice, primo concetto di classe (routine + strutture
dati)
• PASCAL: programmazione strutturata, semplicità
• BASIC: interattività
‘50
‘60
‘70
‘80
‘90
– Sperimentazione con nuovi paradigmi
• Linguaggi orientati agli oggetti: Smalltalk, Eiffel, ...
• Linguaggi logici: PROLOG
• Concorrenza e modularità: Mesa, Modula-2
Politecnico di Milano - Prof. Sara Comai
18
Storia del linguaggi di
programmazione
‘50
‘60
‘70
‘80
‘90
• Linguaggi funzionali: ML, Miranda
• Linguaggi orientati agli oggetti: C++, Ada, Eiffel
‘50
•
•
•
•
•
‘60
‘70
‘80
‘90
Interfacce visuali: Visual Basic
Parallelismo: FORTRAN 90
Linguaggi per sistemi esperti: CLIPS, OPS5
Linguaggi di script: Tcl/tk, Perl, Python
Programmazione di rete: Java
Politecnico di Milano - Prof. Sara Comai
19