Introduzione
Che cos’è l’informatica? È lo studio dell’informazione. Studio teorico, della computazione e degli strumenti di elaborazione automatica. Elaborazione automatica, perché si riducono i tempi di calcolo, maggiore affidabilità, automatizzazione del lavoro, diffusione di metodi di elaborazione che richiedono competenze specifiche.
Informatica o computer science: il calcolatore o elaboratore permette di trattare l’informazione. L’informatica viene anche chiamata tecnologia dell’informazione (information technology). Con l’avvento delle reti e delle telecomunicazioni è nata una nuova disciplina chiamata information & communication technology. Gli strumenti che abbiamo oggi, sono strumenti che sono più bravi a comunicare, rispetto a quanto sono bravi nell’elaborare le informazioni. Le tecnologie che abbiamo oggi prevedono un’infrastruttura nella quale siamo sempre connessi.
Dato, informazione, conoscenza
Dato: insieme di simboli di un alfabeto. L’informazione si ottiene relazionando i dati con proprietà. La conoscenza è ad un livello maggiore di astrazione e permette di trattare l’informazione.
Linguaggio naturale, linguaggio formale
Il linguaggio naturale è ambiguo e in cui è possibile costruire delle frasi che possono avere significati diversi. E questa cosa per il calcolatore non va bene. I linguaggi formali permettono di costruire delle regole a partire da un alfabeto finito di simboli, così come il linguaggio naturale e utilizzano una grammatica formale per il componimento delle frasi. Anche la costruzione della regola deve rispettare una determinata sintassi e deve rispettare una determinata grammatica. Esistono anche delle semantiche formali, che sono dei metodi che permettono di attribuire in maniera formale il significato che hanno le frasi in un linguaggio formale. Ciò permette di risolvere ogni ambiguità.
Codifica dell’informazione
Nei calcolatori le informazioni, i dati e le istruzioni vengono analizzati con il bit (binary digit), che sono delle sequenze di cifre (solitamente o lo 0 o 1). Il bit è anche una cifra binaria. La scelta di codificare i bit, nasce dal fatto che i calcolatori di oggi utilizzano dei dispositivi bistabili per poter memorizzare e rappresentare le informazioni. I primi calcolatori codificavano attraverso delle schede cartacee che venivano perforate a mano per codificare le sequenze di bit. Dopo di che sono arrivati i floppy disk (memorie magnetiche). Poi sono arrivati i dischi. Ora utilizziamo invece memorie senza parti meccaniche (chiavette USB). La memoria del calcolatore contiene sequenze di bit che codificano l’informazione. La sua capacità è misurata in bit, byte.
La macchina di Turing
Creata da Alan Turing, che la costruì solo per decodificare i messaggi Enigma. È un dispositivo astratto per l’elaborazione dell’informazione. Permette di analizzare le proprietà dell’elaborazione automatica dell’informazione, degli algoritmi e della complessità. È costituita da:
- Un alfabeto finito di simboli
- Un nastro di lunghezza infinita diviso in celle
- Una testina in grado di leggere e scrivere le celle e di spostarsi
- Un insieme finito di stati
- Un registro di stato
- Una tabella delle azioni o funzione di transizione
Il gioco dell’imitazione
Alan Turing ha sostituito in questo gioco, una delle persone con un calcolatore, dicendo che secondo lui, nel momento in cui il computer fosse stato in grado di vincere al gioco d’imitazione. Se il calcolatore fosse riuscito a ragionare come un essere umano fosse stato capace anche di pensare. Studi successivi hanno smontato quest’idea. Ce ne sono stati due: quello di Dreyfus e quello della distanza cinese.
Huber Dreyfus e l’intelligenza artificiale
Critica che riguarda la domanda che si era posto Turing, ovvero se il computer effettivamente è in grado di pensare, oppure se il computer è un calcolatore in generale. Il computer è solo in grado di ricevere i messaggi che arrivano dall’esterno di input e fornisce la risposta più appropriata a questo input. Lui ha mostrato come effettivamente è possibile far vincere il calcolatore al gioco di imitazione, andando a codificare un numero sufficiente di regole che permettano al calcolatore di rispondere a qualsiasi domanda. Critica di Dreyfus si basa sul concetto di regressio ad infinitum; regressione infinita, ovvero è una cosa che fa riferimento alla logica, in cui si dice che per poter argomentare qualsiasi cosa si continuava a proporre un numero infinito di argomentazioni e questo significa che non esistono argomentazioni per confermare ciò che si sta proponendo. Il calcolatore non è in grado di pensare, ma può essere equipaggiato con una serie di regole che gli permettono di rispondere a qualsiasi domanda e grazie a questa conoscenza che viene codificata nel calcolatore, il calcolatore può far credere di essere in grado di pensare, ma in realtà non ne è in grado.
La stanza cinese
In questo caso, con questa critica si capisce come il computer può portare avanti con successo un compito pur non sapendo quello che sta facendo. Searle, con la stanza cinese, ci dice che è possibile definire un sistema che è in grado di effettuare qualsiasi traduzione dal cinese ad un’altra lingua o viceversa, anche se chi si occupa di fare questa traduzione il cinese non lo conosce. Rappresentazione: c’è una stanza in cui è possibile comunicare con l’esterno solo grazie a un’apertura. E c’è uno schermo che proietta. Nella stanza c’è un individuo, ma può essere anche un calcolatore che ha un grosso manuale e una cassettiera alle sue spalle. L’idea è che la persona che ha la necessità di fare una traduzione, inserisce dalla fessura un foglio con la traduzione che deve effettuare e chi sta all’interno, pur non conoscendo il cinese, ha a disposizione il manuale e questa cassettiera dove ha tutte le traduzioni possibili. Quindi, indipendentemente da quello che arriva dall’esterno, questa persona potrà sfogliare il manuale per capire in quale punto della cassettiera prendere la traduzione cinese del testo che ha ricevuto. E a quel punto proietterà attraverso lo schermo, gli ideogrammi che forniscono la traduzione. Per chi sta all’esterno può essere un sistema intelligente che può far pensare che dentro c’è chi conosce la lingua, quando questo non è vero.
Elaborare l’informazione
Quando noi parliamo di elaborazione dell’informazione, parliamo di tutte quelle operazioni che fanno riferimento sia alla creazione dell’informazione (informazione che viene tradotta con una codifica binaria e viene creata e inserita in un calcolatore). Parliamo di tutte le operazioni di modifica dell’informazione che in qualche modo è quello che si avvicina a quello che noi intendiamo con elaborazione dell’informazione. Per poter elaborare l’informazione dobbiamo fare anche delle operazioni di confronto. La conservazione dell’informazione dei dati è un’elaborazione, perché l’informazione deve essere elaborata per poter appunto essere memorizzata nel calcolatore. La trasmissione è un’elaborazione, perché, nel momento in cui devo trasmettere delle informazioni, le devo prima elaborare per poterle indirizzare correttamente al destinatario. Per fare tutte queste cose utilizziamo degli algoritmi, che sono sequenze di istruzioni che devono essere scritte in un linguaggio non ambiguo e che permette all’esecutore di eseguire le informazioni in maniera autonoma e di passare, da quell’informazione che gli arriva in input e ottenere l’output alla risposta all’elaborazione stessa.
L’evoluzione dei sistemi di elaborazione dell’informazione
Viene fatta da sempre, come l’abaco, il regolo calcolatore, pascalina, ecc. Poi successivamente sono arrivati dei calcolatori con componenti elettriche come, il ENIAC, transistor, microchip, ecc. e adesso abbiamo i personal computer. Alla fine degli anni '60 un ingegnere, Moore, aveva formulato una legge in cui faceva una previsione su quella che sarebbe stata l’evoluzione, in termini di performance, dei sistemi di elaborazione. E lui aveva previsto che ogni due anni sarebbe raddoppiata la potenza di calcolo dei calcolatori che sarebbero stati introdotti. E questa sua previsione di raddoppiare le performance ogni due anni è rappresentata da questa linea tratteggiata. Previsione piuttosto precisa per quasi 40 anni.
Il software
Algoritmo
È una sequenza di istruzioni che deve effettuare un’esecuzione al fine di risolvere uno specifico problema. Sequenza di istruzioni che è specifica per la soluzione di un problema e deve permettere l’esecuzione/elaborazione delle informazioni, in modo tale da risolvere questo problema.
Caratteristiche dell’algoritmo:
- Specificare chi ne è l’esecutore.
- Ha degli input e degli output (non sempre li hanno).
- È composto da istruzioni che sono scritte in un linguaggio che deve essere comprensibile all’esecutore.
- Le istruzioni devono essere elementari, perché noi ci aspettiamo che l’esecutore sia in grado di risolvere solo operazioni elementari.
- Non deve essere ambiguo.
- L’output deve fornire dati in un tempo finito (non sempre succede perché non si sa la fine di un algoritmo).
- La risposta deve essere identificata in maniera deterministica, ovvero se io sto pensando ad un algoritmo che deve calcolare una somma, mi aspetto che il risultato, sia uguale a quello che penso.
- I dati di input possono essere parametrici.
Esempio di algoritmo: la ricetta
Dati di input: acqua, pasta, sale.
Preparazione:
- Mettere acqua nella pentola
- Portare acqua in ebollizione
- Aggiungere il sale all’acqua
- Buttare la pasta
- Cuocere per 10 minuti
- Scolare la pasta
Dati di output: pasta cotta
La ricetta si avvicina all’algoritmo, però ci sono due differenze:
- Ci sono delle ambiguità che sono implicite, ma che l’esecutore intelligente riesce a risolvere.
- Nella ricetta di prima non sono state specificate le quantità degli input. Ma questa cosa non va bene negli algoritmi. Non tutti i casi possibili vengono specificati.
Diagrammi di flusso
Per poter rappresentare tutte le istruzioni e il flusso di istruzioni e di operazioni che devono essere eseguite a partire da un input, per ottenere un output, questa rappresentazione è fatta tramite i diagrammi di flusso. I diagrammi di flusso permettono di rappresentare graficamente un algoritmo grazie ad una serie di blocchi che hanno un significato univoco e, con questi, il diagramma di flusso ci permette di indicare le istruzioni in maniera corretta. Rispetto alla sequenza di istruzioni è di più facile lettura, perché permette di rappresentare il flusso di tutte le informazioni e tutte le diramazioni possibili che possono verificarsi nell’esecuzione dell’algoritmo stesso, in modo tale che io graficamente, sto considerando tutti i casi possibili o se c’è qualcosa che ho dimenticato e che dovrei considerare.
- I blocchi di inizio e di fine sono rappresentati con un’ellissi.
- I blocchi operazione vengono rappresentati con dei rettangoli dove all’interno vengono scritte le operazioni.
- Blocchi di controllo, all’interno dei quali possiamo effettuare dei controlli e formulare delle domande che hanno due risposte. E tra una freccia e ne escono due. Utilizzato nel caso dell’elaborazione di un dato. Rappresentato con un rombo.
- Blocchi che permettono di leggere i dati in input e di scrivere i dati in output. I blocchi di input sono rappresentati con dei parallelogrammi e i blocchi di output sono chiamati anche blocchi a forma di foglio; rettangolo con un lato ondulato.
Combinando i diversi blocchi possiamo codificare qualsiasi algoritmo.
Variabili
Ne esistono di diversi tipi:
- Variabile: è un qualcosa che permette di memorizzare dei dati. Nella variabile X e Y posso salvare solo un dato.
- Vettore: è composto da più celle di memoria. Permette di memorizzare più valori e di far riferimento a tutti questi valori utilizzando la singola variabile V.
- Matrice: non si ha più una sola riga, ma più colonne e più righe. Ha una forma tabellare. Struttura più complessa e posso accedere ad un singolo valore.
Nel momento in cui noi utilizziamo le variabili e tutti i blocchi dei diagrammi di flusso possiamo codificare cose più complesse; addirittura anche dei cicli che ci permettono di rappresentare delle iterazioni di operazioni che vengono ripetute più volte.
Dagli algoritmi ai programmi
Codificare quello che viene fatto con i diagrammi di flusso, utilizzando un linguaggio di programmazione, che è un linguaggio formale usato per descrivere gli algoritmi. Ne esistono di diverso tipo di linguaggi di programmazione e i linguaggi che vengono utilizzati per trascrivere i programmi (Java, Basic, ecc.) sono i cosiddetti linguaggi ad alto livello. Questi linguaggi di programmazione stanno a livelli di astrazione diversi, ovvero di distanza diversa rispetto al calcolatore. Il linguaggio più lontano dal calcolatore è il linguaggio naturale, quello che parliamo noi. A livello inferiore abbiamo i linguaggi ad alto livello che sono i linguaggi formali di programmazioni. Esistono altri tipi di linguaggio: il linguaggio macchina che sono le sequenze di bit, quindi tutte quelle istruzioni e tutti i dati e le informazioni codificate in sequenze di bit che vengono poi utilizzate dal calcolatore per l’esecuzione vera e propria dell’elaborazione dell’informazione. Normalmente l’essere umano opera nei linguaggi ad alto livello, poi la traduzione verso la lingua parlata dalla macchina viene fatta da software specifici che servono a questo scopo e che sono dei compilatori, che trasformano ciò che l’essere umano ha scritto ad alto livello in linguaggio macchina, perché il linguaggio macchina è quello conosciuto dal calcolatore ed è quello necessario per poter realizzare l’elaborazione dell’informazione. Per eseguire i programmi, prima bisogna tradurli in linguaggio macchina. Si usano il compilatore o l’interprete che permettono di eseguire lo stesso programma su calcolatori diversi.
Licenze
I software che vengono scritti dai programmatori sono rilasciati dalle software house. Quando viene scritto un software e viene reso pubblico, normalmente questo viene protetto da un tipo di licenza. Ci sono diverse tipologie di licenza e diversi software secondo il diverso uso per cui sono stati sviluppati a seconda dell’impatto che il software vuole avere sul pubblico vengono usate licenze diverse:
- Licenze d’uso: licenze che proteggono i software che normalmente prevedono un pagamento per l’utilizzo e la possibilità di utilizzare il software stesso solo su un calcolatore.
- I software non possono essere copiati e non lo si può usare su più calcolatori.
- Shareware: prodotto in prova per un periodo di tempo. Usate su quei software che inizialmente sono gratuiti ma poi diventano a pagamento.
- Freeware: prodotto distribuito gratuitamente. Chi produce il software non ci guadagna sulla vendita del software stesso, ma ci guadagna nel momento in cui gli utenti usano il software stesso.
- Software libero e software open source: software che viene sviluppato non per scopo di lucro, ma ci sono delle comunità di persone che hanno delle competenze di un certo tipo che decidono di portare avanti questi progetti e per rendere disponibili alla comunità dei software in maniera gratuita senza prevedere raccolte dati, ma solo per fornire un’alternativa al servizio a pagamento.
Outline
- Software applicativo: software che noi possiamo utilizzare sui nostri calcolatori una volta che il sistema operativo funziona.
- Sistema operativo: funzionano in maniera analoga indipendentemente dal loro sviluppatore. Quelli più utilizzati sono: Linux (gratuito), Microsoft Windows (a pagamento). I sistemi operativi di Linux si basano su Unix sviluppato nei laboratori Bell. Sistemi della Apple come Mac. Sistemi operativi per i cellulari come OS o Android.
Il sistema operativo
Un sistema operativo è un software di base che permette il corretto funzionamento del calcolatore e permette all’essere umano di interagire con il calcolatore utilizzando una serie di programmi. Come funziona il sistema operativo in termini del calcolatore, perché è il sistema operativo che si occupa di gestire tutte le componenti che abbiamo nel nostro computer. Ogni sistema operativo è costituito da delle componenti che hanno tutte un compito specifico. Le componenti principali sono:
- Nucleo: si occupa della gestione della CPU (processore). Il processore è visto come il cervello del calcolatore perché è quello che si occupa di elaborare le informazioni. Abbiamo questo processore che esegue i calcoli, ma è il sistema operativo che gli dice quali calcoli deve fare. I sistemi operativi moderni ci permettono di fare delle operazioni di timesharing e di multitasking. Multitasking significa che riesce a fare più cose insieme, mentre timesharing fa riferimento alla stessa cosa. Questi due concetti sono stati introdotti nel momento in cui il sistema operativo è passato dal...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti di Informatica per la comunicazione digitale
-
Informatica per la comunicazione - Appunti
-
Appunti Informatica per la comunicazione digitale
-
Appunti di Informatica per la Comunicazione Digitale