Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

23
Generalità Software 1 Luglio 2004 Generalità Software Luglio 2004

Transcript of Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

Page 1: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

Generalità Software 1Luglio 2004

Generalità Software

Luglio 2004

Page 2: Generalità Software1Luglio 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)

Page 3: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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.

Page 4: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 5: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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)

Page 6: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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)

Page 7: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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)

Page 8: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 9: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 10: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 11: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 12: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 13: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 14: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 15: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 16: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

Generalità Software 16Luglio 2004

SISTEMI OPERATIVI

SUN Solaris

HP HP- UX

IBM AIX

MICROSOFTWINDOWS

LINUX Linux

Altri S.O. proprietari

Page 17: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 18: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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

Page 19: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

Generalità Software 19Luglio 2004

SVILUPPO DI UN PROGRAMMA

compilatore

DigitazioneVerifcadebuggin

Sistemaruntime

compilazione

correzione

esecuzione

Listato edErrori di sintassi

Listato edErrori di esecuzione

Page 20: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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).

Page 21: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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)

Page 22: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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.

Page 23: Generalità Software1Luglio 2004 Generalità Software Luglio 2004.

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)