Generalità Software
Luglio 2004
Luglio 2004
Generalità Software
1
IL PROGRAMMA
• Sia che sia fatto “ad hoc” dal programmatore o che sia
acquistato,
serve
a
risolvere
il
problema
della
comunicazione con il calcolatore
• Si comunica la modalità con cui risolvere un problema (cioè
l’algoritmo)
• Il programma è quindi un insieme di istruzioni:
– spostamenti di informazioni
– scelte (fra diverse sequenze di istruzioni in base alla
modalità con cui si è evoluto il programma)
– operazioni aritmetiche e logiche
– richiesta o presentazione di informazioni
– salti (ad altri punti del programma)
Luglio 2004
Generalità Software
2
IL PROGRAMMA (Cont. 1)
• L’insieme delle istruzioni definite dalla CPU costituisce
il linguaggio macchina
• Nel linguaggio macchina ogni istruzione (statement)
è rappresentabile con una sequenza di cifre binarie
00101110……….
(32 se si sta lavorando con un processore a 32 bits)
• La difficoltà nel programmare
macchina è ovviamente enorme.
Luglio 2004
Generalità Software
in
linguaggio
3
v = v(1), v(2), …. v(k), v(k+1), …
Programma scritto in
linguaggio ad alto livello (C)
Swap (int v  , int k)
{int temp;
temp = v k;
v  k = v k+1 ;
v  k+1 = temp;
}
Compilatore C
Programma in linguaggio
assemblatore (per il MIPS)
Swap:
mult $2, S5, 4
add $2, S4, S2
lw $15, 0 (S2)
lw $16, 4 (S2)
sw $16, 4 (S2)
sw $15, 0 (S2)
jr $31
Assemblatore
Programma nel linguaggio
binario della macchina (per il
MIPS)
Luglio 2004
00000000101000010000000000011000
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
00000011100000000000000000001000
Generalità Software
4
ASSEMBLATORE
• Per ovviare alle difficoltà di programmazione in
linguaggio macchina si inventarono programmi in
grado di tradurre notazioni simboliche in linguaggio
macchina (codice binario) usando la macchina stessa.
Questo facilita molto la programmazione
add A, B, C
• L’insieme delle notazione simboliche costituisce il
linguaggio Assembler.
L’Assembler è un linguaggio “machine oriented”,
per il quale è quindi necessario “pensare” come la
macchina
• Anche il “programma traduttore” prende il nome di
Assembler (più propriamente detto Assemblatore)
Luglio 2004
Generalità Software
5
LINGUAGGI AD ALTO LIVELLO
(HIGH LEVEL LANGUAGE)
• Se è possibile scrivere un programma che traduce il
linguaggio assembler in istruzioni binarie, perché non
fare altrettanto considerando notazioni a livello
più elevato, cioè il più possibile vicine alle
“espressioni” usate nella vita di tutti i giorni
• Sono quindi consentite notazioni del tipo:
C=A+ B
• Il programma che traduce le notazioni scritte in
linguaggio ad alto livello in codice binario si chiama
compilatore
• I linguaggi HLL sono orientati all'utente (user
oriented)
Luglio 2004
Generalità Software
6
LINGUAGGIO AD ALTO LIVELLO
(HIGH LEVEL LANGUAGE) (Cont. 1)
• Benefici:
– poter ragionare con un linguaggio più vicino a
quello naturale (anche se in inglese)
– incrementare la produttività dei programmatori
– essere indipendenti dalle caratteristiche del
calcolatore per il quale si sta scrivendo il
programma (portability)
Luglio 2004
Generalità Software
7
STRUMENTI DI PROGRAMMAZIONE
Generazioni:
macchina
1 : linguaggi macchina
basso livello
2 : linguaggi assembler
3 : linguaggi di alto livello
4 : linguaggi di 4° generazione
5 : pacchetti personalizzabili
uomo
Luglio 2004
alto livello
Generalità Software
8
PARADIGMI DI LINGUAGGI DI
PROGRAMMAZIONE
LISP
ML Scheme
Funzionali
SIMULA
C++
Ada95
A oggetti
Smalltalk
Linguaggi
FORTRAN
BASIC
Java
C
Ada
Imperativi
Macchina
COBOL ALGOL
APL
GPSS
Pascal
Prolog
Dichiarativi
Visual Basic
Visual C
Visuali
Luglio 2004
Generalità Software
9
ELEMENTI DI UN LINGUAGGIO
Grammatica
definizione degli elementi costitutivi di un
linguaggio
Sintassi
relazione fra le parole che compongono una
frase e l’insieme delle norme che regolano
queste relazioni
Semantica
significato della frase
Luglio 2004
Generalità Software
10
SINTASSI E SEMANTICA
Il cane mangia la mela
la cane mangia il mela
la mela mangia il cane
il mela mangia la cane
Luglio 2004
sintassi
corretto
scorretto
corretto
scorretto
Generalità Software
semantica
corretto
corretto
scorretto
scorretto
11
SINTASSI E SEMANTICA (CONT. 1)
Sintassi
SI
programma oggetto
NO
(mostra errori)
programma
sorgente in L
Compilatore
(grammatica di L
Semantica
programma
oggetto
input
Luglio 2004
corretto
Esecutore
Generalità Software
output
scorretto
12
GESTIRE I PROGRAMMI
• Rendere riutilizzabili i programmi già scritti (reusability),
organizzandoli opportunamente in librerie
– librerie di sistema
– librerie dell’utente
• Necessità di un programma particolare per la supervisione
dell’esecuzione dei programmi, a sua volta scomposto in
diverse funzioni (allocazione della memoria, schedulazione
dei programmi, ecc.): il sistema operativo
• Sistemi operativi (operating systems - O.S.)
– proprietari
– standardizzati
– open source
Luglio 2004
Generalità Software
13
SOFTWARE
software applicativo
• per controllo di apparati
• per funzioni organizzative
• per produttività personale, ecc.
Software di base
(Sistema Operativo e
ambienti di sviluppo)
Software di
Comunicazione
hardware
Luglio 2004
Generalità Software
14
programmi applicativi
programmi di sistema
firmware
macchina fisica
Software
Programmi di
sistema
Programmi
applicativi
Utente
Pacchetti
standard
Compilatori
…
…
Memoria
virtuale
…
Linker
Luglio 2004
Ambienti
di sviluppo
Sistemi
operativi
Assemblatori
Sistemi di
comunicazione
…
…
Gestione dispositivo di
ingresso/uscita
Gestione dei
file
…
…
…
Loader
…
…
Job management Supervisore
Generalità Software Initiator
Terminator
15
SISTEMI OPERATIVI
SUN
Solaris
HP
HP- UX
IBM
AIX
MICROSOFT WINDOWS
LINUX
Linux
Altri S.O. proprietari
Luglio 2004
Generalità Software
16
CICLO DI SVILUPPO
progettista
utente
Definizione e specifica
del problema
progetto
realizzazione
prototipo
specifiche componenti
da sviluppare o riusare
Verifica di
ogni componente
integrazione e verifica di sistema
installazione e verifica in campo
Luglio 2004
manutenzione
Generalità Software
17
PROGRAMMAZIONE
In piccolo (singoli)
problema  algoritmo  programma
In grande (gruppi)
sistemista
sistema h/w-s/w
progettista
software applicativo
programma-
Luglio 2004
…
programma-n
Generalità Software
programmatore
18
SVILUPPO DI UN PROGRAMMA
correzione
compilazione
Listato ed
Errori di sintassi
compilatore
Digitazione
Verifca
debuggin
Luglio 2004
Sistema
runtime
esecuzione
Generalità Software
Listato ed
Errori di esecuzione
19
PROCESSO DI PREPARAZIONE DI UN
PROGRAMMA PER L’ESECUZIONE
CON IL CALCOLATORE
1.
Il programma scritto dal programmatore (Codice
Sorgente o Source Code) viene memorizzato nell’Archivio
dei Codici Sorgenti (o Source Code File).
2.
Se il programma è scritto in linguaggio ad alto livello
viene preso in carico dal relativo Compilatore, mentre se
è scritto in Assembler viene preso in carico
dall’Assemblatore.
Se vengono riscontrati errori grammaticali il
programmatore deve correggerli e tornare alla fase 1.
Se il programma è corretto viene tradotto in linguaggio
macchina e memorizzato nell’Archivio dei Codici Oggetto
(o Object Code File).Generalità Software
Luglio 2004
20
PROCESSO DI PREPARAZIONE DI UN
PROGRAMMA PER L’ESECUZIONE
CON IL CALCOLATORE (1)
Sia l’Assemblatore che il Compilatore sono strutturati in 3
fasi:
- analizzatore lessicale
- analizzatore sintattico
- generatore del codice
3.
L’utente richiede quindi l’intervento del Linker.
Questo ha il compito di mettere insieme i programmi (o
codici) oggetto con cui l’utente intende costituire un unico
Codice Caricabile (Loadable Code)
Luglio 2004
Generalità Software
21
PROCESSO DI PREPARAZIONE DI
UN PROGRAMMA PER
L’ESECUZIONE CON IL
CALCOLATORE (2)
Naturalmente può non riuscire o perché non trova tutti i
programmi oggetto, oppure perché non riesce a risolvere i
collegamenti fra gli stessi. In tal caso lo segnala all’utente.
Se invece va tutto bene, il programma ottenuto unendo gli
oggetti viene caricato nell’Archivio dei Codici Caricabili
(Loadable Code File)
4. L’utente richiede infine l’intervento del Loader che
provvede a richiedere la memoria necessaria per eseguire il
programma e ad attualizzare. nell’Archivio dei Codici
Caricabili, gli indirizzi in base alla parte di memoria che
sarà occupata dal programma.
Luglio 2004
Generalità Software
22
PROCESSO DI PREPARAZIONE DI
UN PROGRAMMA PER L’ESECUZIONE
CON IL CALCOLATORE (3)
Carica il programma, a questo punto detto codice
eseguibile o executable code, nella memoria principale e
cede il controllo al programma di sistema (Initiator) che
avvierà il programma utente all’indirizzo specificato come
prima istruzione da eseguire.
(Alla fine dell’esecuzione viene avviato il programma di
sistema Terminator)
Luglio 2004
Generalità Software
23
Scarica

Generalità Software