SOFTWARE di SVILUPPO
I linguaggi di programmazione
SOFTWARE DI SVILUPPO
PROGRAMMA:
PROGRAMMA
è una sequenza di
istruzioni scritte in un linguaggio
comprensibile dal calcolatore che le
esegue per risolvere determinati
problemi
Il PROGRAMMA rappresenta quindi con
l’insieme delle sue istruzioni, quelle
azioni compiute sui dati in ingresso per
produrre risultati in uscita
3
STRUMENTI di SVILUPPO
LINGUAGGI di PROGRAMMAZIONE
Linguaggi Macchina
Linguaggi Basso livello
Linguaggi Alto livello
TRADUTTORI
Assemblatori
Compilatori
Interpreti
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
4
STRUMENTI di SVILUPPO
Nella programmazione bisogna distinguere tra
due diversi tipi di programma
PROGRAMMA SORGENTE
Programma aperto. E’ il programma scritto
dal programmatore in un linguaggio di
basso o alto livello
PROGRAMMA OGGETTO
Programma chiuso. E’ il programma che è
stato trasformato, tramite un
TRADUTTORE in linguaggio macchina
(binario o esadecimale)
5
Dal problema alla soluzione
Problema
Risultati
Elaborazione
Algoritmo
Programma
sorgente
4 Liceo - A.S. 2011-12
Programma
traduttore
Informatica e Sistemi - Prof. Corrado Lai
Programma
oggetto
6
LINGUAGGI
MACCHINA
Sono i linguaggi direttamente interpretabili
dalla CPU
La CPU può interpretare solo stati elettrici di
tensione di livello alto (1) o basso (0)
I linguaggi macchina vengono perciò espressi
in codice binario
Il codice binario viene inviato alla CPU
attraverso il BUS DATI
Ad es. le prime CPU della Intel 8088 avevano
un basi dati ad 8 bit.
Quante istruzioni posso ottenere con 8 bit?
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
7
LINGUAGGI
MACCHINA
Le istruzioni o codici che posso ottenere se
ho una CPU con bus dati a 8 bit saranno
2 = 256
8
Ho quindi un set di istruzioni pari a 256
codici
Nuovi processori della Intel e della AMD
hanno un bus dati a 16, 32 e a 64 bit
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
8
LINGUAGGI
MACCHINA
• Se il set di istruzioni è rimasto compatibile
con i vecchi processori è possibile
aumentare la velocità di elaborazione (si
elaborano più istruzioni per volta) senza
variare la frequenza del clock
• Ad esempio se abbiamo un bus dati a 32 bit
è possibile analizzare 4 istruzioni per volta
• L’altra possibilità è quella di usare un set di
istruzioni più esteso visto l’aumento del
numero di codici a disposizione
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
9
LINGUAGGI
MACCHINA
• In base al SET di ISTRUZIONI che il processore
gestisce si individuano due tipi di famiglie di
microprocessori
• RISC (Reduced Instruction Set Computing)
Riconoscono un numero ridotto di codici. Per
eseguire funzioni complesse utilizzano
combinazioni degli stessi
• CISC (Complex Instruction Set Computing)
Lavorano con un esteso numero di codici di base
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
10
LINGUAGGI
MACCHINA
• Inizialmente data la limitata potenza dei PC,
i processori RISC risultavano più indicati.
• Al momento, date le elevatissime frequenze
di lavoro raggiunte dai processori CISC tutti
i PC sono equipaggiati di processori CISC
• L’unico processore di tipo RISC attualmente
utilizzato nei PC è il Motorola PowerPC che
equipaggia alcuni sistemi Apple
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
11
LINGUAGGI
MACCHINA
Un
programma scritto in linguaggio
macchina viene anche detto CODICE
L’uso
del codice binario risulta di
difficile utilizzo pratico
Il
CODICE viene perciò in genere
rappresentato anche mediante il
formato esadecimale secondo la
conversione Binario Esadecimale
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
12
Linguaggi di basso livello
La
lettura di un codice scritto in
linguaggio macchina anche se in
esadecimale risulta in genere piuttosto
difficoltosa
A
ciò pone rimedio i linguaggi di basso
livello come il
linguaggio ASSEMBLY
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
13
Linguaggi a basso livello
Il linguaggio ASSEMBLY associa alle singole
istruzioni del linguaggio macchina le
abbreviazioni delle parole inglesi che indicano
il compito da svolgere
Nasce il codice mnemonico
Esempio per caricare un dato in un registro
della CPU si usa LD, per sommare ADD, per
sottrarre SUB e così via…
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
14
Linguaggio ASSEMBLY
Ogni
CPU possiede un proprio
linguaggio di basso livello di tipo
assembly.
Le
CPU costruite dalla stessa ditta in
genere utilizzano tutti lo stesso
linguaggio ASSEMBLY
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
15
Esercizio sul linguaggio ASSEMBLY
Si voglia redigere un programma che effettui la
somma tra i numeri 8 e 9 utilizzando una CPU
Z80
Costruiremo sia il programma scritto in
Assembly (codice mnemonico) e troveremo il
corrispondente in linguaggio macchina (in
forma esadecimale e binaria). Per i codici è
stato utilizzato il manuale del costruttore
(Zilog) della CPU Z80
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
16
Esercizio sul linguaggio ASSEMBLY
per una CPU Z80
Assembly (codice mnemonico)
LD A,08
Lin. Macchina (ESA)
3E 08
(carica nel registro A il valore 8)
LD B,09
06 09
(carica nel registro B il valore 9)
ADD A,B
80
(esegui la somma del contenuto di A e B)
HALT
76
(fine delle istruzioni)
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
17
Esercizio sul linguaggio ASSEMBLY
per una CPU Z80
ESADECIMALE
BINARIO
3E 08
00111100 00001000
06 09
000001100 00001001
80
10000000
76
01110110
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
18
L’ASSEMBLER
Le istruzioni scritte in linguaggio ASSEMBLY
non sono direttamente interpretabili dal
microprocessore ma è necessario un
programma traduttore che converta il tutto in
linguaggio macchina cioè in codice binario
così come da noi fatto nell’esempio
precedente.
Tale software traduttore si chiama
ASSEMBLER
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
19
LINGUAGGI di ALTO LIVELLO
Pur se utilizza un codice mnemonico il
linguaggio ASSEMBLY di basso livello
presuppone una conoscenza profonda
dell’architettura del microprocessore.
Per permettere ai programmatori di sviluppare
dei programmi senza dover necessariamente
essere dei profondi conoscitori dell’hardware
di una CPU sono nati i LINGUAGGI di
ALTO LIVELLO
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
20
LINGUAGGI di ALTO LIVELLO
I
linguaggi di ALTO LIVELLO sono molto
simili ai linguaggi naturali.
Ciò facilita la stesura del programma e
una più agevole leggibilità da parte di
altri programmatori.
Tali linguaggi svincolano il
programmatore dalle rigidezze dovute al
particolare processore usato
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
21
LINGUAGGI di ALTO LIVELLO
Sono linguaggi simbolici, in continua
evoluzione
Sono definiti da un insieme di regole formali e
regole grammaticali che individuano la
cosiddetta sintassi
Ogni linguaggio possiede la sua sintassi
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
22
Sintassi e semantica
Le regole di sintassi definiscono come si
devono comporre i simboli e le parole per
formare istruzioni corrette
La semantica di un’istruzione invece definisce
cosa questa significhi (lo scopo dell’istruzione)
Un programma sintatticamente corretto non è
necessariamente semanticamente corretto
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
23
Sintassi e semantica
I
programmi fanno quello
che prescriviamo che
facciano e non quello
che vorremmo che
facessero
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
25
Costruzione di un programma
In
generale un programma prevede
le seguenti due parti:
Parte DICHIARATIVA
dove
vengono dichiarate le variabili del
problema
Parte
ESECUTIVA
dove
sono presenti le istruzioni in cui è
stato tradotto l’algoritmo
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
26
LINGUAGGI di ALTO LIVELLO
Ecco
alcuni esempi di linguaggi di
alto livello.
1. PASCAL
2. BASIC, VISUAL BASIC
3. C, C++, C#
4. JAVA
5. HTML
6. PHP
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
27
Perché programmare????
Nel
corso del 2012 ci sarà una forte
richiesta di sviluppatori di applicazioni
per Apple e per smartphone e tablet
equipaggiati con Google Android.
Non mancheranno opportunità lavorative
per chi dispone di conoscenze relative a
C, C++, Objective C (C#), Java.
4 Liceo - A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
28
Perché programmare????
1.
2.
3.
4.
Per quanto riguarda i linguaggi della rete al primo posto c’è
PHP, linguaggio di scripting per lo sviluppo di pagine web
dinamiche o applicazioni online.
In seconda posizione c’è HTML, il linguaggio di markup per la
descrizione delle modalità o delle istruzioni di impaginazione,
formattazione o visualizzazione grafica del contenuto di una
pagina web
Al terzo posto c’è MySQL: conoscere questo RDBMS (Relational
Database Management System) sembra dare una marcia in più
per lavorare allo sviluppo di siti web dinamici.
A seguire, dalla quarta alla decima posizione, ci sono CSS,
Java, JavaScript, Flash, Joomla
4 Liceo - A.S. 2011-12
Informatica e Sistemi - Prof. Corrado Lai
29