Generalità Software 1Luglio 2004
Generalità Software
Luglio 2004
Generalità Software 2Luglio 2004
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)
Generalità Software 3Luglio 2004
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 in linguaggio macchina è ovviamente enorme.
Generalità Software 4Luglio 2004
v = v(1), v(2), …. v(k), v(k+1), …
Programma scritto in
linguaggio ad alto livello (C)
Programma in linguaggio assemblatore (per il MIPS)
Programma nel linguaggio binario della macchina (per il MIPS)
Swap (int v , int k){int temp; temp = v k; v k = v k+1 ; v k+1 = temp;}
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
00000000101000010000000000011000000000001000111000011000001000011000110001100010000000000000000010001100111100100000000000000100101011001111001000000000000000001010110001100010000000000000010000000011100000000000000000001000
Compilatore C
Assemblatore
Generalità Software 5Luglio 2004
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)
Generalità Software 6Luglio 2004
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)
Generalità Software 7Luglio 2004
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)
Generalità Software 8Luglio 2004
STRUMENTI DI PROGRAMMAZIONE
Generazioni:macchina basso livello
1 : linguaggi macchina
2 : linguaggi assembler
3 : linguaggi di alto livello
4 : linguaggi di 4° generazione
5 : pacchetti personalizzabiliuomo alto livello
Generalità Software 9Luglio 2004
PARADIGMI DI LINGUAGGI DI PROGRAMMAZIONE
LISP ML Scheme Funzionali
SIMULA C++ Ada95 A oggetti
Smalltalk Java
Linguaggi FORTRAN BASIC C Ada Imperativi
Macchina COBOL ALGOL APL Pascal
GPSS Prolog Dichiarativi
Visual Basic Visual C Visuali
Generalità Software 10Luglio 2004
GrammaticaGrammatica
definizione degli elementi costitutivi di un linguaggio
SintassiSintassi
relazione fra le parole che compongono una frase e l’insieme delle norme che regolano queste relazioni
SemanticaSemantica
significato della frase
ELEMENTI DI UN LINGUAGGIO
Generalità Software 11Luglio 2004
SINTASSI E SEMANTICA
sintassi semantica Il cane mangia la mela correttocorrettola cane mangia il mela scorretto correttola mela mangia il cane correttoscorrettoil mela mangia la cane scorrettoscorretto
Generalità Software 12Luglio 2004
SINTASSI E SEMANTICA (CONT. 1)
Sintassi SI programma oggetto
programma
sorgente in L
NO (mostra errori)
Semantica
programma corretto
oggetto output input scorretto
C
Compilatore (grammatica di L
Esecutore
Generalità Software 13Luglio 2004
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
Generalità Software 14Luglio 2004
SOFTWARE
software applicativo• per controllo di apparati • per funzioni organizzative • per produttività personale, ecc.
Software di base(Sistema Operativo eambienti di sviluppo)
Software diComunicazione
hardware
Generalità Software 15Luglio 2004
Software
Programmi applicativi
Programmi di sistema
Utente Pacchettistandard
Compilatori Ambienti di sviluppo
Sistemi operativi
Sistemi di comunicazione
Assemblatori
… …… …
Gestione dei file
Memoria virtuale Gestione dispositivo di ingresso/uscita
… …… …
… …
Linker Loader Job management
Initiator Terminator
Supervisore
programmi applicativiprogrammi di sistema
firmware
macchina fisica
Generalità Software 16Luglio 2004
SISTEMI OPERATIVI
SUN Solaris
HP HP- UX
IBM AIX
MICROSOFTWINDOWS
LINUX Linux
Altri S.O. proprietari
Generalità Software 17Luglio 2004
CICLO DI SVILUPPO
progettista utente
prototipo
specifiche componentida sviluppare o riusare
Definizione e specifica del problema
progetto
realizzazione
integrazione e verifica di sistema
installazione e verifica in campo
manutenzione
Verifica diogni componente
Generalità Software 18Luglio 2004
PROGRAMMAZIONE In piccolo (singoli)
problema algoritmo programmaIn grande (gruppi)
programma- … programma-n
software applicativo
sistema h/w-s/w
sistemista progettist
a
programmatore
Generalità Software 19Luglio 2004
SVILUPPO DI UN PROGRAMMA
compilatore
DigitazioneVerifcadebuggin
Sistemaruntime
compilazione
correzione
esecuzione
Listato edErrori di sintassi
Listato edErrori di esecuzione
Generalità Software 20Luglio 2004
PROCESSO DI PREPARAZIONE DI UN PROGRAMMA PER L’ESECUZIONE CON IL
CALCOLATORE1. 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 21Luglio 2004
PROCESSO DI PREPARAZIONE DI UN PROGRAMMA PER
L’ESECUZIONECON 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)
Generalità Software 22Luglio 2004
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.
Generalità Software 23Luglio 2004
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)
Top Related