Estratto del documento

Lezione 1

Introduzione

Lo sviluppo tecnologico rende subito obsolete le conoscenze tecniche anche molto dettagliate. Per tale motivo, non svolgiamo un corso focalizzato su una applicazione o su un particolare linguaggio. Non facciamo questo perché saremmo alla fine di questo corso degli esperti di quanto studiato, ma nel momento in cui ci troviamo davanti ad una novità (perché le applicazioni e gli strumenti che utilizziamo si modificano rapidamente e sistematicamente) saremmo completamente disorientati.

L’obiettivo del corso è quello di essere in grado di destreggiarsi con qualsiasi tipo di tecnologia e di applicazione anche futura, quindi capire che cosa permette a questi strumenti di funzionare per fare in modo che questo sviluppo tecnologico, che rende le conoscenze tecniche obsolete, non ci tocchi più di tanto. Quello che vediamo all’interno di questo insegnamento riguarda i concetti di base dell’informatica perché questi non variano. Questi concetti di base costituiscono una base culturale importante perché senza conoscere gli strumenti tecnologici che utilizziamo quotidianamente, senza conoscere i concetti alla base, non possiamo sfruttare le potenzialità dello strumento stesso e non saremmo in grado di destreggiarci nel momento in cui i sistemi evolvono.

Inoltre, il computer è versatile, non si possono prevedere cioè tutti gli usi futuri. È necessario quindi acquisire familiarità con i concetti base dell’informatica perché così non saremo disorientati davanti agli usi che il computer assumerà nel futuro.

Storia del calcolo automatico

Partiamo dalle motivazioni a monte, cioè dal perché si è sentita la necessità di utilizzare un calcolatore o comunque uno strumento elettronico per supportare la quotidianità delle persone. Il motivo per cui lo facciamo è lo stesso per il quale, a partire dalla rivoluzione industriale, si è deciso di farsi aiutare dalle macchine. L’essere umano è in grado di fare certe operazioni, tuttavia trova molto fruttuoso farsi aiutare da una macchina. In questo caso parliamo di calcoli; effettuare i calcoli a mente o a mano è una cosa che sappiamo fare, ma è un’attività noiosa e incline all’errore e anche piuttosto dispendiosa in termini di tempo.

L’essere umano, anche con una capacità di calcolo al di sopra della media, impiega più tempo rispetto ad un calcolatore elettronico. Questa attività è dispendiosa in termini di tempo ed inoltre l’essere umano, per le sue caratteristiche, è incline all’errore. Per caratteristiche cognitive, l’essere umano, quando fa dei calcoli a mente o a mano di qualsiasi tipo, tende a commettere degli errori perché la sua attenzione tende ad avere oscillazioni e cali anche drastici.

Per secoli l’uomo ha cercato di porre rimedio a questo, automatizzando il processo di calcolo ed ecco qui l’esigenza del computer. L’elaboratore elettronico subentra proprio in questo punto. Non necessariamente per fargli fare cose che non siamo capaci di fare, ma per venirci in soccorso risolvendo problemi che l’essere umano trova noiosi, lunghi e che, pur essendo in grado di svolgere qualora si mettesse di impegno a farlo, non sarebbe al riparo da errori.

Il primo strumento che possiamo classificare in questa carrellata di strumenti che hanno aiutato l’essere umano a svolgere la propria attività di calcolo è certamente l’abaco ed è la prima macchina di calcolo nota (V millennio a.C.). Lo scopo di questo strumento è quello di assistere l’essere umano mentre fa i calcoli. Tuttavia, l’abaco non è molto diverso da un foglio di carta perché lo schema del suo funzionamento è sempre quello che troviamo in questa figura: supponiamo di dover fare un’operazione molto semplice, la somma, 20+4, il punto è che l’abaco non è una calcolatrice. L’abaco è esclusivamente un supporto, la logica dell’operazione è comunque di competenza dell’utente. Quindi questo primo step è solo nella direzione del farsi aiutare, ma siamo ancora distanti da quello che è il calcolatore attuale.

Un passo importante è quello rappresentato dalla pascalina: siamo nel 17 sec. d.C. e abbiamo questa prima vera innovazione rispetto all’abaco. Essa permette di fare delle somme o delle operazioni aritmetiche, ma questa volta la logica dell’operazione è cablata all’interno della macchina, non è più di competenza dell’utente. Quindi abbiamo un vero strumento (anche se rudimentale) a cui possiamo fornire degli input e ci dà il risultato. Si azionano dei meccanismi all’interno dello strumento che gli consentono di elaborare il risultato. L’essere umano non fa nulla se non inserire i due addendi ed è un significativo passo avanti; siamo molto più vicini alla calcolatrice.

Il problema della pascalina è che permetteva soltanto di fare addizioni e sottrazioni. Quando si trattava di moltiplicazioni e divisioni, era necessario che fosse l’utente a farle attraverso addizioni successive, e quindi il controllo dell’operazione tornava sotto il controllo dell’utente e non della macchina. Si potrebbe pensare di aprire questo congegno e, volendo far sì che la logica resti all’interno della macchina, si potrebbe pensare di modificare la macchina in modo da inserire ulteriori ingranaggi in grado anche di gestire moltiplicazione e divisione, però ci sono nuovi problemi. Potrebbe, ad esempio, emergere l’esigenza di calcolare la radice quadrata: possiamo fare la stessa cosa aggiungendo degli ingranaggi che possono gestire operazioni di questo genere, ma non stiamo risolvendo il problema, lo stiamo solo spostando temporalmente in avanti.

Il problema vero è che la logica che governa le operazioni è cablata nella macchina calcolatrice. La calcolatrice non è diversa da questo sistema: se, ad esempio, sorgesse l’esigenza di calcolare una nuova funzione di qualsiasi tipo, la funzione potrebbe anche essere quella di rispondere ad un’esigenza particolare. Io ho l’esigenza di fare la media di 4 numeri; un tasto per far questo non c’è. Se la calcolatrice fa un sacco di operazioni matematiche, ma non sa ordinare lessicograficamente dei cognomi, quel problema potrebbe saltar fuori e la calcolatrice non lo sa risolvere a meno che non sia una calcolatrice programmabile. La pascalina, come la calcolatrice standard, sa risolvere tante o poche operazioni per cui è stata costruita e queste operazioni sono nella circuiteria della macchina e negli ingranaggi della macchina, ma noi quotidianamente ci troviamo davanti a nuovi problemi che vorremmo far risolvere in autonomia alla macchina e questo chiaramente non lo possiamo fare perché se questo problema non era contemplato, non ho un modo di risolverlo.

La soluzione generale è trattare la logica come parte del cosiddetto input della macchina. Quindi nel nostro schema abbiamo detto che la logica dell’operazione è all’interno della pascalina o della calcolatrice, gli input sono i dati in ingresso alla macchina per svolgere la singola operazione. Nel nostro esempio, gli addendi e l’operazione selezionata è il cosiddetto input della macchina, ciò che l’utente fornisce in ingresso affinché venga eseguita l’operazione. La soluzione per avere qualcosa di non limitante è far sì che anche la logica stessa dell’operazione venga trattata come input della macchina. Quindi, per risolvere il problema, è necessario basarsi sugli input e sulla logica del programma, cioè io ti comunico come risolvere il problema.

In questa direzione, si è mosso intorno al 1840 Charles Babbage, che ha inventato il primo esempio di macchina di calcolo programmabile con queste caratteristiche. Egli è stato ad introdurre il primo esempio di macchina programmabile, cioè qualcosa in grado di eseguire delle operazioni ma anche di reagire opportunamente, di essere in grado di ricevere come input la logica di controllo di una nuova operazione. Questo somiglia al nostro computer: il nostro computer ha questa caratteristica, sa fare un tot di cose, riceve in input sia i dati ma riceve anche il programma (la logica dell’operazione – in questo caso dell’operazione di somma).

Se sorge una problematica, dobbiamo fare qualcosa che il computer non sa fare, gli forniamo un programma, un nuovo input con la logica dell’operazione che volete eseguire. Il computer sa fare n cose; se nasce la n+ esigenza basta dirgli come fare. Il computer è programmabile, il computer estende l’insieme delle cose che sa fare semplicemente fornendogli l’implementazione di un algoritmo, di una procedura in cui gli si dà l’insieme delle istruzioni per risolvere quel problema.

Chi fa il programmatore prende e utilizza un linguaggio di programmazione. Si usano dei linguaggi che sono comprensibili alla macchina con cui gli si danno le istruzioni. Il computer è, a differenza delle altre macchine, una macchina programmabile, quindi è in grado di gestire il fatto che la logica dell’operazione può essere a sua volta un input della macchina stessa. L’utente non è limitato solo a fornire i dati in input, ma può fornire anche il come trattare i dati e la macchina è pronta a eseguire gli ordini che le vengono impartiti.

Babbage era però troppo avanti rispetto ai suoi tempi e la tecnologia non era ancora sviluppata a sufficienza per supportare una concretizzazione delle sue idee. Inoltre, l’esigenza di automatizzare il calcolo non era così forte. L’evoluzione che ha subito l’informatica non è sempre stata dettata solo ed esclusivamente dalle innovazioni tecnologiche, ma le tempistiche sono legate alle esigenze.

Adesso, ad esempio, c’è l’esigenza di trattare i cosiddetti big data, queste tonnellate di dati che tutti noi contribuiamo a creare per il social network e che vengono utilizzati per gli scopi più disparati. Ci sono delle esigenze di avere delle potenze di calcolo così clamorose che 20 anni fa non c’erano perché non avevamo tutti questi dati da processare. Babbage pagò questo: tutto sommato, quando lui ipotizzò la macchina analitica, l’esigenza di automatizzare il calcolo non era così forte, per questo motivo le sue idee non ebbero il successo che avrebbero meritato perché la sua idea di macchina analitica è alla base del computer che abbiamo oggi. Le sue idee vennero messe nel dimenticatoio fino a Turing e Von Neumann. I due hanno riscoperto nella prima metà del novecento le idee di Babbage e hanno dato due contributi cruciali per lo sviluppo dei moderni calcolatori.

Alan Turing è uno dei padri dell’informatica e di quasi tutte le discipline che la caratterizzano. Molte sue idee sono attuali anche oggi e a Turing si deve l’introduzione della cosiddetta macchina di Turing. Ciò che è interessante è capire che non si tratta di una macchina fisica, lui non ha costruito niente, è una macchina astratta che però di fatto gli ha permesso di risolvere e di giungere a dei risultati clamorosi nel senso che di fatto lui ha tracciato a livello concettuale quello che è possibile fare con le macchine attuali. Ha tracciato un confine tra quelli che sono i problemi che la macchina è in grado di risolvere e quelli che non può risolvere. Il lavoro di Turing è fondamentale perché delinea ciò che è computazionalmente trattabile e problemi che se dati in pasto al computer non possono essere completati.

Ricordiamoci che si tratta di un modello astratto del calcolatore finalizzato a studiare i limiti di ciò che è calcolabile in modo automatico. E per fare questo, lo strumento teorico che Turing ha descritto per valutare che cosa può fare realmente la macchina e che cosa no ha di fatto tracciato la forma di quella che è l’attuale struttura del calcolatore e alla base del funzionamento di questa macchina di Turing c’è la stessa idea che c’era alla base della macchina analitica di Babbage.

Il contributo di Von Neumann è più pratico perché lui ha descritto un calcolatore effettivamente costruibile. Quindi, partendo dalle idee di Babbage e con il parallelo con la macchina di Turing (ciò che si può fare e cosa no), Von Neumann ha descritto un calcolatore effettivamente costruibile. È importante non perché è il primo, ma perché è il modello concreto di calcolatore su cui si basano i computer moderni. Dopo 100 anni, la struttura del calcolatore è ancora questa e resta tale perché non c’è ragione per cui la si debba cambiare. Il calcolatore di Von Neumann è ancora lo stesso che abbiamo nei computer moderni.

L’evoluzione è stata prettamente tecnologica, ma a livello concettuale la struttura è rimasta quella di Von Neumann. Poi c’è stata questa evoluzione tecnologica: quel componente che egli già ipotizzava negli anni '30 è cambiato da un punto di vista tecnologico. Se pensate a quella che per lui era l’unità di memorizzazione, le memorie hanno subito delle modifiche tecnologiche molto importanti e molto significative.

Terminologia

In inglese ci sono due parole che aiutano a capire il significato: Information and communication technology. Quindi l’informatica vista dal punto di vista tecnologico, cioè quali sono i risvolti ingegneristici o fisico matematici e teorie e tecniche legate alla comunicazione. Perché quando pensate a quello che fate con la tecnologia non possiamo trascurare gli aspetti legati alla comunicazione: com’è possibile che qualcosa che sta nel mio computer finisca dall’altra parte? Può sembrare una banalità, risponderemmo c’è la rete, ma dire questo vuol dire che ci sono delle competenze, dei risvolti ingegneristici e fisico matematici.

Computer science (l’informatica come scienza): L’informatica è una scienza basata su modellizzazione, formalizzazione, verifica sperimentale. Quindi qui dentro ci mettiamo teoria degli automi, logiche formali, teoria del linguaggio. Ci sono una serie di aree del computer science che vengono affrontate nell’ambito della ricerca, ad esempio l’intelligenza artificiale. Informatica (informazione automatica), quindi insieme dei processi e delle tecnologie che consentono di creare, raccogliere, elaborare, immagazzinare e poi diffondere informazioni.

Computer: elaboratore (dispositivo in grado di eseguire in modo automatico una serie di istruzioni) elettronico (Usa componenti elettronici) digitale (elabora solo informazioni binarie – il computer è in grado di comprendere solo due simboli 0 e 1).

Hardware: componente fisica del sistema informatico (ci riferiamo all’intero computer o ai suoi pezzi, i suoi componenti ma anche i dispositivi esterni).

Algoritmo: insieme delle operazioni necessarie a risolvere un problema. Esistono vari algoritmi per risolvere lo stesso problema. Un programma in genere implementa vari algoritmi. Software: è l’insieme dei programmi che fanno funzionare l’hardware. Esistono due categorie di software:

  • I sistemi operativi: che rappresentano il cosiddetto software di base permette al computer di svolgere le proprie funzioni.
  • I programmi applicativi: svolgono i compiti più vari, in funzione delle esigenze dell’utenza.

Lezione 2

La rappresentazione delle informazioni

Un elaboratore elettronico fondamentalmente basa il suo comportamento e la sua attività sulla necessità di gestire delle informazioni. Vediamo quindi come il computer (o qualunque altro elaboratore elettronico) gestisce e memorizza al suo interno le informazioni. Diciamo informazioni perché i computer non elaborano solamente dei numeri; all’interno di un computer ci sono informazioni di vario genere. Abbiamo parlato di elaboratore elettronico digitale, la parola chiave in questo contesto è proprio digitale perché, come detto, il computer conosce solo due elementi, due simboli che sono lo 0 e l’1 (Acceso – Spento).

All’interno del computer è come se ci fossero oggetti e componenti elettronici che si possono vedere come un insieme di tanti interruttori. Ci sono questa miriade di interruttori che possono essere accesi o spenti, possono assumere solo questi due stati. Quindi l’elemento chiave della rappresentazione dell’informazione all’interno della macchina è proprio questo: dobbiamo fare in modo che l’informazione sia rappresentabile in modo digitale. Quindi tutto ciò che noi riusciamo ad esprimere in digitale, quindi attraverso un alfabeto costituito di soli due elementi, lo 0 e l’1, è sufficiente affinché una qualunque informazione possa essere rappresentata, mantenuta, gestita ed elaborata all’interno della macchina.

Il problema sta nel fatto che normalmente noi esseri umani manipoliamo delle informazioni che non sono digitali e spesso abbiamo a che fare con segnali analogici. In questo caso, parlando appunto di segnali analogici, abbiamo un insieme continuo di valori, che trasmettono molte informazioni. Questo tipo di segnali è sensibile alle interferenze, ma il punto è che questo è quello che abbiamo in natura e c’è un problema perché un tipo di segnale di questo genere deve essere in qualche modo rappresentato sotto forma di sequenze di 0 e 1 per poter far parte di un computer. Noi sappiamo già qual è il risultato, sappiamo già che abbiamo per esempio dei suoni all’interno del computer. Quello che vedremo è come si possono trasformare o come si possono semplificare, approssimare segnali di questo tipo in segnali digitali che sono i segnali che vengono correttamente gestiti da un computer.

Abbiamo in questo caso un insieme discreto di valori ad esempio i due stati di un interruttore, quello che conosce il computer, 0-1 sono ovviamente i segnali più semplici da distinguere e permettono di...

Anteprima
Vedrai una selezione di 20 pagine su 128
Appunti Corso di Informatica Pag. 1 Appunti Corso di Informatica Pag. 2
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 6
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 11
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 16
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 21
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 26
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 31
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 36
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 41
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 46
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 51
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 56
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 61
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 66
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 71
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 76
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 81
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 86
Anteprima di 20 pagg. su 128.
Scarica il documento per vederlo tutto.
Appunti Corso di Informatica Pag. 91
1 su 128
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher samanthalopetuso di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Torino o del prof Pozzato Gian Luca.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community