SOFTWARE di SVILUPPO
I linguaggi di programmazione
SOFTWARE DI SVILUPPO
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
STRUMENTI di SVILUPPO
LINGUAGGI di PROGRAMMAZIONE
Linguaggi Macchina
Linguaggi Basso livello
Linguaggi Alto livello
TRADUTTORI
Assemblatori
Compilatori
Interpreti
Informatica - Prof. Corrado Lai
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)
Dal problema alla soluzione
Problema Risultati
Algoritmo Elaborazione
Programma Programma Programma
sorgente traduttore oggetto
Informatica - Prof. Corrado Lai
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?
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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…
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
Esercizio sul linguaggio ASSEMBLY
per una CPU Z80
Assembly (codice mnemonico) Lin. Macchina (ESA)
LD A,08 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)
Informatica - Prof. Corrado Lai
Esercizio sul linguaggio ASSEMBLY
per una CPU Z80
ESADECIMALE BINARIO
3E 08 00111100 00001000
06 09 000001100 00001001
80 10000000
76 01110110
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
Sintassi e semantica
I programmi fanno quello
che prescriviamo che
facciano e non quello
che vorremmo che
facessero
Informatica e Sistemi
4 Liceo - A.S. 2011-12 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
Informatica - Prof. Corrado Lai
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
Informatica - Prof. Corrado Lai
Perché programmare????
Nel corso del 2013 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.
Informatica - Prof. Corrado Lai
Perché programmare????
1. 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.
2. 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
3. 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.
4. A seguire, dalla quarta alla decima posizione, ci sono CSS,
Java, JavaScript, Flash, Joomla
Informatica - Prof. Corrado Lai