Programmare - La didattica dell`Informatica

Introduzione
alla
Programmazione
© Giselda De Vita - 2015
1
Sulla base dell’ambito in cui si colloca il
problema da risolvere, è opportuno adottare
un linguaggio piuttosto che un altro:
² Calcolo scientifico: Fortran, C
² Intelligenza Artificiale: Prolog, Lisp, C
² Applicazioni gestionali: C++, C#, Java, Delphi
² Sistemi operativi: Assembler, C, C++
² Applicazioni visuali: C++, Java, Visual Basic, C#
² Applicazioni Web: Java, PHP, ASP
© Giselda De Vita
2
Definizione di programmare
Programmare: fornire al computer una
sequenza di istruzioni da eseguire per
ottenere un certo risultato, ovvero
un programma. Fonte: Glossario informatico http://www.pc-facile.com/glossario/processo/
© Giselda De Vita
3
Definizione di programmatore
Il programmatore è il professionista che
scrive programmi utilizzando
un linguaggio di programmazione.
© Giselda De Vita
4
"Any fool can write code that a
computer can understand.
Good programmers write code
that humans can understand."
Martin Fowler, Refactoring: Improving the
Design of Existing Code
© Giselda De Vita
5
Un buon programmatore
Caratteristiche comuni a un buon
programmatore:
ü  passione
ü  autodidattica ed amore per
l’apprendimento
ü  intelligenza
ü  esperienza
ü  varietà tecnologica
ü  curiosità
ü  fortuna…
© Giselda De Vita
6
Linguaggio Macchina
Linguaggio ad alto livello
C++
Java
VB .NET
Linguaggio Macchina
Hardware
Linguaggio macchina – E’ il
linguaggio compreso dai
computer.
Tutti i programmi vengono
eseguiti da un computer in
linguaggio macchina.
Ogni sistema Operativo ha il
suo linguaggio macchina
Ø Windows
Ø Linux
Ø Macintosh
© Giselda De Vita
7
Linguaggi ad alto livello
Linguaggio ad alto livello –
Linguaggio ad alto livello
C++
Java
VB .NET
Linguaggio Macchina
Hardware
Un linguaggio di programmazione
comprensibile.
Permette ai programmatori di
creare eseguibili per i computer.
Un linguaggio ad alto livello deve
essere trasformato in linguaggio
macchina per essere eseguito
© Giselda De Vita
8
Compilatori e Interpreti
Esistono due modi per trasformare un programma
scritto in linguaggio ad alto livello in linguaggio
macchina:
1.  Usando un compilatore
2.  Usando un interprete
Codice sorgente – Codice scritto da un
programmatore con un linguaggio di
programmazione (linguaggio ad alto livello).
© Giselda De Vita
9
Compilatori
Compilatore: Un programma che trasforma il codice
sorgente in un altro formato (linguaggio macchina)
Linguaggio ad alto livello
Source code
Linguaggio Macchina
Windows
compiler
Windows
code
Windows
Linux
compiler
Linux code
Linux
Macintosh
compiler
© Giselda De Vita
Macintosh
code
10
Macintosh
Compilatore
•  Un compilatore, in informatica, è un programma
che traduce una serie di istruzioni scritte in un
determinato linguaggio di programmazione
(codice sorgente) in istruzioni di un altro
linguaggio (codice oggetto). •  Questo processo di traduzione si chiama
compilazione. (fonte Wikipedia)
© Giselda De Vita
Fonte immagine: http://www.okpedia.it/compilatore
11
Interpreti
Interprete – Un programma che
traduce ed esegue il codice
scritto con il linguaggio ad alto
livello Linguaggio Macchina
Linguaggio ad alto livello
Source code
Interprete
Codice per
Windows,
Linux e
Macintosh
© Giselda De Vita
Windows,
Linux and
Macintosh
12
Interprete
L’ Interprete è un programma in
grado di eseguire altri programmi a
partire dal codice sorgente. L’interprete si differenzia dal
compilatore in quanto non crea un
eseguibile, ma ha il compito di
tradurre ed eseguire le istruzioni una
alla volta. © Giselda De Vita - 2015
13
Compilatore vs. Interprete
I programmi compilati:
Vantaggi
I programmi sono veloci
Svantaggi
Dipendenti dal SO – I programmi
lavorano solo per il sistema Operativo per
cui sono stati sviluppati
Esempio linguaggi compilati: C,C++
© Giselda De Vita
14
Interpreti vs. Compilatori
Vantaggi
Indipendenti dal SO Non necessitano di una compilazione globale ad ogni
modifica.
Svantaggi
Gli interpreti devono essere installati sulla macchina su
cui il programma deve essere eseguito.
Esecuzione piu’ lenta rispetto ai compilati.
Si possono usare servizi presenti in tutte le
piattaforme.
Esempio linguaggi interpretati: Perl, Visual Basic
© Giselda De Vita
15
I nuovi linguaggi (compilati e interpretati)
Ø  I linguaggi di programmazione più recenti (Java e i
linguaggi della piattaforma .NET) sono sia compilati
che interpretati
Ø  I file che contengono il codice sorgente di un
programma sono compilati
Ø  Il file compilato non contiene codice specifico di un
determinato SO
Ø  Per eseguire il programma compilato è necessario
un interprete, che traduca il codice del processore
virtuale in istruzioni del processore reale (Java
Virtual Machine, Framework .NET)
© Giselda De Vita
16
La programmazione è
una scienza esatta?
© Giselda De Vita - 2015
17
la programmazione è una scienza
esatta?
naturalmente SI
(approccio positivista)
perché le conseguenze di ogni
singola istruzione possono
essere determinate e valutate,
quantomeno in linea di principio
© Giselda De Vita
18
la programmazione è una scienza
esatta?
naturalmente NO
(approccio estetico)
perché è impossibile determinare
e valutare tutte le conseguenze
di ogni istruzione in relazione a
tutte le altre
Fonte: http://www.feaci.it/filosofia/leggi_programmazione.htm
© De
Giselda
® Giselda
Vita De Vita
19
Java: compilato e interpretato
Java è sia compilato che interpretato
I file che contengono il codice sorgente di un programma
Java (.java) sono compilati (javac)
Il file generato ha lo stesso nome del sorgente ed
estensione .class
Il file compilato non contiene codice oggetto specifico di
un determinato processore ma un bytecode
Il bytecode non è specifico per alcun processore poiché
Java è un linguaggio multipiattaforma
Per eseguire il bytecode è necessario un interprete, che
traduca il codice oggetto (bytecode) in istruzioni del
processore in uso (Java Virtual Machine)
© Giselda De Vita
20
Fonte: http://twiki.di.uniroma1.it/pub/Metod_prog/RS_L01_storia/storia.html
© Giselda De Vita - 2015
21
Linguaggi di programmazione
Linguaggi maggiormente conosciuti
anni ‘60 metà anni ’60
1974
COBOL BASIC
C
1991
1994
VB
Java
metà anni ’50
1968
1990
FORTRAN
Pascal
C++
Linguaggi di
Programmazione
Procedurale
© Giselda De Vita
Linguaggi
Ibridi
2000
C#, VB.NET
Linguaggi
Orientati
agli Oggetti
22