Scarica Riassunti Programma Completo Informatica STML e più Appunti in PDF di Fondamenti di informatica solo su Docsity!
INFORMATICA
Definizione di informatica: " informazione automatica ", il termine viene coniato da Ph. Dreyfus nel 1962. L'informatica è l'insieme dei vari aspetti scientifici e tecnici specificamente applicati alla raccolta ed al trattamento dell'informazione ed elaborazione automatica dei dati , come sussidio e supporto alla documentazione, alla ricerca e allo studio nei vari settori della scienza, tecnica, attività economiche, sociali e politiche. Tutto ciò viene applicato alle scienze, al diritto, alla medicina, alla linguistica etc.. L'informatica automatizza l'elaborazione dei dati e dell'informazione. Il suo campo di applicazione è il SOFTWARE , che troviamo dappertutto, in qualsiasi contesto. INFORMATICA = infor(mation)+(auto)matique → elaborazione automatica dell'informazione Per l’elaborazione automatica dell’informazione ci serviamo di:
- Strumenti per l'informazione: per trattare l'informazione, crearla, conservarla, modificarla e comunicarla.
- Studio degli algoritmi: che descrivono e trasformano l'informazione. Sono delle semplici istruzioni che diamo al calcolatore per risolvere un problema (esempio: capire tra un insieme di numeri quale sia il più grande). Un COMPUTER è il mezzo per il quale si esprime l’informazione. E’ una macchina automatizzata programmabile in grado di eseguire sia complessi calcoli matematici ( calcolatore ) sia altri tipi di elaborazioni dati ( elaboratore ). L’ ELABORAZIONE dati viene preceduta e seguita da due processi: INPUT ed OUTPUT INPUT → ELABORAZIONE → OUTPUT L'Informatica NON è riducibile al calcolatore perchè: 1. non dipende dalla tecnologia impiegata nella costruzione del calcolatore; 2. non dipende nemmeno DALL'ESISTENZA di un effettivo calcolatore. DATA STORICA: 1936 → ANNO SIGNIFICATIVO per la nascita dell'informatica poiché avvenne: - la pubblicazione del primo modello di computazione di Turing; - la costruzione del primo calcolatore di Zuse. Questi due eventi nacquero da una sfida alla comunità scientifica in cui ci si chiedeva se esistesse qualche algoritmo che sia in grado di dire se un enunciato matematica sia vero oppure falso, seguendo il sogno millenario di creare una macchina per fare i calcoli in modo automatico e il progetto Hilbertiano di meccanizzazione della matematica, che consentisse di ottenere tutti i teoremi a partire dagli assiomi e dalle regole di inferenza. Purtroppo un algoritmo simile non esiste: se fosse vero non esisterebbero problemi di matematica ancora aperti. Dunque il computer ci aiuta ad eseguire calcoli ma non può dimostrare effettivamente se gli enunciati siano veri oppure no, perché questo implicherebbe un ragionamento , ma il computer NON è ragionato. Nel 1936 Turing, che è considerato uno dei fondatori dell’informatica, teorizzò questo lavoratore che consisteva in una sorta di nastro infinito e da una testina che legge le istruzioni contenute sul nastro. Può leggere o scrivere dei dati. Per leggere o scrivere, il nastro si può spostare in avanti o indietro (come fa il computer oggi). ALGORITMO : sequenza di passi per risolvere un determinato problema. I nostri computer non fanno altro che seguire degli algoritmi e ogni algoritmo è descritto tramite programmi scritti in linguaggi ad alto livello e poi tradotti in linguaggio macchina. Il CALCOLATORE è l’esecutore di algoritmi. Il calcolatore può essere utilizzato come utente , usando un software applicativo esistente per creare documenti e interfacce grafiche, effettuare calcoli, navigare in rete, oppure come sviluppatore , creando nuovi programmi sullo strato del software esistente (possono essere programmi applicativi o programmi di sistema, che servono a far funzionare il calcolatore). La piramide DIKW viene usata in molte materie e serve per capire l’importanza dei dati e, soprattutto, per farci capire la differenza tra un dato e un’informazione. Il dato, che è alla base della piramide, è un valore che detto così non ha significato. Un dato acquisisce significato quando viene contestualizzato. Un dato alla base della piramide non ci dice nulla, mentre quando noi lo contestualizziamo acquisisce importanza e informazioni. La conoscenza è quando andiamo a sperimentare l’informazione, ovvero quando uniamo un dato alla nostra conoscenza. Grazie a queste sperimentazioni, acquisiamo la saggezza. La saggezza è qualcosa che va al di là. Un DATO è qualcosa di imprescindibile dai sensi ma che non ha alcun valore intrinseco fino a quando non viene posto in un contesto di riferimento.
Un’ INFORMAZIONE è la scelta di un individuo di porre alcuni dati in un contesto di riferimento, assurgendoli al ruolo di “premesse”, e di effettuare su di essi una serie di interferenze, traendone delle “conclusioni”. Tali conclusioni si chiamano “informazioni” ma non acquisiscono il valore di “conoscenza” fino a quando non vengono correlate alle conoscenze ed esperienze di un soggetto specifico. Una CONOSCENZA è l’impiego, da parte di uno specifico individuo, di un certo numero di informazioni per attuare certe “azioni” e vivere delle esperienze nel suo ambiente. L’esperienza si trasformerà in conoscenza, sia che essa confermi le informazioni in suo possesso sia che le neghi. La conoscenza è sempre individuale e non si può trasmettere perché è generata dalle precedenti esperienze e conoscenze dell’individuo; quel che si può trasmettere è solo il racconto della propria esperienza. Conoscere significa prendere possesso intellettualmente o psicologicamente, specialmente con un’attività sistematica, di un qualunque aspetto di quella che è considerata realtà. La saggezza ( WISDOM ) è qualcosa che va al di là dei concetti di informazione e conoscenza, li comprende entrambi assimilandoli e trasformandoli nell’esperienza individuale. Dati Digitali VS Dati Analogici: I dati possono essere Analogici o Digitali.
- ANALOGICA è una grandezza che varia con continuità. Una grandezza analogica può essere l’intensità di corrente che attraversa un conduttore, perché può variare nel tempo ed è continua. Può assumere valori infiniti. - DIGITALE è una grandezza che varia a “salti”: una variabile digitale può assumere solo un numero finito di valori. Una grandezza digitale può assumere valori finiti rispetto a quella analogica. Potremmo immaginare due modi per superare una differenza di altezza: uno scivolo e una scala. Possiamo considerare lo scivolo come delle grandezze continue, o analogiche, perché sono espresse in continuità rispetto al valore del tempo, mentre i gradini sono degli istanti in cui andiamo a catturare il valore finito di una grandezza. DATI ANALOGICI : Il termometro di mercurio, ad esempio, rappresenta il valore delle temperature in base all’altezza della colonna di mercurio. È quindi una grandezza analogica perché è in stretta analogia con il fenomeno fisico. Se la temperatura varia, varia anche la misura del termometro, anche in maniera infinitesimale. In teoria non ci sono limiti alla precisione di una rappresentazione analogica: per esempio ad ogni minima variazione delle temperature potremo ottenere una analoga variazione dell’altezza della colonna di mercurio. DATI DIGITALI : Mentre le grandezze analogiche possono assumere valori infiniti, quelle digitali possono assumere un numero finito di valori. Questo non vuol dire che le grandezze analogiche sono più efficienti di quelle digitali, poiché se io volessi misurare un qualcosa conviene utilizzare le grandezze digitali così da poter scegliere la precisione (esempio: impostare la sveglia/cronometro), anche se i valori delle grandezze analogiche sono infiniti. Apparentemente la rappresentazione digitale è più approssimativa di quella analogica, ma in realtà la situazione è diametralmente opposta! Infatti la precisione digitale dipende dal numero di cifre a disposizione e può quindi essere cambiato se necessario, mentre nel caso delle grandezze digitali dipende dall’operatore umano. Per rappresentare un’informazione all’interno di un calcolatore, innanzitutto abbiamo bisogno di un buon supporto fisico dove i dati devono essere salvati (ad es la carta, un disco magnetico, ecc), e di un linguaggio, ovvero un insieme di regole che permette di leggere, scrivere e interpretare una determinata informazione (ad es la lingua italiana o i sistemi di numerazione posizionali). Data l’enorme quantità di supporti fisici, abbiamo bisogno di capire qual è il miglior linguaggio da utilizzare. Un linguaggio è tipicamente costituito da 2 componenti: un alfabeto (insieme di simboli appartenenti al linguaggio) e delle regole (che ci permettono di combinare tali simboli in costrutti del linguaggio e di interpretarli). Affinché ogni simbolo costruisca un minimo di informazione, l’alfabeto deve avere almeno due simboli distinti. RAPPRESENTAZIONE DELL’INFORMAZIONE TRAMITE I SISTEMI AUTOMATICI Per poter elaborare automaticamente l’informazione, è necessario darne una rappresentazione che sia gestibile da uno strumento automatico. Esistono fonti di informazione estremamente diverse, e il loro trattamento automatico richiede un'informazione nella modalità con cui vengono rappresentate. Tutta l’informazione gestita dal calcolatore viene mantenuta in forma numerica, con il più semplice sistema di numerazione possibile, quello binario (con soli due simboli). I dati vengono memorizzati tramite numeri interi finiti (possibilmente con un’unità frazionaria). In sostanza qualsiasi informazione all’interno di un calcolatore viene espressa tramite un sistema di numerazione (grazie al quale possiamo esprimere qualsiasi cosa come un testo, dei valori relativi alla misurazione di una grandezza fisica, ecc.). Rappresentazione di dati: Dal punto di vista della rappresentazione, un dato può essere di vari tipi:
- Categorico: rosso, verde, blu
- Ordinale: orrendo, brutto, bello, fantastico
- Numerale Discreto: 10, 159, -
- Numerale continuo: 1e-13, 2 Tutti questi tipi possono essere rappresentati o approssimati tramite numeri interi (possibilmente con un’unità frazionaria). Ciò avviene tramite il metodo del dizionario : ad ogni possibile valore viene associato un numero intero, con cui viene rappresentato. Per esempio: rosso=0 ; verde=1 ; blu= L’unica operazione definita su questo tipo di dati è l’ uguaglianza , cioè posso capire se due associazioni sono tra di loro uguali, e la codifica preserva tale operazione (rosso=rosso ; 0=0). Allo stesso modo con i numeri ordinali si usa il metodo dell’ enumerazione : i valori sono ordinati, e ad ognuno viene associato un numero intero crescente. Per esempio: gennaio=0 ; febbraio=1 ; marzo=2 ; aprile= La codifica rispetta la relazione di ordine (un dato è maggiore o minore rispetto a un altro: gennaio < marzo).
RAPPRESENTAZIONI DEI NUMERI Il concetto di numero è indipendente dalla sua rappresentazione (simboli). Un sistema di numerazione è uno schema per codificare numeri, definito dalle cifre e dalle regole da applicare per costruire i numeri. Esistono due categorie di sistemi di numerazione: addizionali e posizionali. Addizionali : Un sistema è addizionale quando ogni simbolo ha lo stesso valore fisso a prescindere dalla posizione che occupa all’interno di un numero. Il sistema più semplice è quello in cui si usa come simbolo un’unica barretta (I) II = 2 IIIII = 5 Il sistema numerico romano è il sistema addizionale più conosciuto. I=1, V=5, X=10, L=50, C=100, D=500, M= Regola: il valore di ciascun simbolo viene sommato se alla sua destra compare un simbolo di valore inferiore o uguale (o se è l’ultimo), altrimenti viene sottratto. Posizionali : In un sistema di numerazione posizionale il valore di ogni cifra dipende dalla sua posizione all'interno del numero. Quindi bisogna dare un peso aggiuntivo ad ogni numero della cifra a seconda della posizione che occupa. Ad ogni posizione è associato un peso pi ; le posizioni si contano da destra a sinistra a partire da 0. Il valore della cifra viene moltiplicato per la base (b) elevata alla posizione. Se pensiamo al nostro sistema di numerazione (decimale), il simbolo 1 messo come prima e unica cifra vale 1, se viene messo come prima posizione all’interno di un numero di 2 cifre vale 10, all’interno di 3 cifre vale 100 e così via. Il simbolo a seconda della posizione che occupa ha un valore diverso. Il sistema posizionale può essere rappresentato attraverso la forma polinomiale , grazie alla quale possiamo scrivere numeri frazionari o numeri con parte intera e parte frazionaria. Sistema binario (base 2) E' il sistema di numerazione con la base più piccola possibile
- In questo caso le cifre sono {0, 1}
- Si parla di cifra binaria (binary digit o bit): il bit è l’unità minima di informazione. Vantaggio : minor numero di simboli fondamentali (0,1) → facilità di stabilire una corrispondenza biunivoca con due possibili stati di funzionamento dei circuiti elettronici; 0 interruttore spento, 1 interruttore acceso. Svantaggio : maggior numero di cifre necessarie per rappresentare un numero (2 cifre decimali → 7 cifre binarie), per rappresentare un numero a 2 cifre decimali abbiamo bisogno di 7 cifre binarie. Nel sistema di numerazione decimale vengono usate 10 cifre. Per convertire un numero binario in un numero decimale basta sommare le varie potenze di due corrispondenti alla cifra binaria. 11010 = 1x2⁴ + 1x2³ + 0x2² + 1x2¹ + 0x2º = 26 Per convertire un numero da decimale a binario basta dividere esaustivamente il numero decimale e utilizzare i resti, scritti al contrario. Ad esempio 26 :2=13 resto 0 , 13:2=6 resto 1 , 6:2=3 resto 0 , 3:2=1 resto 1 , 1:2=0 resto **1 ← Come possono essere rappresentati i caratteri all’interno di un computer?
- ASCII** ( American Standard Code for Information Interchange ): questa codifica associa a ogni carattere un numero (da 0 a 255). Questo significa che il computer utilizza 8 bit, ovvero 1 byte, per rappresentare ogni carattere. Quindi è possibile contare fino a (28-1=256-1) 255 posizioni e ad ognuna di queste associare un carattere, che il computer sarà in grado di codificare. In questa codifica possiamo trovare simboli speciali, numeri, segni di punteggiatura… - Unicode : sistema che prevede l’uso di codifiche con unità da 8 bit (byte), 16 bit (word) e 32 bit (double word), descritte rispettivamente come UTF-8, UTF-16 e UTF-32. Questo determina la possibilità di utilizzare un numero di caratteri molto elevati usati più di frequente. Oltre al sistema di numerazione binario, viene utilizzato anche quello ottale , che utilizza una notazione posizionale basata su 8 cifre (da 0 a 7) e sulle potenze di 8; questo sistema viene utilizzato perché può essere rappresentato con 3 bit. Per evitare ambiguità nel caso di numerazione binaria o ottale, viene posto un pedice alla base del numero per evidenziare il sistema di numerazione utilizzato (1001₂= binario, 1001₈ ottale). Un altro sistema molto utilizzato in ambito informatico è quello esadecimale che utilizza una notazione posizionale basata su 16 cifre (da 0 a 9 e le lettere A B C D E F) e sulle potenze di 16. Il sistema esadecimale è importante soprattutto nel Web per esprimere i colori. Per algoritmo si intende una sequenza di istruzioni che può essere impiegata in un’attività di elaborazione dei dati. Un algoritmo è costituito da una serie di passi, ognuno dei quali è semplice e porta alla risoluzione del problema. Per risolvere un determinato problema, ha bisogno di alcuni valori di input per poter elaborare ed eseguire le istruzioni fornire una soluzione in uscita, ovvero un output. All’interno dell’algoritmo è possibile definire dei cicli, che eseguono più volte le istruzioni fino a che un determinato valore soddisfa una specifica condizione. Qualsiasi software non fa che implementare un algoritmo. Per rappresentare gli algoritmi si utilizza la rappresentazione a pseudocodice , la quale descrive in linguaggio naturale le operazioni che descrivono l’algoritmo: dati in input una serie di numeri (4, 5, 10), per capire quale di questo sia il maggiore l’algoritmo esegue una serie di istruzioni, e in output fornisce il risultato, ovvero 10. L’implementazione di tale algoritmo, richiede la presenza di una variabile (da immaginare come un contenitore all’interno del quale si trova un valore). Nel caso precedentemente descritto la variabile indicata è “ maggiore ”: maggiore ← E₁ Per ogni numero in E fai: se numero > maggiore , allora maggiore ← numero (maggiore viene avvalorata, riceve un numero) Restituisci maggiore (il ciclo termina, quindi la variabile maggiore conterrà il valore considerato maggiore tra i numeri forniti nell’input). Questo è lo pseudocodice per risolvere un problema, ovvero: dato in input un insieme di numeri, quali tra questi è il numero maggiore? L’output è il risultato dell’elaborazione dell’algoritmo, ovvero il numero maggiore. L’algoritmo contiene quindi un ciclo: per ogni numero in E si ripete l’operazione fino al risultato output. Oltre allo pseudocodice, un algoritmo può essere rappresentato attraverso l’utilizzo dei cosiddetti “diagrammi a blocco”. In questo caso nel primo blocco viene dichiarata una variabile. Il secondo blocco dà via al ciclo.
I COMPUTER: Il computer è una apparecchiatura elettronica che possiede le seguenti caratteristiche:
- è rapido nell’effettuare calcoli matematici (anche complessi); - è preciso nell’esecuzione delle operazioni assegnategli; - è versatile. Il computer è quindi un semplice elaboratore di istruzioni che per eseguirle impiega un tempo molto inferiore a noi. È importante distinguere le due componenti implementative che costituiscono il computer:
- Hardware (HW): parti fisiche del computer, ovvero tutte quelle parti magnetiche, ottiche, meccaniche ed elettroniche che gli consentono di funzionare. Generalmente è anche riferito a qualsiasi componente fisica di una periferica o di una apparecchiatura elettronica.
- Software (SW): programma o insieme di programmi che sono installati sul nostro sistema operativo, ovvero in grado di funzionare su un elaboratore. Vantaggi: - rapidità; - precisione; - capacità di eseguire numerose operazioni ripetitive; - capacità di riuscire a gestire grandi moli di dati; - capacità di riuscire ad integrare e memorizzare grandi moli di dati. Svantaggi: - mancanza di intelligenza e creatività (vero in parte in quanto esistono delle applicazioni di intelligenza artificiale che smentiscono questa parte); - difficoltà in situazioni nuove non previste; - possibilità di guasti (sia a componenti HW sia a componenti SW), infatti i bug sono uno dei problemi che possono presentare alcune applicazioni. Esempio molto importante è quello del " Millennium Bug ”, errore software dovuto al cambio del tipo di data in molte applicazioni che memorizzavano l’anno su dati che riguardavano la data utilizzando esclusivamente due cifre. All’epoca non si aveva a disposizione della memoria, in quanto bisognava fare economia sulla memoria che veniva messa nei pc, per questo motivo nei programmi che utilizzavano delle date si preferiva memorizzare l’anno utilizzando solo due cifre. Il problema stava nel fatto che con l’anno 2000 molte date dovevano riportare la cifra 00. Nonostante si sia parlato tanto del Millennium Bug non si sono poi verificati dei danni causati da questo bug in quanto per fortuna gli sviluppatori hanno messo fine a questo potenziale pericolo perfezionando e migliorando le applicazioni. TIPOLOGIE DI COMPUTER È possibile dividere l’insieme dei calcolatori in varie categorie: - mainframe, pc che possono elaborare in maniera abbastanza significativa grandissime mole di dati; - minicomputer; - network computer; - personal computer; - laptop computer (o Notebook o Computer Portatili); - smart device (tablet e smartphone), con una capacità di elaborazione minore rispetto a quella dei laptop; - personal digital assistant (Amazon echo, Google home, Microsoft Cortana), hanno una logica basata sull’intelligenza artificiale e sono capaci di interpretare ciò che stiamo dicendo, le istruzioni che noi li stiamo dando; in questo caso l’input è la nostra voce e sono capaci di interpretarla come se fossero dotati di un’intelligenza umana. I PERSONAL COMPUTER (PC) Personal computer dovrebbe essere, nel significato originale del termine, un qualsiasi computer che sia stato progettato per l'uso da parte di una singola persona (in opposizione per esempio ai mainframe a cui interi gruppi di persone accedono attraverso terminali remoti). Al giorno d'oggi il termine personal computer è invalso ad indicare una specifica fascia del mercato dell'informatica, quella del computer ad uso privato, o casalingo, per uffici, o per la piccola azienda. Caratteristiche principali: - basse prestazioni, ma adatte all’uso domestico; - basso costo (anche se non sempre); - impiegato per l’uso individuale. I LAPTOP COMPUTER (NOTEBOOK, PORTATILI) Il computer portatile, conosciuto anche con i nomi inglesi laptop e notebook, è un computer caratterizzato principalmente dalla riduzione del peso e delle dimensioni, per essere trasportato con facilità. Caratteristiche principali: - basse prestazioni, ma adatte all'uso domestico; - basso costo; - impiegato come sistema di elaborazione portatile individuale; - possiede un'alimentazione autonoma a batteria. COMPONENTI DI BASE DI UN CALCOLATORE - periferiche di input (tastiera, mouse), sono definite in questo modo perché tramite questi oggetti riusciamo a comunicare con il computer dandogli dei dati; - periferiche di output, sono utilizzate dal pc per comunicare con noi (speaker, monitor, stampante); - hard disk, all’interno dei quali i dati sono persistenti, ossia che nonostante la macchina sia spenta i dati “continuano a vivere” (CD, USB); - unità di calcolo CPU, mente del calcolatore, esegue dei calcoli o delle istruzioni in maniera molto veloce; - memoria principale RAM, sta per Random Access Memory , memoria che viene utilizzata soprattutto dalle applicazioni che mandiamo in esecuzione sulla nostra macchina. Ogni applicazione, dato che implementa degli algoritmi, ha necessità di memorizzare o di utilizzare dei dati, non in maniera persistente. La maggior parte di questi dati, che servono all’applicazione per essere eseguita, vengono memorizzati nella memoria RAM. Anche il sistema operativo installato utilizza la memoria RAM. Una volta che noi andiamo a spegnere il dispositivo, tutti i dati presenti sulla memoria RAM, che servono esclusivamente per l’esecuzione del sistema operativo, vengono perduti perché la memoria RAM è una memoria volatile. Ad esempio, le applicazioni di video editing, o quelle per creare musica, utilizzano una parte notevole della memoria RAM. Perciò se si installa un’applicazione di editing su un pc con poca RAM c’è il rischio che l’applicazione venga eseguita in maniera molto lenta;
Rete di Calcolatori Una rete (Net in inglese) di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Quindi è la comunicazione tra più macchine. I collegamenti wired Affinché ci sia una trasmissione di dati è necessario un collegamento fisico, che può avvenire tramite cavo (wired) o tramite wi-fi (onde radio). Il più noto e diffuso wired attualmente è il collegamento Ethernet, una famiglia di tecnologie standardizzate per reti locali, sviluppata a livello sperimentale da Robert Metcalfe e David Boggs allo Xerox PARC. Per la connessione WIRED, se si usa un cavo non si possono utilizzare dispositivi oltre i 100m di distanza, altrimenti c’è una perdita di segnale: l’unica soluzione è usare il repeater. Per quanto riguarda il WI-FI (collegamenti wireless) si possono anche connettere dispositivi nel raggio di 500m. I collegamenti Wireless (Wi-Fi) Wireless (dall'inglese senza fili) è un termine utilizzato in informatica e telecomunicazioni per indicare una comunicazione tra dispositivi elettronici che non fa uso di cavi. Sono detti wireless i rispettivi sistemi o dispositivi di comunicazione che implementano tale modalità di comunicazione. Internet e Web sono sinonimi? NO. Internet è un’infrastruttura di rete per permettere la trasmissione di dati, il web è un’applicazione che utilizza internet. TIPOLOGIE DI RETI: LAN ( Local Area Network ) - può esserlo una rete all’interno di una abitazione, con un router che connette diversi dispositivi. MAN ( Metropolitan Area Network ) - sono le connessioni reti metropolitane, per connetterti ad una dimensione cittadina e sono caratterizzate dalla presenza di una dorsale che si estende per tutta la dorsale , a cui possono essere agganciate diverse reti di enti governativi e non. WAN ( Wide Area Network ) - molto più estesa, serve per interconnettere reti presenti in un territorio più ampio. Nel caso di un edificio può essere usata una backbone , che viene agganciata a diversi router, che a loro volta costituiscono una WAN per interconnettere reti a livello governativo con un'area un po’ più ampia. Una rete di calcolatori può essere una connessione domestica che si connette ad una più vasta, ossia quella di internet. Che cos'è internet? Contrazione della locuzione inglese Interconnected Networks, ovvero Reti Interconnesse. Internet è una rete di reti interconnesse; è pubblica, mondiale e accessibile da chiunque. Nato negli anni 60’, quando l’amministrazione americana decise di finanziare un progetto (ARPAnet) per una rete interconnessa che potesse sopravvivere anche in caso di guerra. Internet non è mai stata una rete militare, ma i militari sono alla radice della tecnologia su cui si basa. Per far comunicare due punti tra loro, in una rete di comunicazione è necessario che sia definito un protocollo di comunicazione. Il protocollo di comunicazione che viene usato su Internet è il TCP/IP. Negli anni ’60 è nata l’infrastruttura di rete, mentre negli anni ’70 è nato il protocollo TCP/IP utilizzato per far connettere queste reti. Quindi, inizialmente la tecnologia veniva chiamata DARPA e il primo prototipo sperimentale era l’ ARPAnet , rete che può sopravvivere ad eventuali attacchi nucleari. Un protocollo è un insieme di regole convenzionali che disciplinano il funzionamento di un sistema di comunicazione. Il protocollo è fondamentale, perché deve essere standardizzato, univoco affinché tutti i nodi possano tra di loro scambiare informazioni. Quello utilizzato da Internet è il TCP/IP ( Transfer Control Protocol / Internet Protocol ). Questo protocollo permette di collegare fra loro reti differenti. È peculiare notare come sulla stessa infrastruttura di rete possano comunicare applicazioni differenti tra loro; per esempio, Internet non viene utilizzato solo dal Web, ma con Internet si possono scambiare e-mail (che non si basano sul web, ma utilizzano un protocollo particolare e tramite TCP/IP è possibile inviare e-mail da una parte all’altra del mondo). Quindi, su Internet ci sono diverse applicazioni che possono sfruttare la rete per inviare e trasmettere dati. Vantaggi del TCP/IP:
- svolge il ruolo di ambasciatore; - permette di collegare fra loro reti differenti; - grazie ad esso le università possono connettere fra loro le reti preesistenti in una rete delle reti, una inter-rete che fu detta Internet. Storia di Internet: Internet nasce nel 1974, ma fino agli anni ’80 l’accesso era possibile solo in ambito accademico: i programmi sono complessi e adatti solo agli “smanettoni”. All’inizio degli anni ’90 ci fu una vera e propria rivoluzione che ha permesso a tutti di accedere a Internet, il WEB. Un gruppo di fisici del CERN di Ginevra inventa un nuovo protocollo (lingua) per trasmettere immagini e pagine di testo collegate logicamente tra loro tramite una fitta trama di rimandi ipertestuali. Nasce così il World Wide Web (WWW). Tramite il WWW tutti i computer collegati ad Internet si comportano come un solo gigantesco deposito di informazioni. La maggiore facilità di utilizzo, l’abbattimento dei costi, l’apertura commerciale ha “aperto” la rete a tutti gli utenti. Riassumendo: tre elementi importanti costituiscono Internet: 1. Il mezzo trasmissivo, ovvero la rete fisica che collega i computer. 2. La "lingua", ovvero una serie di regole da seguire. 3. Una volta stabilito il protocollo (ovvero la lingua), non è finita: bisogna, infatti, decidere... l'argomento di cui parlare! Qual è il protocollo del web? (Internet è basato su TCP/IP; ogni applicazione può utilizzare un protocollo specifico.) Il web utilizza il protocollo http. Per comprendere meglio com’è strutturato Internet, ovvero l’architettura di una rete, bisogna immaginarla a livelli :
- alla base c’è il livello fisico , la trasmissione che avviene sul mezzo fisico, reale come il cavo e le onde radio;
- sopra c’è il livello di rete , che utilizza il protocollo IP (Internet protocol);
- sopra ancora, c’è il livello di trasporto , che utilizza, ad esempio, due protocolli, il TCP o UDP;
- sul livello di trasporto abbiamo il livello applicativo , che utilizza un proprio protocollo, che per il web può essere http, per le e-mail SMTP, per lo scambio di file può essere FTP. Quindi, per ogni livello c’è un protocollo e ogni livello ha delle responsabilità specifiche; per esempio, il livello Internet, che si trova al livello fisico, definisce le regole per inviare dei dati da un punto all’altro; sul protocollo di rete abbiamo il livello di trasporto che definisce come queste informazioni devono essere scambiate. Il protocollo di trasporto più utilizzato è il TCP.
Qual è la differenza tra il TCP e UDP (l’altro livello di trasporto utilizzato)? Il TCP ci garantisce che qualsiasi informazione che noi trasmettiamo in Internet sia arrivata a destinazione e che venga ricevuto; l’UDP, pur essendo più veloce, non ci garantisce che tutti i pacchetti arrivino a destinazione. Per esempio: c’è un’informazione generica da inviare da un punto a un altro, e viene divisa in più pacchetti. Il TCP garantisce che tutti i pacchetti giungano a destinazione, seguendo l’ordine con il quale sono stati suddivisi e ricomponendoli nell’ordine voluto. L’UDP invece viene utilizzato soprattutto nelle applicazioni di streaming, dove non è importante l’ordine dei pacchetti (per questo alcune volte ci sono dei frame che saltano), l’importante è che arrivino nel minor tempo possibile. Un’applicazione di posta elettronica utilizza il TCP, perché deve essere sicuro che quel messaggio venga ricevuto a quel destinatario. Al di sopra del livello di trasporto c’è il livello applicativo, quindi le applicazioni. Ogni applicazione sceglie, in base a quello che deve trasmettere, un protocollo di trasporto, che si basa sul livello sottostante, per esempio quello UDP, che ci permette lo scambio di informazioni. Quindi ogni livello ha una sua responsabilità. Il compito del livello di rete è esclusivamente quello di instradare pacchetti, mentre il livello di trasporto ha come compito quello di definire le regole per scomporre l’informazione in determinati pacchetti. Ad ogni livello ci sono dei protocolli che vengono adottati. Il protocollo di Internet è il TCP/IP, perché è la combinazione del protocollo del livello di trasporto più quello del livello di rete. Possiamo vedere Internet come una rete protocollare, dove ogni livello ha delle responsabilità e dei protocolli. I protocolli sono importantissimi ad ogni livello, perché garantiscono la comunicazione. Il destinatario e il mittente all'interno di una rete di computer vengono chiamati host , perché ospitano le applicazioni. Per far comunicare delle reti di computer è necessario che ci siano al centro dei cosiddetti router, cioè dei nodi che possono instradare le informazioni; questi nodi si dicono di secondo livello perché inglobano solamente i protocolli di rete. In questo caso il protocollo di rete è Internet Protocol (IP) (da non confondere con l’indirizzo IP). Affinché un'informazione sopraggiunga ad un altro host, è necessario che venga instradata su diversi router. Come è identificato l’host? Un host è identificato tramite un indirizzo IP. Per fare in modo a due host di comunicare tra di loro, è necessario che si conoscano gli indirizzi IP di questi host. L'indirizzo IP è composto da 4 numeri da 0 a 255 separati da dei punti; è rappresentato da 32 bit e 4 byte (IPv4), quindi possiamo indirizzare fino a 4,3 miliardi di nodi, che sono pochi! Per questo è in corso una transizione a IPv6, ovvero a 128 bit e 16 byte. Gli indirizzi IP vengono assegnati ai nodi, su loro richiesta, da appositi programmi detti server DHCP ( Dynamic Host Configuration Protocol ) che mantengono delle tabelle di indirizzi IP disponibili localmente e li assegnano in modo statico o dinamico nel momento in cui un dispositivo di connette alla rete. I primi 3 dei 4 numeri indicano l’indirizzo di rete, mentre l’ultimo indica gli indirizzi che possono essere assegnati ai dispositivi che si connettono a quella rete. Alla rete a cui è connesso un utente, possono connettersi altri 253 utenti (non 255 perchè uno di questi è il router). La corrispondenza viene conservata localmente da programmi detti DNS Server , che la comunicano su richiesta: ad esempio quando navighiamo in internet tramite il nostro browser, perché non inseriamo degli indirizzi IP per accedere ad esempio al motore di ricerca Google ma invece andiamo ad inserire dei nomi su www.google.it? Quel www.google.it sicuramente verrà tradotto in un indirizzo IP. Chi è che fa questa traduzione? Cioè chi è che esegue la traduzione da un nome ad un indirizzo IP? Questo lavoro lo fa il server DNS che sta per Domain Name System e associa ad ogni indirizzo IP un nome simbolico che è più facilmente memorizzabile dagli umani. TIPI DI RETI Abbiamo due tipi di reti: le reti a commutazione di circuito e le reti a commutazione di pacchetto.
- Una rete a commutazione di circuito è ad esempio la rete telefonica. Si chiama rete a commutazione di circuito perché viene stabilito un percorso tra due host per tutta la durata della comunicazione: il messaggio parte dall’host A e viene suddiviso in pacchetti, ognuno dei quali segue lo stesso percorso per arrivare all’host B, quindi quel percorso viene riservato esclusivamente per quella comunicazione (come una chiamata tra due persone).
- Una rete a commutazione di pacchetto è Internet. In questo caso non vi è alcun collegamento esclusivo dedicato: il messaggio viene diviso in pacchetti che vengono inoltrati individualmente e possono seguire anche percorsi diversi. Anche se uno dei percorsi dovesse essere distrutto/rotto, il protocollo TCP si assicurerà comunque che il pacchetto arrivi a destinazione, instradandolo su un altro nodo o percorso o inviandone uno nuovo al destinatario. Questa è la resilienza della rete , ovvero la sua capacità di adattarsi alla situazione anche nel caso in cui ci siano degli imprevisti. TRASMISSIONE DEI MESSAGGI SU INTERNET Ogni “ data stream " viene spezzettato in pacchetti (i “ datagram ”), corredati di informazioni per la loro trasmissione, fra cui l’indirizzo di mittente e destinatario ( header ). Ogni pacchetto viene inviato singolarmente e segue strade diverse dagli altri. Ogni nodo della rete è individuato da un indirizzo IP. Perché macchine diverse tra loro possano comunicare è necessario stabilire delle convenzioni, una lingua comune: i protocolli ; ce ne sono diversi: HTTP per visualizzare contenuti ipertestuali – SMTP per spedire posta elettronica
- FTP per trasferire file – TELNET per effettuare collegamenti remoti – IMAP , POP ₃ per ricevere le mail. INTERNET: FILOSOFIA DI PROGETTAZIONE Principio di best effort delivery: la rete tratta i pacchetti nel miglior modo possibile, indipendentemente dal loro contenuto, mittente o destinatario. Ad esempio, il protocollo Internet Protocol va ad installare pacchetti senza preoccuparsi del loro contenuto, dell'applicazione che li ha generati o del destinatario; Principio di end-to-end: le funzioni applicative vengono svolte ai nodi della rete e non all'interno della rete stessa, questo perché l'applicazione risiede nell'host che la utilizza, il quale genera dei messaggi da trasferire. In seguito la rete va ad instradare i pacchetti senza dare priorità a nessun tipo di applicazione destinataria; Protocolli gerarchici: le funzioni di trasporto, instradamento e trasmissione sono separate e indipendenti dall'applicazione (semmai l'applicazione sceglie il protocollo di trasporto da utilizzare).
Il protocollo utilizzato per il web è l’ HTTP ( Hyper Text Transfer Protocol ) e sfrutta il paradigma client-server, dove in particolar modo il client è costituito dal browser, che fa partire la richiesta, mentre il server dal server web, che darà il contenuto ipertestuale richiesto dal client. Il pacchetto utilizzato dal protocollo http può essere suddiviso in 2 parti. Innanzitutto, c’è la parte all’interno della quale vengono specificati il method e l’ URL , quindi informazioni importanti, ovvero l’indirizzo al quale vogliamo accedere per raggiungere una determinata risorsa, una pagina ipertestuale. Poi abbiamo una serie di informazioni relative al client, per esempio, che tipo di dispositivo sto utilizzando, qual è il sistema operativo, ecc ... ed informazioni necessarie per l’autenticazione del client, come una piattaforma web. Eventualmente abbiamo anche il body della request , in cui vengono messe tutte le informazioni nel momento in cui inviamo un form al server. Quando inviamo questa request, la richiesta viene presa in carico dal web server che deve necessariamente fornire una response, nella quale è contenuto il codice html che deve essere reindirizzato dal browser. Quando il web server ci invia nuovamente queste informazioni nella response, il method utilizzato è put. Il protocollo HTTP è stateless , ovvero inizialmente non conserva informazioni relative alle richieste che riceve. Si cerca poi di rendere il protocollo http non stateless per far sì che le informazioni relative alla navigazione possano essere utili al client. Ci sono dei meccanismi che rendono queste informazioni conservabili, sono per l’appunto l’Auto Server o l’Auto Client; il protocollo diventa così stateful. Questi meccanismi non sono implementati nel protocollo stesso ma sono implementati per l'Auto Server e Client. Un altro meccanismo che permette l’acquisizione di informazioni utili alla navigazione su una specifica piattaforma web sono i cookies , dati che il Web server ci invia per esempio quando navighiamo in un sito e che vengono memorizzati all’interno del browser. L’utilizzo più comune di questi cookies sono le pubblicità, che sono solitamente inerenti alle nostre ricerche o interessi. CHE COSA SONO: URI, URL, URN? Innanzitutto URL e URN sono delle specializzazioni di URI; URI sta per Uniform Resource Identifier , ovvero qualcosa che identifica unicamente una risorsa. Una risorsa può essere identificata tramite un URL ( Uniform Resource Locator ), cioè un indirizzo web che specifica l’indirizzo della risorsa, oppure tramite un URN ( Uniform Resource Name ) che specifica il nome che stiamo dando a quella risorsa. Esempi di URL sono l’indirizzo web di una specifica risorsa, cosa molto importante è che lo identifica univocamente. Infine, gli URL tendono ad essere lunghi: per questo esistono dei servizi che permettono di fare l’ URL shortening , ovvero di accorciarli (es. bit.ly). Un esempio di URN è l’ISBN ovvero International Standard Book Number, che identifica univocamente per esempio un’edizione di un libro. E’ necessario che vi siano delle tabelle di conversione come DNS che associano un url che abbiamo accorciato. Il linguaggio HTML ci dice com’è strutturata una pagina web e qual è il suo contenuto. Ogni pagina contiene, oltre al suo contenuto informativo, anche “meta-informazioni” che ne specificano struttura e presentazione; queste sono scritte in un linguaggio denominato “ HyperText Markup Language ” (HTML), o anche in CSS (Cascading Style Sheet), che dà lo stile alla pagina web, la veste grafica. Quando noi eseguiamo una richiesta HTTP, il server risponde con una response nella quale è contenuto il codice HTML, che viene renderizzato dal browser. Qualsiasi codice HTML, qualsiasi pagina web non è nient'altro che la renderizzazione di una pagina HTML. Il " rendering " è gestito localmente dal browser, che conosce le caratteristiche del device. Chiunque può scrivere un codice HTML, e lo si può visualizzare con il browser. Infine, il word embedding è la conversione di testo in numeri. Gli scripts permettono di aggiungere della logica alle nostre pagine web in base anche alle interazioni che l’utente ha con la pagina. Gli scripts possono essere client side (eseguiti dal browser e implementati tramite Javascript, una tecnologia che ci permette di aggiungere della logica alla nostra pagina web) o server side (quindi eseguite dal server), che servono a generare delle pagine html e renderle dinamiche. Significa quindi che sul web server c’è magari un database dal quale prendere delle informazioni per poi visualizzarle nella nostra pagina web. Servono quindi sia per recuperare delle informazioni all’interno di un database oppure ad esempio per eseguire dei controlli sui dati che l’utente invia verso il server. Alcuni esempi sono script PHP ( Personal Home Page Tools ) e JSP. W3C: WORLD WIDE WEB CONSORTIUM Per quanto riguarda l’accesso a internet, ci sono dei provider dislocati in varie parti del mondo. È necessario però che ci siano degli standard per l’erogazione di tali servizi: ad occuparsi di ciò è il W3C, fondato nel 1994 da Tim Berners-Lee. L’obiettivo del W3C è innanzitutto far sì che il web sia in continua evoluzione ma anche stabilire degli standard a cui tutti i provider di servizi facciano riferimento. Negli ultimi 10 anni ha preso piede anche l’Internet of Things (internet delle cose), che ha permesso la connessione anche a oggetti come il frigorifero e la TV. Essendo aumentati i dispositivi connessi, è diventato necessario che le pagine dei portali web abbiano risoluzioni differenti in base al dispositivo che si connette. Questo significa che una pagina web
dev’essere reindirizzata in modo tale che questo sia possibile. Grazie alla versione 5 di HTML ( HTML ₅) si può
identificare il device che riceve la pagina, e comporre layout diversi a seconda dei casi ( responsive design : una sola pagina adattata a più device di diverse dimensioni, in cui i “blocchi” vengono “impaginati” in modo differente). Ci sono tre modi per fare in modo che anche dai dispositivi mobile si possa accedere a un particolare sito web:
1. MOBILE “STANDARD” WEB SITE: il web server genera dei contenuti differenti in base alla risoluzione dello schermo; 2. RESPONSIVE WEB SITE: una sola versione che grazie a responsive (HTML₅, CSS₃ ecc.) fa in modo che i contenuti del browser (menu, interfaccia) si adattino automaticamente alla risoluzione dello schermo; 3. APP NATIVA: creazione di un'app disponibile per device specifici e scaricata da un App Store. Tra le tre opzioni, la migliore è la responsive web site, per la quale i costi di manutenzione sono ridotti rispetto alle altre: nel caso del mobile website occorre fare manutenzione su due versioni della piattaforma web (quella standard e quella web), mentre l’App nativa richiede una costosa manutenzione dell’app.
CRITTOGRAFIA E SICUREZZA: cenni storici
- Già nel 450 A.C. si rese necessario il bisogno di permettere alle persone un modo sicuro di inviare messaggi senza che altri ne violino il contenuto. Erodoto racconta la storia di un nobile che fece rasare i capelli ad uno schiavo fidato, gli fece tatuare un messaggio sul cranio, attese fino a quando i capelli furono ricresciuti e lo inviò a destinazione con l’istruzione di rasarsi nuovamente i capelli una volta arrivato. Qui possiamo capire che questo metodo non era efficiente per 2 motivi: 1. per inviare un messaggio bisognava che alla persona ricrescessero i capelli; 2. la testa di una persona non è molto grande, quindi non c’era grande spazio per poter scrivere un messaggio.
- Nel 58 A.C. Gaio Giulio Cesare inventò un cifrario cesariano di sostituzione monoalfabetica, il “ De Bello Gallico ”. che utilizza un solo alfabeto modificato tramite traslazioni o scambi di lettere per cifrare o decifrare i messaggi. Per la crittografia si intende infatti la possibilità di cifrare un messaggio, rendendolo comprensibile solamente tra mittente e destinatario; quindi pur riuscendo ad intercettare il messaggio, nessun altro può capirne il contenuto. Il De Bello Gallico è il cifrario in assoluto più semplice ma all’epoca garantiva un grado di sicurezza molto elevato, anche perché le persone in grado di leggere erano un numero esiguo. Oggi però ci rendiamo conto che è facilmente decifrabile, avendo solo 25 possibili valori della chiave di lettura. Una volta scelta la chiave, che indicava il numero di volte in cui la lettera doveva essere traslata per formare quel messaggio, si traslava la lettera dal chiaro fino al cifrato in modo da ottenere il testo cifrato. Il cifrario monoalfabetico è un miglioramento del cifrario di Cesare: un'ulteriore possibilità per rendere il cifrario di Cesare più efficace è quella di sostituire delle lettere con delle altre. (es. ABCDEFGHIJK... che possono essere cifrate ad esempio con MNBVCXZASDF...) e le possibili soluzioni diventano 26 fattoriale (quindi 26×25 ×24 ecc..).
- Nel 1586 d.c., nel “ Traitédes Chiffres ” Blaise de Vigenerè descrive il primo metodo storico di sostituzione polialfabetica , che è un metodo a chiave singola, privata. La differenza rispetto alla chiave monoalfabetica è che il numero di alfabeti è sempre superiore a uno. I metodi di modifica invece degli alfabeti rimangono i medesimi. Il metodo di codifica è piuttosto semplice: è necessario sommare il valore della lettera del messaggio in chiaro (A=0, B=1, C=2..) al corrispondente valore della lettera del versetto o “verme”, determinando così il valore della lettera codificata. Se il valore eccede la Z, è necessario ripartire dalla A. Fu utilizzato durante la 2° guerra mondiale.
- Nel 1939 d.c., i servizi di intelligence militari tedeschi utilizzarono per le comunicazioni una macchina crittografica chiamata “ Enigma ”. Enigma fu un dispositivo elettromeccanico per cifrare e decifrare messaggi. Nata da un tentativo di commercializzazione poi fallito, fu utilizzata dal servizio delle forze armate tedesche durante il periodo nazista e la 2° guerra mondiale. La facilità d'uso e la presunta indecifrabilità furono le maggiori ragioni del suo ampio utilizzo. Enigma è un'estensione del metodo del cifrario di Vigenère (ma senza una chiave) e può essere munita di 3 rotori. La crittografia utilizzata all’interno di sistemi informatici: CENNI STORICI Nel 1941 viene costruito il Z3 , primo elaboratore automatico non meccanico controllato da un programma da K. Zuse. Nel 1976 l’NSA e il governo americano eleggono un algoritmo crittografico a chiave privata, proposto in maniera non troppo indipendente da IBM, a standard crittografico FIPS federale (DES). Nel 1970 circa, varie persone hanno un'idea rivoluzionaria, la crittografia a chiave pubblica , che permette di evitare lo scambio delle chiavi tra i corrispondenti e rappresenta la tecnologia abilitante per le applicazioni crittografiche moderne. A differenza della chiave privata, con la chiave pubblica ho 2 chiavi, pubblica e privata. Quindi se io vado a codificare un messaggio con la chiave privata, per decodificarlo non devo usare la stessa chiave ma l’altra chiave pubblica. Viceversa io posso codificare un messaggio con la chiave pubblica e per decodificarlo devo usare la privata. Questa tipologia di algoritmi vengono detti a chiave ASIMMETRICA ; quelli a chiave privata vengono detti a chiave SIMMETRICA. Minacce nello scambio di documenti: 1. Il messaggio può essere intercettato da un terzo individuo ed essere modificato prima di arrivare al destinatario. 2. Una persona può inviare un altro messaggio sotto falso nome. 3. Ripudiare un messaggio inviato (negare di aver inviato qualcosa: per rimediare si usa la firma digitale). 4. Il documento può essere intercettato e letto da qualcun altro, mettendo a rischio la sua segretezza. Tutte queste minacce si traducono in proprietà desiderabili nella sicurezza della comunicazione: - confidenzialità;
- autenticazione; - integrità del messaggio e non ripudiabilità; - disponibilità e controllo dell’accesso. ALGORITMI A CHIAVE SIMMETRICA: Esistono algoritmi matematici (detti crittografici) a chiave simmetrica, detti anche a chiave privata o a chiave singola, in grado di cifrare un file e renderlo illeggibile, applicandovi una password di lunghezza predeterminata. Per alcuni di questi algoritmi, utilizzando opportune lunghezze di password (chiave), la violazione della cifratura è impossibile anche con potenze di calcolo enormi. Applicando con la stessa chiave una seconda volta l’algoritmo di cifratura, è possibile decifrare il file. Da questa proprietà discende appunto la denominazione di algoritmo a chiave simmetrica (può essere cifrato e decifrato con la stessa chiave). Alcuni esempi di questi algoritmi sono 3DES, IDEA. L’unico svantaggio è che richiedendo uno scambio di chiavi, ne deriva una mancanza di segretezza e la difficoltà nel gestire la presenza di più utenti, che rende alto il rischio di intercettazione. ALGORITMI A CHIAVE ASIMMETRICA: Esistono algoritmi crittografici che prevedono l’utilizzo di una coppia di chiavi, chiamate rispettivamente chiave pubblica e chiave privata. Tali algoritmi vengono chiamati anche a chiave pubblica o a chiave doppia. Le due chiavi della stessa coppia hanno totale simmetria. Una chiave può decifrare solo ciò che è stato cifrato dall’altra chiave della coppia. Non è necessario lo scambio di chiavi, poiché la chiave pubblica di ogni coppia (che permette SOLO di cifrare e non di decifrare) può essere diffusa e condivisa liberamente. Quindi non è necessario interagire col destinatario per mandargli il messaggio cifrato, ma basta reperire la sua chiave pubblica sul server ed essere sicuri che gli appartenga. Alcuni esempi di questi algoritmi sono DH/RSA. Nonostante sia una chiave con crittografia molto sicura, cifrare e decifrare messaggi richiede un lungo tempo di elaborazione.
Il concetto di Big Data è stato introdotto all’inizio degli anni 2000 da Doug Laney, analista di settore, con la formulazione delle 3 V dei Big Data, alle quali ne sono state aggiunte altre due (quindi 5 in totale). Volume: Quando la quantità di dati è in un volume enorme come Terabyte o Petabyte. Velocità: la velocità con cui i dati fluiscono nel sistema. Ad esempio, milioni di utenti che caricano i loro contenuti sui siti di social networking allo stesso tempo generano dati dell'ordine di un intervallo di Terabyte / sec. Valore: I dati hanno un valore intrinseco. Ma sono inutili fino a quando non viene scoperto quel valore. Variabilità: molti più dati, in diversi formati e provenienti da diversi contesti. Veridicità: è il mezzo con cui otteniamo una visione significativa dei nostri dati disponibili. Questo può essere considerato l'aspetto più importante dei dati poiché la maggior parte delle decisioni aziendali dipende dall'utilità dei dati. Possiamo anche chiamare i big data come Rich-untamed-Data. Big data è un termine per insiemi di dati così grandi o complessi che le tradizionali applicazioni di elaborazione dati sono inadeguate per gestirli. Le sfide includono: – Analisi – Acquisizione – Gestione dei dati – Ricerca
- Condivisione – Archiviazione – Trasferimento – Visualizzazione – Interrogazione – Aggiornamento. I dati variano da strutturati a non strutturati. Un like, share o reazione possono essere dati strutturati poiché ne conosciamo chiaramente la struttura. Mentre gli aggiornamenti o i post sono dati non strutturati che non seguono esattamente una struttura. Tutti questi dati formano i Big Data. Alcuni dei campi che rientrano in quest’ambito sono:
- Black Box Data: è un componente di elicotteri, aerei, jet, ecc. Serve a catturare le voci dell'equipaggio di condotta, le registrazioni di microfoni e auricolari e le informazioni sulle prestazioni del veicolo aeromobile.
- Dati sui social media: i social media come contengono informazioni e opinioni di milioni di persone nel mondo.
- Dati di borsa: contengono informazioni sulle decisioni di acquisto e vendita di una quota di diverse società.
- Dati Power Grid: i dati della griglia di alimentazione contengono informazioni consumate da un nodo particolare rispetto a una stazione base.
- Dati del motore di ricerca: i motori di ricerca recuperano molti dati da diversi database.
- Dati sensore: provengono da dispositivi che lavorano su sensori (dati meteorologici, sismici, oceanici).
- Dati di trasporto: i dati di trasporto includono il modello, la capacità, la distanza e la disponibilità di un veicolo. I DATI STRUTTURATI: Si riferiscono a tutti i dati che risiedono in un campo fisso all'interno di un record o di un file. I dati strutturati hanno un particolare modello di dati. Un modello dei dati è un insieme di concetti utilizzati per organizzare una base di dati e descriverne la struttura in modo che essa risulti comprensibile ad un elaboratore. Possono essere generati da persone o macchine. In passato, a causa degli elevati costi e dei limiti di prestazioni di archiviazione ed elaborazione, i database relazionali e i fogli di calcolo che utilizzavano dati strutturati erano l'unico modo per gestire i dati in modo efficace. Tutto ciò che non poteva rientrare in una struttura ben organizzata doveva essere conservata su carta in uno schedario. I dati strutturati vengono spesso gestiti utilizzando Structured Query Language ( SQL ), un linguaggio strutturato basato su query , specificatamente studiato per la comunicazione con i database. I dati strutturati hanno il vantaggio di essere facilmente inseriti, archiviati, interrogati e analizzati, ma devono essere rigorosamente definiti in termini di nome e tipo di campo (numerico, alfabetico, nome, data, indirizzo) e in qualsiasi restrizione sull'inserimento dei dati (numero di caratteri; limitato a determinati termini). I dati strutturati rappresentavano un enorme miglioramento rispetto ai sistemi non strutturati rigorosamente cartacei, ma la vita non sempre rientra in piccole scatole ordinate. Di conseguenza, i dati strutturati dovevano sempre essere integrati da supporti cartacei o microfilm. Poiché le prestazioni della tecnologia hanno continuato a migliorare e i prezzi sono diminuiti, è stato possibile introdurre nei sistemi informatici dati non strutturati e semi-strutturati. Altri esempi: Main frame, SQL Server, Oracle, DB2, Sybase, Excel, Teradata, SAP, JDE, ERP.
Quali sono le fonti dei dati strutturati? • Dati generati dalla macchina: sono automaticamente creati dai processi informatici, applicazioni web o da altre macchine senza l’intervento umano. Esempi:
- Web server log : sono automaticamente creati e mantenuti dal server che conserva una cronologia delle richieste. - Dati di sensori : radio-frequency identification (RFID), sistema di posizionamento (GPS) - Registri delle chiamate : sono i dati delle chiamate registrati durante le telefonate - Point-of-sale (POS) data : codice a barre dei dati registrati - Dati finanziari : dati della Borsa
- Dati generati dalle persone: dati generati dall’ essere umano in interazione con il computer. Esempi: - Dati input : qualsiasi dato inserito dalle persone come nome, età e guadagno. - Dati di Gaming : dati generati da ogni movimento fatto durante un gioco. - Dati Clickstream: dati generati con ogni click sui siti web. I DATI NON STRUTTURATI: I dati non strutturati (o informazioni non strutturate) sono il tipo di informazioni che non hanno un modello di dati predefinito o non sono organizzate in un modo predefinito. Possono essere dati grezzi (immagini, video) o senza schema (porzioni di testo, tweet...). Poiché la maggior parte dei dati generati oggi sono dati non strutturati, è importante che le organizzazioni trovino modi per gestirli e analizzarli in modo che possano agire sui dati e prendere importanti decisioni aziendali. Se queste informazioni vengono ignorate, le organizzazioni non utilizzano tutto ciò che è a loro disposizione per avere successo. Esempi di dati non strutturati: Audio, foto digitali, file audio, video, linguaggio naturale, presentazione Powerpoint. Invece di fogli di calcolo o database relazionali, i dati non strutturati vengono solitamente archiviati in data lake, database NoSQL e data warehouse. I dati non strutturati stanno crescendo a un ritmo astronomico e molte volte più velocemente dei dati strutturati. Secondo IDG, entro il 2022, il 93% di tutti i dati nell'universo digitale saranno non strutturati. La mancanza di struttura ha reso i dati non strutturati più difficili da cercare, gestire e analizzare, motivo per cui le aziende hanno ampiamente scartato i dati non strutturati, fino a quando la recente proliferazione di algoritmi di intelligenza artificiale e apprendimento automatico non ne ha reso più facile l'elaborazione. Intelligenza artificiale è il ramo della computer science che studia la programmazione e progettazione di sistemi mirati a dotare le macchine di una o più caratteristiche considerate tipicamente umane, che variano dall'apprendimento alla percezione visiva o spazio-temporale. Gli algoritmi di intelligenza artificiale ora aiutano a estrarre automaticamente il significato dai volumi di dati non strutturati che vengono creati quotidianamente. Le aziende utilizzano strumenti e software per big data come Hadoop per elaborare, estrarre, integrare, archiviare, monitorare, indicizzare e creare report sulle informazioni aziendali da dati non strutturati grezzi. Senza questi strumenti sarebbe impossibile per le organizzazioni gestire in modo efficiente i dati non strutturati. Un caso d'utilizzo per i dati non strutturati è l' analisi dei clienti. Quando le aziende sono in grado di integrare dati non strutturati da una varietà di fonti come trascrizioni di call center, recensioni online di prodotti, conversazioni di chat-bot e menzioni sui social media, utilizzano l'intelligenza artificiale per individuare schemi nelle informazioni da queste fonti, così da avere tutte le informazioni disponibili per prendere decisioni rapide che possano migliorare le relazioni con i clienti. Esempi di dati generati dalla macchina: - Fotografie e video : incluso immagini di sicurezza, sorveglianza e dati del traffico. - Dati dei satelliti : incluso i dati del tempo atmosferico come Google earth. - Dati di radar e sonar : incluso dati meteorologici, oceanografici e sismici. - Dati scientifici : i dati atmosferici.
- Esempi di dati generati dalle persone: - Dati social media : Youtube, Facebook, Twitter, etc. - Dati telefonici (cellulare): messaggi SMS. - Dati dei siti web : Ad esempio Instagram. - Dati testuali : ad esempio email. I DATI SEMI-STRUTTURATI: Appartengono a questa categoria i dati raccolti in modo non conforme ai modelli di dati strutturati ma che contengono etichette e marcatori che permettono in ogni caso di individuare una gerarchia. Per dati semi strutturati si può intendere, ad esempio quelli in formato HTML. Non esistono in questo caso tabelle, ma il linguaggio è comunque interpretabile e classificabile. Caratteristiche dei dati semi-strutturati: - Entità simili sono raggruppate e organizzate in una gerarchia. - I dati non sono conformi a un modello di dati ma hanno una struttura. - La dimensione e il tipo degli stessi attributi in un gruppo possono differire. - I dati non possono essere archiviati sotto forma di righe e colonne come nei database. - Le entità nello stesso gruppo possono o non possono avere gli stessi attributi o proprietà. - A causa della mancanza di una struttura ben definita non possono essere utilizzati facilmente. - I dati semi strutturati contengono tag ed elementi (metadati) che vengono utilizzati per raggruppare i dati e descrivere come i dati vengono archiviati. Fonti di dati semi strutturati: - Json ( JavaScript Object Notation ).
- XML e altri linguaggi di markup. - Pacchetti TCP / IP. - Pagine web. - html. Cos’è il Data Mining? Il Data Mining è l'insieme di tecniche e metodologie che hanno per oggetto l'estrazione di un sapere o di una conoscenza a partire da grandi quantità di dati e l'utilizzo scientifico, industriale o operativo di questo sapere. Il Data Mining rappresenta l’attività di elaborazione in forma grafica o numerica di grandi raccolte o di flussi continui di dati con lo scopo di estrarre informazioni utili a chi detiene i dati stessi.
- Machine Learning è una branca dell'intelligenza artificiale che raccoglie metodi sviluppati negli ultimi decenni in varie comunità scientifiche, sotto diversi nomi quali: statistica computazionale, riconoscimento di pattern, reti neurali artificiali, filtraggio adattivo, teoria dei sistemi dinamici, elaborazione delle immagini, data mining, algoritmi adattivi, ecc; che utilizza metodi statistici per migliorare la performance di un algoritmo nell'identificare pattern nei dati. Sebbene fortemente intercorrelati tra loro, il termine machine learning è formalmente distinto dal termine Data Mining, con il quale si indica il processo computazionale di scoperta di pattern in grandi dataset utilizzando metodi di machine learning, intelligenza artificiale, statistica e basi di dati.
- Big data è il termine per descrivere una raccolta di dataset così grande e complessa da richiedere strumenti differenti da quelli tradizionali, in tutte le fasi del processo: dall'acquisizione, alla curation, passando per condivisione, analisi e visualizzazione. Cos’è l’intelligenza artificiale? « L’insieme di studi e tecniche che tendono alla realizzazione di macchine, specialmente calcolatori elettronici, in grado di risolvere problemi e di riprodurre attività proprie dell’intelligenza umana » (T. De Mauro, Grande dizionario italiano dell’uso, Torino 2000). Alcune applicazioni di AI utilizzano tecniche di Machine Learning , ovvero l'apprendimento automatico, che nasce dalla teoria che i computer possono imparare ad eseguire compiti specifici senza essere programmati per farlo, grazie al riconoscimento di schemi tra i dati. Le più recenti applicazioni di AI utilizzano invece tecniche di Reti Neurali Artificiali , ispirate alle reti neurali biologiche del cervello degli animali. In generale una rete neurale è costituita da: - Un opportuno insieme di unità ( neuroni ), ciascuna delle quali, ad ogni istante di tempo, si trova in un certo stato di attivazione, a sua volta dipendente dagli ingressi ricevuti dall’unità stessa; - Un opportuno insieme di linee di interconnessione ( sinapsi ) che veicolano lo stato di attivazione da un’unità agli ingressi di altre unità; ciascuna linea di interconnessione è caratterizzata da un valore numerico detto peso. Il Deep Learning , in italiano apprendimento approfondito, è il ramo più avanzato utilizzato nell’AI. Si tratta di un insieme di tecniche basate su reti neurali artificiali organizzate in diversi strati: ogni strato calcola i valori per quello successivo, in modo da elaborare l’informazione in maniera sempre più completa. Il successo del Deep Learning è dovuto a: – L’incremento dei dati a disposizione, che ormai hanno raggiunto quantità molto elevate; - Lo sviluppo di sistemi di calcolo parallelo altamente performanti basati su GPU (Graphics Processing Unit); - L'ottimizzazione dei metodi di addestramento delle reti neurali, in modo che possano ottenere soluzioni migliori ai problemi che, in passato, hanno impedito ai ricercatori di ottenere risultati significativi. La Computer Vision (o visione artificiale) è un campo dell'intelligenza artificiale che permette ai computer di ricavare informazioni di alto livello da immagini o video digitali, ad esempio il riconoscimento di oggetti. Cos’è Il NLP? Natural Language Processing , un campo di informatica e intelligenza artificiale che consente a persone e macchine di parlare tra loro "naturalmente". Comprende tutti i sistemi che lavorano insieme per gestire le interazioni end-to-end tra macchina e uomo nella lingua preferita dell'essere umano. Esempi: Chatbot e Chat GPT. INTELLIGENZA ARTIFICIALE DEBOLE (AI DEBOLE) Chiamata anche Intelligenza Artificiale Stretta, è un’Intelligenza artificiale specializzata in un'area. Non vi è nessuna vera intelligenza, nessuna consapevolezza di sé. Un esempio è il Tesla Autopilot o l’interpretazione di foto. INTELLIGENZA ARTIFICIALE FORTE (AI FORTE) Detta anche Artificial General Intelligence (AGI) o Human Level AI ; può svolgere qualsiasi compito intellettuale che un essere umano possa fare. Nei film fantascientifici viene vista come una minaccia per il genere umano. IoT (Internet Of Things): L'Internet delle cose èuna possibile evoluzione dell'uso della Rete: gli oggetti (le "cose") si rendono riconoscibili e acquisiscono intelligenza grazie al fatto di poter comunicare dati su se stessi e accedere ad informazioni aggregate da parte di altri. Le sveglie suonano prima in caso di traffico, i vasetti delle medicine avvisano i familiari se si dimentica di prendere il farmaco. Tutti gli oggetti possono acquisire un ruolo attivo grazie al collegamento alla Rete. 4 Trend abilitanti guidano il mercato dell’IoT in vari settori:
- proliferazione e miniaturizzazione dei dispositivi; • disponibilità di grande capacità di connessione;
- basso consumo di energia; • sensori a basso costo.