Software
INFORMATICA PER LE
DISCIPLINE UMANISTICHE 2
(13042)
Gli elaboratori utilizzano memoria per
Dati da elaborare
Istruzioni eseguite dall’elaboratore → software
Software differenti → risoluzione problemi
differenti
Software
Algoritmo
Software legato al concetto di algoritmo
Algoritmo: sequenza finita di istruzioni la cui
esecuzione permette di
Algoritmo
Elaborare
i dati in input
Risolvere uno specifico problema
Esempi di semplici algoritmi
Una
ricetta
Manuale di istruzioni
Regole per ordinare dati
Un algoritmo prevede un esecutore delle istruzioni
(elaboratore)
Per poter essere eseguito → algoritmo scritto in un
linguaggio comprensibile all’elaboratore
Prevede solo istruzioni elementari
Algoritmo parametrico: in grado di risolvere una
classe di problemi (indipendente dai valori specifici
in input)
Algoritmo
Linguaggio di programmazione: linguaggio
formale per descrivere algoritmi
Programmatore: chi scrive algoritmi in un linguaggio
di programmazione
Programmazione: algoritmo scritto in uno specifico
linguaggio di programmazione
Linguaggio assemblatore
Linguaggio assemblatore: ad ogni istruzione
associata una codifica mnemonica
Es.
ADD → 01101011
Un programma scritto in linguaggio assemblativo
deve essere tradotto in linguaggio macchina →
assemblatore
Linguaggio macchina
Linguaggio macchina:
linguaggio tipico di una
CPU
Specifico
di una CPU
Linguaggio macchina →
istruzioni associate ad un
codice numerico
00100111101111011111100110000000
10101111101111110000000001010100
10001111101011100000001100011100
10001111101110010001100000011000
00101001000000010010011001100101
10101111101010000000000000011100
00010100001000001110111111110111
10100011101110010000000000011000
00001100000100000000100011101100
00000100100001000000010000110000
00100111101111010000100000100000
10000011111000000011000110001000
01000000000000000001000110100001
Linguaggio di alto livello
Programma scritto in un linguaggio
più vicino al linguaggio naturale
≠ al linguaggio naturale
linguaggio di alto livello
Semplificazione nella scrittura dei programmi
Linguaggio di alto livello
Linguaggio di alto livello
Programma scritto in un linguaggio di alto livello
richiedono una traduzione
Traduttore
legge programma scritto in linguaggio di alto livello
traduce in linguaggio macchina
Programma
in linguaggio
di alto livello
Traduttore
Programma
in linguaggio
macchina
Linguaggio di alto livello
Compilatore
Compilatori
Interpreti
Linguaggio di alto livello
legge
Compilatori
vantaggi: velocità
svantaggi: necessità ricompilazione
Interprete
Interpreti
vantaggi: esecuzione immediata
svantaggi: lentezza
l’intero programma scritto in linguaggio di alto
livello (codice sorgente)
Produce traduzione in linguaggio macchina (codice
oggetto)
Due tipi di traduttori:
legge
il programma scritto in linguaggio di alto livello
Per ciascuna istruzione: traduzione in linguaggio
macchina ed esecuzione diretta dell’istruzione
Software: diritto d’autore
Software
Il software è un’opera dell’ingegno. Può essere
Software proprietario: licenza d’uso
Licenza shareware: gratuito per tempo limitato
Licenza freeware: distribuito gratuitamente
Software libero e open source: distribuzione codice
sorgente
Il software può essere diviso in due categorie:
Software applicativo: applicazioni per problemi
specifici
Software di base: gestione dell’elaboratore
(Sistema operativo)
Software applicativo
Il software applicativo è progettato per compiti
specifici
Software produttività individuale
Videoscrittura
Fogli
elettronici
Produzione presentazioni
Gestione di basi di semplici basi di dati
Editor Web
Applicazioni grafiche
Software
Sistema operativo
Il sistema operativo
Il sistema operativo
Il sistema operativo è un software di sistema o di
base:
Gestione delle risorse del computer
Interfaccia per l’utente
Astrazione rispetto all’hardware (macchina
virtuale o astratta)
Supporto esecuzione dei programmi applicativi
Architettura a macchine virtuali:
Hardware: macchina fisica
Strati software per la costruzione di una
macchina virtuale
Il sistema operativo - elementi
Il sistema operativo
Elementi del sistema operativo:
Nucleo (kernel): gestione CPU
Gestione della memoria:
Gestione delle periferiche
File system
Gestione della rete
Interprete dei comandi
Sistemi operativi:
Unix
Linux
Microsoft Windows
MacOS
…
Ogni strato costruisce una macchina virtuale:
gestore della risorsa