440 likes | 621 Views
Un’introduzione alla scienza e alle tecnologie dell’informazione e della comunicazione. Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 7 Marzo 2012. Un “ esempio”. Un “ esempio”…. Un “ esempio”…. Un “ esempio”…. Un “ esempio”…. Un “ esempio”…. Un “ esempio”….
E N D
Un’introduzione alla scienza e alle tecnologie dell’informazione e della comunicazione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 7 Marzo 2012
Obiettivi • Informazione e trattamento dell’informazione • Programmabilità del calcolatore e concetti di hardware e software • Macchina di von Neumann • Comunicazione tra esseri umani e calcolatori
Il concetto ambiguo di informazione • Significato 1: [informazione = dati + istruzioni]insieme dei dati su cui operare e delle istruzioni con cui elaborare tali dati • per esempio, nell’operazione 1+2 sono entità di informazione i numeri 1 e 2 e l’operatore ‘+’ enfasi sulla distinzione tra struttura e descrizione dell’operazione • che si scriva “uno più due” o “1+2” l’informazione è la stessa • Significato 2: [informazione = dati con significato] ciò che si ottiene dai dati a cui è stato attribuito un significato • per esempio, i numeri 1 e 2 sono semplici dati; diventano entità di informazione solo quando si stabilisce che si riferiscono, per esempio, a mele o a portaerei enfasi sulla distinzione tra forma e contenuto
Approccio top-down Le tecnologie di successo sociale producono strumenti utilizzabilianche da chi non ne conosce i dettagli di funzionamento,grazie alla presenza di un’appropriata interfaccia utente (user interface, UI) Approccio “a scatola chiusa” (black box):interazione con la scatola (la UI dello strumento) e non con il suo contenuto • lo strumento è più facilmente usabile • ma rischia di essere sotto (e in certi casi anche mal) utilizzato e quindi, in certi casi… Approccio “dall’alto verso il basso” (top-down): • aprendo il coperchio della scatola si trovano altre scatole • si continuano ad aprire coperchi fino a giungere al livello di dettaglio richiesto
I calcolatori: cos’hanno di speciale? • Molti strumenti sono stati progettati e realizzati per trattare informazione: • le matite servono per scrivere(non per trasferire grafite su carta) • i violini servono per suonare(non per produrre onde acustiche) • A differenza di questi, i calcolatori sono dispositivi programmabili • Ma cosa significa programmabile?
Informazione indicale le mele nel cesto le melenel cesto Ma l’informazione può essere più che indicale…
Elaborazione dell’informazione • La programmabilità di un dispositivoattiene alle modalità con cuiesso gestisce informazione • Per esempio, per risolvere questo problema,si può: • provare e riprovare(= operare direttamente sul sistema da trasformare) • fare i conti a mente(= operare senza un supporto fisico) • fare i conti con carta e penna(= operare con supporti passivi) • fare i conti con una calcolatrice(= operare con supporti “rigidi”) • oppure …
Dati e istruzioni Per gestire informazione, si opera su dati mediante istruzioni:
Elaborazione dell’informazione • Ogni essere umano elabora quotidianamente informazionein grande quantità senza usare strumenti particolarmente sofisticati • Due situazioni possono rendere difficile questa attività: • quando il problema supera un certo grado di complessità • quando è necessario elaborare informazione con particolare rapidità • Nel corso della storia, l’uomo ha creato molti strumentiin grado di supportarlo nell’elaborazione dell’informazione: • strumenti formali (per es. il sillogismo) che consentono di trattareentità di informazione dotate di una certa struttura,ricavandone delle conclusioni per via puramente elaborativa • strumenti materiali (modelli in scala, galleria del vento, …), che “materializzando”le entità di informazione su cui si opera ne facilitano l’elaborazione
I primi calcolatori meccanici 1/2 • Blaise Pascal (1623-1662)dispositivo meccanico (ingranaggi azionati da una manovella) per l’esecuzione di somme e sottrazioni • Gottfried Wilhelm von Leibniz (1646-1716)introduce anche moltiplicazioni e divisioni(calcolatrice a quattro funzioni) • Charles Babbage (1792-1871)progetta e realizza un “difference engine” • calcola tabelle di numeri utili per la navigazione • unicoalgoritmo: polinomiale alle differenze finite • output: forisu una piastra di rame(schede perforate)
I primi calcolatori meccanici 2/2 • Charles Babbage (1792-1871)macchina programmabile: analytical engine • Formata da quattro parti: • store(memoria: 1000 celle × 50 cifre) • mill(unità di calcolo: 4 operazioni + trasferimento dati) • input(lettore schede) • output(perforatore schede) • Con istruzioni di controllo per cambiare il flusso di esecuzione a seconda del valore positivo o negativo di un numero • Nasce il ruolo del programmatore: Ada Augusta Lovelace • Troppo avanzata per la tecnologia del tempo: troppi errori hardware (ruote dentate di precisione)
Il periodo bellico 1/2 • Konrad Zuse (Germania, anni ’30 e ’40) • Realizza macchine calcolatrici automatiche basate su relè elettromagnetici • Distrutte dal bombardamento di Berlino del 1944 • John Atanasoff (Iowa State College, anni ’30) • Macchina basata sull’aritmetica binaria • Memoria basata su condensatoririnfrescati periodicamente • Troppo avanzata per la tecnologia disponibile (problemiHW) • George Stibbitz (Bell Labs, anni ’30) • Calcolatore più primitivo rispetto a quello di Atanasoff, ma funzionante(presentato a una conferenza nel 1940) • Howard Aiken (Harvard, anni ’40) • Riprende il lavoro di Babbage e lo implementa sfruttando la tecnologia dei relè elettromagnetici. Nel 1944 completa il Mark I: • un’istruzione eseguita ogni 6 secondi • input e output su/da nastro di carta perforato
Il periodo bellico 2/2 • Negli anni ’40 si sviluppa una nuova tecnologia: le valvole termoioniche rendono obsoleti i relè elettromagnetici • COLOSSUS(Inghilterra 1943) • Primo calcolatore digitale elettronico • Usato per decifrare i messaggi segreti tedeschi • Segreto militare per 30 anni, perciò ininfluente • ENIAC(Mauchley ed Eckert - USA 1946) • Electronic Numerical Integrator And Computer • Composto da 18000valvole e 1500relè per un peso complessivo di 30 te un consumo di 140 kw
John von Neumann • Partecipa al progetto ENIAC • Due intuizioni fondamentali: • memorizzare i programmi in forma digitale nella stessa memoria dei datiper rendere più semplice la programmazione(rispetto all’utilizzo di cavi e interruttori) • utilizzare l’aritmetica binaria invece di quella decimale(due valvole per bit invece di dieci per cifra) • Il suo progetto (macchina di von Neumann) è ancora oggialla base di quasi tutti i calcolatori digitali
L’architettura di Von Neumann • Un calcolatore deve essere in grado di: • eseguire istruzioni su dati • controllare il flusso dell’esecuzione • memorizzare i dati su cui operare • memorizzare successioni di istruzioni • interagire con gli utenti e con eventuali altri sistemi Sottosistema di interfaccia Sottosistema di memorizzazione Sottosistema di elaborazione • Ha due funzioni: • eseguire le istruzioni • controllare il flussodell’esecuzione Comunica con utentio con altri dispositivi Memorizza datie istruzioni Sottosistema di interconnessione
… il Politecnico di Milano • Nel 1951, finanziato dal Marshall Plan, il Prof. Dadda porta al Politecnico un CRC102A • Il primo calcolatore elettronica in Italia. • Lavori pioneristici nel campo del calcolo numerico, dei linguaggi di programmazione e nelle architetture hardware • CRC102A, 1954 • AICA (founder), 1961 • Dadda Multiplier, 1965
Il calcolatore in un sistema ambiente da controllare calcolatore locale calcolatore remoto sensori attuatori automazione rete interfaccia utente
Interazione uomo-macchina 1. Input:dati e istruzioni 2. Elaborazione 3. Output:dati (risultati dell’elaborazione) e quindi, il calcolatore si può intendere come una black box: Output Input calcolatore
Il calcolatore: interprete ed esecutore Ricevendo una richiesta dall’utente, il calcolatore svolge in successionedue attività: • controlla di essere in grado di interpretare il comando, cioè di riconoscere il comando come corretto e corrispondente a un’azione che è in grado di eseguire • se il controllo ha dato esito positivo, esegue l’azione associata al comando e, quando richiesto, presenta il risultato all’utente Invece di inviare al calcolatore un comando per volta, l’utente può sceglieredi creare una successione di comandi (= programma) e inviarla al calcolatore,che autonomamente è in grado di interpretare ed eseguire il programma stesso,un’istruzione per volta
La comunicazione con il calcolatore L’utente-programmatore e il calcolatoredevono parlare uno stesso linguaggio Un’opzione potrebbe essere di “insegnare al calcolatore” a comprendere(= interpretare ed eseguire comandi espressi in) una lingua storico-naturale come l’italiano o l’inglese • Vantaggi: • lingue semanticamente ricche, e quindi sicuramente in grado di esprimere i comandi • lingue già note all’utente • Svantaggi: • lingue semanticamente ricche, e quindi a rischio di ambiguità • lingue complesse da insegnare / imparare
Due esempi Comando: “nella frase l'informatica, che in inglese è detta 'computer-science',è interessante anche se difficile metti in grassetto la parola X” • X: “è” ambiguo: quale delle due “è”? • X: “in decima posizione” ambiguo: “computer-science” conta come una o due parole? Comando: “se la condizione A è vera esegui l’istruzione B e poi esegui l’istruzione C” • ambiguo: C deve essere eseguito comunque o solo se A è vera?
Comunicazione mediante linguaggi formali Un’opzione alternativa: • creare un linguaggio “di programmazione”,dedicato alla comunicazione con il calcolatore • Vantaggi: • linguaggio progettato specificamente, e quindi efficiente • linguaggio non ambiguo • Svantaggi: • linguaggio formalizzato, e quindi strutturalmente diverso dalle lingue storico-naturali • linguaggio non noto all’utente
Un esempio Comando: “se la condizione A è vera esegui l’istruzione B e poi esegui l’istruzione C” • ambiguo: C deve essere eseguito comunque o solo se A è vera? Lo stesso comando viene riscritto in un linguaggio di programmazione si disambigua: se A è vero esegui B; in ogni caso quindi esegui l’istruzione C se A è vero esegui sia B sia C
Calcolatori: strumenti di calcolo? Sebbene si consideri abitualmente che oggetto del calcolo sono numeri,i calcolatori operano anche su dati non numerici, come testi, immagini, musica… Un problema di elaborazione di dati non numerici è riconducibile a calcolo numericose per prima cosa i dati vengono codificati nella forma di numeri Per esempio, un testo può essere convertito in una successione di numeri grazie al Codice ASCII: spazio 32; ‘A’ 65; ‘B’ 66; …; ‘a’ 97; ‘b’ 98; … e quindi: “ciao mondo” 99 105 97 111 32 109 111 110 100 111 Data questa codifica, un problema come: trasformare una frase scrivendo con l’iniziale maiuscola tutte le parole che la compongono (per cui “ciao mondo” dovrebbe diventare “Ciao Mondo”) è effettivamente un problema di calcolo
Un esempio di calcolo Se il linguaggio di programmazione adottato contiene un’istruzione words_uppercase(), il problema si risolve semplicemente: words_uppercase(“ciao mondo”) Altrimenti, è il programmatore a dover “scomporre” il problema in sottoproblemipiù semplici, per esempio: 1. identifica le parole da cui la frase è costituita2. per ogni parola, metti il suo primo carattere in maiuscolo Data la successione: 99 105 97 111 32 109 111 110 100 111 • la prima istruzione corrisponde a individuare nella successione le sotto-successioni di numeri separate dal numero 32 • la seconda istruzione corrisponde sottrarre 32 al primo elemento di ogni sotto-successione, Una volta codificati numericamente i dati in ingresso, il problema viene dunque risolto mediante semplici istruzioni come “se … è uguale a … allora …”, “somma … a …”, e così via
I problemi del calcolo Non ogni problema ammette una soluzione calcolabile • Quali problemi ammettono una soluzione calcolabile? • Esistono problemi calcolabili che i calcolatori non sono in grado di risolvere? • Esistono problemi che solo certi calcolatori sono in grado di risolvere?cioè: esistono tipi diversi di calcolatori in relazione alla loro capacitàdi risolvere problemi?
Calcolo come calcolo di funzioni Ipotesi: il calcolo è una trasformazione di dati,in cui l’output è determinato univocamente dall’input attraverso una funzione: output = f(input) input f Per esempio, 1+2*3 e 4+5*6 sono due casi particolari della stessa funzione f(x,y,z)=x+y*z f Ipotesi: le funzioni complesse possono essere scompostecome successioni di funzioni più semplici x,y,z x+y*z + x y * z Per esempio:
La macchina di Turing Un sistema di calcolo molto semplice: • un nastro organizzato in celle in ognuna delle quali è scritta una barra o nullae con codifica “unaria” (1 “/”; 2 “//”; 3 “///”; … • un sistema di lettura e scrittura che opera in base a regole della forma: se sei nello stato ... e nella cella hai letto ..., allora nella cella scrivi ..., passa nello stato ... e spostati nella cella ... … … / / / / / / / / / / … … … / / / / / … Per esempio, il nastro: codifica i numeri 2 e 3, e il calcolo della funzione x+y si può realizzare in questo modo:
La tesi di Church - Turing Intorno al 1930 l’inglese Alan Turing e lo statunitense Alonso Churchproposero la seguente tesi: ogni funzione “naturalmente considerata calcolabile”è calcolabile da una macchina di Turing La conseguenza è sorprendente: l’insieme delle funzioni calcolabili è lo stesso per tutti i calcolatori; le differenze di capacità tra calcolatori sono: • quantitative (= tempo di calcolo) • e non qualitative (= tipo di funzioni calcolabili)
Fonti per lo studio + Credits • Fonti per lo studio • Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill • Capitolo 1 • Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill • Capitolo 1 • The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley • Capitolo 1 • Approfondimenti • Uomini e computer. Storia delle macchine che hanno cambiato il mondo, D. Casalegno, HOEPLI • Credits • Prof. G. Buonanno e D. Sciuto, LIUC