Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi e Software: Metafore Cucina e Macchina Virtuale, Appunti di Elementi di Informatica

Una metafora intuitiva per comprendere l'importanza di algoritmi e software, utilizzando le metafore della cucina e di una macchina virtuale. Come un algoritmo sia come una ricetta per risolvere problemi informatica, e come il software sia il meccanismo per astrarre l'organizzazione fisica della macchina e rendere l'interazione con essa semplice per gli utenti. Viene inoltre introdotto il concetto di macchina virtuale e come essa permetta di rendere macchine fisicamente diverse utilizzabili in modo simile.

Tipologia: Appunti

2018/2019

Caricato il 14/01/2019

alex-brendamal
alex-brendamal 🇮🇹

3 documenti

1 / 36

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Il software
Il termine software ha origine durante la seconda
guerra mondiale.
I tecnici dell'esercito inglese erano impegnati nella
decrittazione dei codici tedeschi di Enigma, di cui già
conoscevano la meccanica interna (detta hardware,
componente dura, nel senso di ferraglia) grazie ai
servizi segreti polacchi. La prima versione di Enigma
sfruttava tre rotori per mescolare le lettere.
Dopo il 1941, ad Enigma venne aggiunto un rotore, e
il team di criptanalisti inglesi, capitanati da Alan
Turing, si dovette interessare non più alla sua
struttura fisica, ma alle posizioni in cui venivano
utilizzati i rotori della nuova Enigma.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24

Anteprima parziale del testo

Scarica Algoritmi e Software: Metafore Cucina e Macchina Virtuale e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Il software

 Il termine software ha origine durante la seconda

guerra mondiale.

 I tecnici dell'esercito inglese erano impegnati nella

decrittazione dei codici tedeschi di Enigma, di cui già

conoscevano la meccanica interna (detta hardware,

componente dura, nel senso di ferraglia) grazie ai

servizi segreti polacchi. La prima versione di Enigma

sfruttava tre rotori per mescolare le lettere.

 Dopo il 1941, ad Enigma venne aggiunto un rotore, e

il team di criptanalisti inglesi, capitanati da Alan

Turing, si dovette interessare non più alla sua

struttura fisica, ma alle posizioni in cui venivano

utilizzati i rotori della nuova Enigma.

 Dato che queste istruzioni erano scritte su pagine

solubili nell'acqua (per poter essere più facilmente

distrutte, evitando in tal modo che cadessero nelle mani

del nemico) furono chiamate software (componente

tenera), in contrapposizione all'hardware.

 Il senso moderno del termine deriva dalle istruzioni date

ai computer, ed è stato utilizzato per la prima volta nel

1957 da John Wilder Tukey, noto statistico statunitense.

 Dal 1950 l'analogia tra l'hardware ed il corpo umano e

quella tra il software e la mente umana si è fatta molto

forte, dal momento che Turing ha sostenuto che il

progresso tecnologico sarebbe riuscito a creare, entro il

2000, delle macchine intelligenti (in grado cioè di

"pensare" autonomamente) atte alla risoluzione dei

problemi

 Andrew Hodges, Alan Turing: una biografia, Torino,

Bollati Boringhieri, 2006

Algoritmi

 L'algoritmo è un procedimento che permette di calcolare un risultato e/o

risolvere un problema, eseguendo una serie di ordini e condizioni impostate a

priori.

 Analogamente, in informatica, un algoritmo non è altro che un semplice

procedimento che permette la risoluzione di specifici problemi mediante

l’applicazione di una sequenza finita di precise istruzioni che, a loro volta,

devono essere interpretate ed eseguite fino alla loro conclusione seguendo un

ordine ben preciso.

Metafora: ricette e algoritmi

 ricetta

 cuoco

 ingredienti

 piatto

 algoritmo (programma)

 computer

 input

 output

Cfr.: Pellegrino Artusi (1910), La scienza in cucina e l'arte di mangiar bene.

Metafora: algoritmi

 deve esistere un esecutore (calcolatore) che esegua l’algoritmo  le istruzioni devono essere eseguite in ordine per partire dai dati di input ed ottenere i dati di output  il calcolatore deve conoscere il linguaggio dell’algoritmo altrimenti serve un traduttore  l’algoritmo deve prevedere solo istruzioni elementari per il calcolatore  specificato un algoritmo, può essere richiamato per l’esecuzione di algoritmi più complessi  il linguaggio dell’algoritmo non può essere ambiguo  l’ordine di esecuzione è importante  istruzioni non infinite  tempo non infinito  l’algoritmo deve essere deterministico: eseguito più volte sugli stessi dati di input genera sempre lo stesso output  algoritmo parametrico: risolve una classe di problemi (al variare dei dati di input)

Il software

Il software

 Una programmazione diretta della macchina

hardware da parte degli utenti creerebbe delle

serie difficoltà

 L’utente dovrebbe conoscere l’ organizzazione fisica dell’elaboratore e il suo linguaggio macchina  Ogni programma dovrebbe essere scritto utilizzando delle sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso Una programmazione diretta della macchina hardware da parte degli utenti non è accettabile

La macchina virtuale

 Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale  Questa macchina si dice virtuale in quanto essa non esiste fisicamente  Si può fare in modo che macchine (fisicamente) differenti siano usabili in modo simile  Si tratta di costruire al di sopra delle diverse macchine fisiche la stessa macchina virtuale

La macchina virtuale

 La macchina virtuale viene realizzata mediante il software ( software di base )  L’utente interagisce con la macchina virtuale grazie ad un opportuno linguaggio di comandi  Ogni computer ha un linguaggio macchina le cui istruzioni sono direttamente eseguibili dalla macchina hardware

Linguaggio di comandi

 Per esempio: interfaccia testuale

 MS-DOS, Unix shell, Linux shell  Lavorando con una interfaccia testuale i comandi vengono impartiti mediante la tastiera  Ogni comando ha un suo nome e una sintassi ben precisa C:> print foo1.doc Can’t find file foo1.doc C:> prompt

Linguaggio di comandi (interfaccia testuale) Dai il messaggio di prompt all’utente Quando arriva il comando, riconoscilo Se è errato , dai un messaggio di errore Se è corretto , esegui l’azione corrispondente Al termine dell’operazione, torna all’inizio C:> print foo1.doc Can’t find file foo1.doc C:>

Linguaggio di comandi (interfaccia grafica) Microsoft Windows

Linguaggio di comandi (interfaccia grafica) Mac OSX di Apple

Il software di base

 Software di base: realizza la macchina virtuale  Gli strumenti software che permettono all’utente (e ai programmi applicativi)  di interagire con l’elaboratore in modo semplice (funzioni di traduzione tra linguaggi diversi) e  di gestire le risorse fisiche  Il sistema operativo fa parte del software di base

Software di base

 Sistema Operativo (OS, Operating System):

insieme di programmi che forniscono all’utente

 intermediazione nell’utilizzo della macchina HW  visione astratta dell’HW (macchina virtuale, macchina astratta)  un ambiente per l’esecuzione del SW applicativo