lOMoARcPSD|12768107 Informatica corso Scienze Statistiche primo anno Informatica (Università di Bologna) StuDocu is not sponsored or endorsed by any college or university Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 STANDARDIZZAZIONE Ci sono vari enti di standardizzazione, il più importante è sicuramente l’ISO, che definisce molti degli standard del mondo moderno: codifiche da usare per i caratteri, come si scrivono date e ore, i nomi delle lingue e delle nazioni, gli script (sistemi di scrittura) … Per quanto riguarda data e ora il formato ISO è: anno-mese-giorno T ora:minuti:secondi,(o punto) decimi di secondi Questa scrittura ha il vantaggio che se ordinate in ordine alfabetico le date risultano anche ordinate temporalmente. Si usa comunemente in Cina, Giappone, Ungheria… Con la localizzazione si adattano i sistemi su scala locale, con la globalizzazione, invece, si cercano di definire sistemi facili da usare su scala globale. Per quanto riguarda la localizzazione viene indicata la lingua, il paese e volendo il sistema di scrittura (es it – IT – Latn it – CH) Per quanto riguarda lingue e nazioni nel sistema ISO si possono indicare con due o tre lettere: Italia e italiano: it oppure ita Latino: la oppure lat Inglese: en oppure eng Lo standard ISO 10646 riguarda la codifica dei caratteri ed è collegato a Unicode. Lo scopo è quello di rappresentare tutti i caratteri usati in tutti i sistemi di scrittura: sono circa 130mila caratteri attualmente, ma periodicamente ne vengono aggiunti di nuovi, come ad esempio € tra 1998 e 1999. Sono presenti tutti i sistemi “vivi” di scrittura, mentre si sta lavorando a quelli antichi. Ogni carattere che noi vediamo è un glifo, un disegno del carattere, mentre nel computer è memorizzato come un codice L’ISO è un ente di standardizzazione internazionale che deve quindi soddisfare dei requisiti politici. Invece Unicode, compilato e aggiornato dal Consorzio Unicode, viene direttamente utilizzato dalle aziende come Microsoft, Google, Amazon… Esistono anche enti di standardizzazione nazionale che hanno autorità, ovvero sono protetti dalla legge, mentre non esiste una legge sovranazionale che obblighi ad utilizzare l’ISO. Tutti questi enti nazionali sono riconosciuti dall’ISO che fa loro delle proposte che devono essere accettate da tutti e solo in quel momento possono essere adottate Se si vuole codificare un nuovo carattere occorre chiedere a Unicode, che se ritiene la richiesta legittima lo trasmette all’ISO che lo deve proporre agli enti nazionali. Una volta riconosciuto la sua messa in pratica viene delegata a Unicode. È un processo che può richiedere anche degli anni Esiste anche uno standard ISO per il sesso anagrafico: 1: maschio 2: femmina 9: non applicabile o non noto Se esiste l’anagrafe abbiamo la differenza tra sesso anagrafico e scelta dell’individuo, se invece non esiste, come nei paesi anglosassoni, il sesso è solo una scelta dell’individuo Altri enti di standardizzazione sono: IEEE, che definisce alcuni standard di uso informatico, in particolare le potenze di 2 (poco utilizzato). Le potenze di 2 si usano per le memorie dei computer, solo che spesso si utilizza 1 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 una terminologia impropria: si usa giga per indicare 2 30 quando in realtà è il prefisso di 10 9. Questo metodo di standardizzazione usa i prefissi ki, Mi, Gi, Ti, Pi. Bisogna però ricordare che i dischi esterni usano il sistema decimale e non quello binario [Per scrivere i grandi numeri posso utilizzare due forme: o lunga: mille, milione, miliardo, bilione, biliardo, trilione… o corta: mille, milione, bilione, trilione… Quindi 1 bilione corrisponde a 109 nella forma corta ma 1012 in quella lunga] SI: Sistema internazionale: ha sede a Parigi ed è un sistema di standardizzazione delle unità di misura: k, M, G, T, P IETF: definisce le regole di Internet (è un’infrastruttura che permette l’interconnessione di sistemi informatici in quasi tutto il mondo) W3C: definisce le regole del web (è un servizio) Non si può giungere alla standardizzazione per ogni cosa, ad esempio gli standard elettrici sono nati prima che si pensasse di renderli internazionali, per questo motivo prese e voltaggi sono diversi a seconda della regione in cui ci si trova. Lo stesso vale per le rotaie La standardizzazione dell’ora a livello nazionale è nata in seguito allo sviluppo delle ferrovie mentre solo in seguito si sono adottati i fusi orari Istat ed Eurostat utilizzano vari codici. L’Istat per comuni, province (c’è una distinzione tra provincia e città metropolitana: i comuni delle province hanno una maggior autonomia), regioni e Stati. L’Eurostat usa NUTS1 (di livello 1, sono macroregioni), NUTS2 (per l’Italia corrispondono alle regioni), NUTS3 (per l’Italia corrispondono alle province) RAPPRESENTAZIONE INFORMATICA DEI DATI Possiamo avere dati numerici, dati testuali o istruzioni. I primi due vengono rappresentati tramite insiemi di stati. Unità fondamentale è il bit (binary digit), che può avere due stati diversi a seconda della presenza o assenza di corrente, tensione, luce… Questi due stati possono essere rappresentati con due valori: 0 e 1, Falso e Vero… (0 e 1 non sono gli stati veri e propri ma solo le loro rappresentazioni) 0100 0001 : i bit si leggono da destra a sinistra: quello all’estrema destra (posizione 0) è il meno significativo, mentre quello all’estrema sinistra (posizione 7) è il più significativo. Nel sistema Unicode questo è il carattere A, mentre se si tratta di un numero decimale è 65 2 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 SISTEMI DI NUMERAZIONE I numeri sono concetti astratti. Parliamo quindi della rappresentazione dei numeri La rappresentazione dei numeri avviene tramite i sistemi di numerazione: numeri romani: ci sono due sistemi, quello latino e quello moderno. Nel sistema latino 4 = IIII, in quello moderno 4 = IV È un sistema estremamente limitato perché rende quasi impossibile scrivere numeri grandi: il simbolo con valore più alto è M, che originariamente era (I), posizionali: a differenza del sistema romano o greco, i simboli utilizzati per rappresentare i numeri hanno un valore diverso a seconda della loro posizione. Il primo sistema posizionale è quello sumero; viene poi riscoperti dagli indiani, da cui prendono ispirazione gli arabi (stesso sistema ma simboli diversi). Arriva in Italia intorno al XIII/XIV secolo Entrambi i sistemi di numerazione utilizzano dei simboli detti cifre. Noi usiamo il sistema di numerazione decimale, ovvero basato su 10 cifre e sull’utilizzo delle potenze di 10 (quello sumero era basato su 6 per le posizioni dispari, 10 per quelle pari, quindi è un sistema in base 60 (sessagesimale) o su base mista 10 e 6). Anche i sistemi amerindi sono su base diversa. Lo 0 è stato introdotto per la prima volta dai sumeri ed è fondamentale perché altrimenti per scrivere 1024 si scriveva 1 24 Le cifre hanno un valore intrinseco, ma messe insieme cambiano significato. La cifra meno significativa mantiene il suo valore, ma man mano che ci si sposta verso sinistra il suo valore cambia Anche i computer fanno riferimento a sistemi di numerazione posizionale, generalmente in base 2 (binario) per motivi tecnici e tecnologici. Esiste però anche un secondo sistema in base 16 (esadecimale): 4116 Per il sistema esadecimale come cifre abbiamo 0 1 2 3 4 5 6 7 8 9 A B C D E F (si possono anche scrivere con le lettere minuscole) AB = 11*160 + 10*161 = 171 Anche il sistema esadecimale è ampiamente utilizzato in informatica. Questo perché si utilizzano i byte, ovvero insiemi di bit (oggi 8 per motivi ingegneristici, ma sarebbe da definire in realtà come un ottetto; in passato sono anche stati 6 oppure 14). Un byte è il più piccolo insieme di bit che può essere indirizzato in una memoria. Per comodità un byte è diviso in due semibyte ciascuno formato da 4 bit Se abbiamo un semibyte 1111, questo rappresenta 15 perché è 2 0 + 21 + 22 + 23. Quindi in un semibyte possiamo rappresentare i numeri da 0 a 15 e da questo proviene la numerazione in base 16. Un byte può assumere 256 valori La lettera a è 0110 0001, se invece è un numero è 61 16 = 9710 = 1*100 + 6*161 (in decimale i numeri sono sempre scritti come coppie es 0116) OPERAZIONI +10 0 1 2 … +2 0 1 0 0 1 2 0 0 1 1 1 2 3 1 1 10 2 2 3 4 … 1+1 = uno-zero tabella con riporto: +2 0 1 3 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) 0 1 10 1 10 11 lOMoARcPSD|12768107 es 10112 + 11012 = 110002 *2 0 1 0 0 0 1 0 1 es 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 * 0 0 0 111102 = 2 + 4 + 8 + 16 = 3010 Passaggio da binario a decimale e viceversa: 0110 0001 = 1*20 + 0*21 + 0*22 + 0*23 + 0*24 + 1*25 + 1*26 + 0*27 = 1*1 + 0*2 + 0*4 + 0*8 + 0*16 + 1*32 + 1*64 + 0*128 = 97 9710 per trasformarlo in binario devo dividere sempre per 2 appuntandomi nella colonna di destra i resti della divisione: risulterà quindi 0110 0001, che sarebbe 61 16 Un byte ci permette di rappresentare tutti i numeri da 0 a 255, per rappresentare 256 in binario devo scrivere 1 0000 0000. In questo caso avrò un overflow in quanto supero la dimensione disponibile per la descrizione di un numero. A questo punto possono presentarmisi due situazioni: o mi viene restituito un errore, oppure risulta che il valore dopo 255 è 0 (in quanto l’1 a sinistra si perde) 97 48 24 12 6 3 1 0 1 0 0 0 0 1 1 Dobbiamo notare che bisogna fare una certa attenzione quando si fanno alcune operazioni. Ad esempio 10/3*3 non è detto che risulti uguale a 10 ma che venga approssimato con 9,9999999…. In questo caso per risolvere il problema basta scrivere 10*3/3. Questo avviene perché mentre nella matematica abbiamo valori veri, ideali, nella realtà abbiamo solo delle stime 4 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 EVOLUZIONE INFORMATICA Quando nasce l’informatica? Con la pascalina (la prima calcolatrice, che, inventata da Pascal verso la metà del Seicento, permetteva di fare addizioni e sottrazioni)? Oppure con la macchina calcolatrice di Leibniz che permetteva di fare anche moltiplicazioni e divisioni? Oppure con il progetto di Babbage che nella prima metà dell’Ottocento progettò la prima macchina che possa essere definita un elaboratore? Questo non venne mai realizzato a causa del costo eccessivo. Il primo programma venne scritto da Ada Lovelace, figlia di Lord Byron e considerata la prima programmatrice della storia Oppure nel 1946 con il primo elaboratore moderno (ENIAC, realizzato dall’IBM), che fa riferimento alla macchina di Von Neumann? In quegli anni si iniziò a chiedersi se si potessero costruire macchine che svolgessero attività vicine a quelle mentali e tra le risposte possibili ci furono la macchina di Turing e quella di Von Neumann, base concettuale di tutti gli elaboratori moderni. L’ENIAC venne progettato per un ex centro di ricerca dell'esercito degli Stati Uniti d'America Forse è esistito un elaboratore inglese precedente, ma i suoi progetti sono segreti e non esiste fisicamente, quindi consideriamo come data iniziale il 1946. Prima del 1946 c’erano le calcolatrici, formate da due componenti fondamentali: memoria e ALU (unità logico-aritmetica). La memoria permette di mantenere i dati; l’ALU esegue delle operazioni logiche e aritmetiche seguendo degli algoritmi. Esistono degli algoritmi che dicono come si fanno addizioni…: l’ALU segue l’algoritmo e il risultato viene visualizzato sullo schermo (e generalmente messo in memoria). La calcolatrice è in grado di fare alcune operazioni, ma non ha meccanismi per fare altro, in quanto gli algoritmi sono cablati (messi lì senza poter essere modificati). Inizialmente le operazioni delle calcolatrici si limitavano ad addizione, sottrazione e cambio segno, poi vennero aggiunte moltiplicazione e divisione per poi arrivare a logaritmi, esponenziali, formule goniometriche… Algoritmo: serie di attività descritte in ordine per arrivare a uno scopo Un possibile algoritmo per trovare la radice quadrata può essere quello basato sull’intuizione che k è radice quadrata di n se k*k = n, inoltre, se a*b = n, allora k sarà compreso tra a e b. Riducendo progressivamente l’intervallo [a,b] si può ottenere k es_ voglio calcolare la radice quadrata di 100 Ipotizzo che sia 1: 100/1 = 100 quindi la sua radice quadrata sarà compresa tra 1 e 100 Ipotizzo che sia 50: 100/50 = 2 quindi la sua radice è compresa tra 2 e 50 Ipotizzo che sia 26 ((50+2)/2): 100/26 = 4 quindi la sua radice è compresa tra 4 e 26 Ipotizzo che sia 15 ((26+4)/2): 100/15 = 7 quindi la sua radice è compresa tra 7 e 15 Ipotizzo che sia 11 ((15+7)/2): 100/11 = 9,1 quindi la sua radice è compresa tra 9,1 e 11 e così via… Von Neumann ha l’idea che abbiamo sempre due parti: memoria e CU (unità centrale). Nella memoria sono contenuti due tipi di informazioni: i dati su cui vogliamo operare e i programmi (descrizione di algoritmi). La CU è suddivisa in CPU e ALU. La CPU è l’unità di controllo del processo: legge il programma e in base a questo acquisisce i dati necessari e li manda all’ALU, che li elabora seguendo gli algoritmi 5 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Von Neumann era convinto che lo scopo dell’ENIAC fosse fare dei conti, ad esempio per l’artiglieria creando tabelle di riferimento per la mira dei cannoni. Non capiva l’esigenza che facessero altro, ma contro la sua volontà fu proprio in quella direzione che si svilupparono i computer. Ciò avvenne perché iniziarono ad essere utilizzati nelle aziende, che pensarono di applicarli ai bilanci. Con i bilanci, però, nacque la necessità di creare degli elenchi di fornitori e clienti in ordine alfabetico: ordinare dei numeri è abbastanza semplice, ma se si tratta di parole è più complicato, soprattutto perché a seconda dei Paesi abbiamo ordini differenti (in particolare per gli accenti, oppure in Spagna tra L e M c’è LL) Parliamo di calcolatore, di elaboratore o di computer. La disciplina che studia come fare i computer è la computer-science. Il termine informatica, che viene utilizzato in moltissimi paesi non anglosassoni, deriva dal desiderio dei francesi di francesizzare i termini inglesi: siccome la computer-science aveva come oggetto la gestione delle informazioni in maniera automatica, si creò una parola da informazione automatica Esistono due tipi di definizioni: intensionale, che è quella che ci dà il dizionario, ed estensionale, che è fatta elencando gli oggetti che soddisfano la definizione Il termine bug deriva da un incidente con l’ENIAC. Inizialmente le macchine occupavano centinaia di mq, consumavano centinaia di kw di corrente e potevano fare solo un milionesimo delle operazioni che può fare un cellulare oggi. Per fare un confronto la velocità dell’ENIAC era di 18Hz (compiva 18 operazioni elementari, come le addizioni, in un secondo), oggi parliamo di giga-Hertz. Comunque, l’ENIAC era un elaboratore a valvole termoioniche: queste valvole si surriscaldavano, rendendo l’ambiente ottimale per gli insetti. Queste valvole avevano una durata limitata, perciò era necessaria una sostituzione settimanale preventiva. Un giorno, coloro i quali annotavano i guasti, scoprirono che un insetto (bug) aveva causato un cortocircuito e così il termine assunse il significato che ha oggi Per quanto riguarda la frequenza, misurata in Hertz, occorre specificare che, se misuriamo il tempo, un secondo avrà la frequenza di 1 Hz, mentre ci sono fenomeni con frequenza maggiore o minore. Ad esempio, lo schermo di un computer è un’immagine che cambia molto velocemente e ha una frequenza di circa 60 Hz Struttura dell’ENIAC La console è un sistema esterno non intelligente, che quindi non elabora dati. Una macchina intelligente fa elaborazioni ottenendo dati con un significato diverso (ad esempio 3+5 = 8, ma non 310 = 0011. La console è costituita da monitor, video, elaboratore tastiera e mouse. L’elaboratore è monoutente, monotask e monoprocessore. Monoutente significa che poteva lavorarci un solo utente, che però al tempo era composto da un gruppo di console lavoro. Monotask o mono processo significa che poteva svolgere un’attività per volta. Monoprocessore significa che aveva un unico processore (CU) costituito da CPU e ALU. Gli elaboratori moderni sono multiutente, multitask e multiprocessore 6 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 CARATTERISTICHE DI UN PERSONAL COMPUTER I computer sono di diverse tipologie: cellulare console videogiochi personal computer workstation computer dipartimentali minicomputer costo € 100 – 2000 300 – 500 500 – 3500 3000 – 20 000 10 000 – 500 000 utenti monoutente 2/3 utenti multiutente monoutente multiutente tipo d’uso personale personale personale aziendale ma personale aziendale multiutente aziendale aziendale mainframe 300 000 – 5 000 000 multiutente supercomputer 1 000 000 – 100 000 000 monoutente serve r serve r serve r Le workstation sono pc specializzati su cui lavora una singola persona Negli anni Sessanta i minicomputer erano i computer più piccoli esistenti, ma oggi non sono più in uso I supercomputer sono costruiti ad hoc con caratteristiche ben precise e utilizzati per la ricerca (la maggior parte si trovano nelle università o nei centri di ricerca). Sono concettualmente più simili all’ENIAC in quanto sono utilizzati per svolgere molti calcoli. Si usano per: previsioni del tempo, studi di aerodinamica, studi su genoma e proteinoma. Un esempio è il supercomputer del Centro Europeo per le Previsioni Meteorologiche a Medio Termine di Reading, pochi chilometri a ovest di Londra. I due calcolatori britannici di Reading ricevono da tutti i Paesi europei informazioni dettagliate misurate a terra e le combinano con i dati raccolti dai satelliti meteorologici. Su queste basi, simulano il comportamento dell’atmosfera su tutto il continente e sui mari circostanti dividendola in cubetti di 18 km di lato. Poi, con complessi modelli fluidodinamici, calcolano previsioni meteorologiche che arrivano a tre giorni accompagnate da stime tendenziali che si possono spingere fino a sette giorni con una sufficiente percentuale di attendibilità. Purtroppo, il centro di calcolo di Reading è troppo piccolo per la prossima generazione di supercomputer che presto dovranno sostituire i due attuali (inoltre il progetto è ampiamente finanziato dall’UE, che dopo la Brexit preferisce averli sul suo territorio). Il Tecnopolo di Bologna ospiterà la nuova generazione di supercomputer meteorologici europei. Questi ultimi riusciranno a simulare l’atmosfera con quadretti 50 volte più piccoli, di appena 5 km di lato. Questa migliore risoluzione permetterà di diramare previsioni attendibili fino a due settimane di anticipo a partire dal 2025. Un personal computer è costituito da due componenti principali: hardware e software. L’hardware è la parte ingegneristica (e materiale) ed è costituito da: famiglia di processori: il termine processore è equivalente a quello di CU: i suoi componenti sono i microchip, parallelepipedi in plastica con dei contatti. Essendo composto da migliaia di transistor occorre che ci sia una superficie metallica per poter disperdere il calore generato. Con famiglia si intende un insieme di processori con ALU simili: ne esistono due che sono 7 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 incompatibili tra loro: INTEL 8086 (x86 e amd64) e ARM (utilizzata nei cellulari). Sono retrocompatibili Le operazioni svolte in un secondo si misurano in GHz, mentre con numero di thread si indica quante attività si possono svolgere in contemporanea (core…). A volte quest’ultimo dato è più importante della frequenza, ad esempio se si lavora con le matrici o comunque se si svolgono procedure statistiche memoria: si divide in centrale e periferica. Quella centrale contiene i dati su cui si lavora e si misura in Gibyte. Quella periferica, invece, si misura in Tbyte e può essere su hd (disco rigido, è più lenta ma costa meno e presenta un disco in movimento) oppure su ssd (disco solido, non ci sono movimenti meccanici ma solo elettronici) GUI (interfaccia utente grafica) rappresenta l’insieme dei componenti esterni all’elaboratore che permettono di interagire con l’elaboratore stesso. È quindi composta da: tastiera (per inserire dati), mouse (per inserire dati, nasce negli anni 60/70), monitor (per visualizzare i risultati), cuffie con microfono. Gli elaboratori personali sono pensati per essere usati da persone non specialiste, mentre elaboratori aziendali e supercomputer sono pensati per degli specialisti; nel primo caso sono quindi fondamentali questi strumenti di interazione con l’utente I software sono programmi di sviluppo e costituiscono l'insieme delle componenti immateriali. È costituito da: sistema operativo (OS): permette di gestire il computer: va a verificare che tasti sono premuti sulla tastiera e in base alla posizione sa che carattere è stato premuto: se deve essere visualizzato sullo schermo produrrà un glifo tramite pixel bianchi e neri. È responsabile di tutti i processi di base (quali processi devono essere fatti e quali core eseguiti…). Fa parte del cosiddetto software di base Per cellulare abbiamo iOS (usato dalla Apple) e Android; la differenza fondamentale è che iOS è migliore ma funziona solo su quei cellulari. Per le console abbiamo fondamentalmente tre ambienti: quello collegato alla PlayStation, l’ambiente Nintendo e quello Xbox. Su pc o workstation abbiamo: Windows (sicuramente il più diffuso), Macintosh (solo macchine Apple), Linux, Chrome OS (non per le workstation, funziona in ambiti didattici semplici: basato su macchine molto economiche) software applicativo: calcolatrice, word processor, spreadsheet… Comunica con le altre componenti del computer attraverso il software di base che fa sì che il software applicativo non debba essere specifico per ogni computer. Il software applicativo può essere locale (legato al computer) o in rete (forme di abbonamento che permettono di avere sempre la versione aggiornata es Office 365) Nel momento in cui un’azienda deve scegliere il software da acquistare deve tener conto del TCO (total cost of ownership), cercando di minimizzarlo. È costituito da costo iniziale, costi di mantenimento, costo dell’uso (quante ore ci si mette a fare un’attività) Quando un software è gratuito bisogna vedere quanto costa come lavoro e capire come fa il produttore a vivere (può averlo fatto per motivi ideologici, per pubblicità oppure si tratta di un software con pubblicità dentro oppure contiene un malware). Un malware può essere un virus, un ransomware (di nascosto modifica i file sul disco e manda un messaggio dicendo che non li puoi usare e devi pagare per poterli usare di nuovo)… La comunicazione in rete può avvenire in due modi: 8 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 reti wired: è una connessione via cavo che avviene tramite ethernet (nome commerciale e registrato, standardizzazione IEEE). I cavi possono essere di rame o in fibra ottica: mentre il rame lavora con gli elettroni (1/10 della velocità della luce), la fibra ottica è molto più veloce reti wireless: è una connessione che non necessita di cavi. La tipologia più comune è sicuramente il Wi-Fi (nome commerciale scelto per somiglianza con Hi-fi, alta fedeltà audio), il cui standard è basato sullo standard IEEE 802.11(lettera). Operano nello spettro elettromagnetico SICUREZZA E PROTEZIONE DEI DATI Sicurezza: solo le persone autorizzate possono accedere o modificare i dati Protezione: fare in modo che i dati non vengano corrotti (rovinati, inutilizzabili) Sicurezza: autenticazione: identificare chi sta accedendo ai dati (persona o software). Ci sono tre metodi diversi: o qualcosa che si sa: nome utente, password, permette di identificarsi in maniera univoca su un sistema) o qualcosa che si ha: ci sono tecniche che permettono di individuare in maniera univoca degli oggetti fisici, ad esempio il cellulare ha una serie di indicatori unici. Esempi sono quando ti mandano un messaggio, quando si paga con il telefono oppure con una smartcard (il codice univoco di telefoni e smartcard non può essere scoperto perché messo in modo che non si veda) o qualcosa che si è: impronte digitali, riconoscimento facciale (è basato su alcuni punti della faccia; i più evoluti sono tridimensionali, quindi non possono essere ingannati con una foto), riconoscimento dell’iride (presenza di irregolarità nella colorazione), riconoscimento della retina (teoricamente possibile ma serve un laser a bassa potenza, che quindi comporta alcuni rischi; viene usato solo in ambito militare), riconoscimento del palmo della mano (tramite telecamera a infrarossi che rileva la variazione di temperatura e riconosce posizione e forma dei vasi sanguigni) L’autenticazione può avvenire anche a doppio fattore quando ad esempio dopo aver inserito una password viene inviato un sms con un numero da inserire come conferma In Italia le persone sono identificate con i dati anagrafici: nome, cognome, data e luogo di nascita, sesso anagrafico. Per l’identificazione univoca abbiamo il codice fiscale. Il suo è PLRLPL52C06C388O. L’ultimo carattere è un codice di controllo derivato da un algoritmo. Il codice fiscale è un codice parlante, ovvero legato all’oggetto a cui fa riferimento: se modifico l’oggetto, il codice parlante deve essere cambiato. Per questo motivo i codici parlanti non andrebbero più usati autorizzazione: verifica delle attività che la persona può fare. Directory: insieme di informazioni che permettono di definire chi può far cosa. È organizzata in unità organizzative, in contenitori e sono individuati i vari utenti, per ognuno dei sono indicate le sue autorizzazioni. Una directory è tipica degli ambienti complessi, come quelli di un’azienda Le password sono spesso attaccate dagli hacker. Ci sono due tipi di attacco: brute force o forza bruta. La maggior parte delle persone usa le 26 lettere e le 10 cifre: si provano a generare con vari algoritmi tutte le password possibili; l’inconveniente è che bisogna fare molti tentativi 9 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 a dizionario: ci sono tutte delle statistiche sulle password più usate al mondo (123456, password): molte sono parole della lingua dell’utente. Vengono provate tutte queste password più comuni finché non si trova quella giusta Quindi le password non devono essere banali, devono essere abbastanza lunghe, devono usare caratteri aggiuntivi rispetto a quelli ovvi (maiuscole e minuscole). Le password sono case sensitive: il termine deriva dal fatto che in inglese maiuscolo e minuscolo si dicono lower e upper case. La cosa migliore è usare le cosiddette passphrase: si tratta di frasi, che quindi sono lunghe, hanno maiuscole e minuscole, spazi, lettere accentate; sono più facili da ricordare e si scrivono più velocemente. 10 anni fa venivano richiesti 6 caratteri quando si creava una password, oggi almeno 8 perché gli elaboratori sono diventati più veloci e quindi trovare password di 6 caratteri è molto più facile per gli hacker Come mi garantisco che i dati non siano rovinati? Esiste un’attività di Disaster Recovery: è obbligatoria per le aziende pubbliche e serve a porre rimedio a disastri fisici (incendi, inondazioni…) o ad attacchi informatici Backup o copia di sicurezza: tutti i dati significativi devono essere conservati in una copia che viene fatta periodicamente (nelle aziende giornalmente; alcune copie vengono conservate, altre cancellate). Locazione del backup: in un posto “distante”, quindi per multinazionali in nazioni diverse, tenendo però conto delle varie normative locali Le copie possono essere locali o su cloud. Locali: lo faccio sul sito di un tipo oppure su disco rigido o su cd o dvd (ma durano circa 5 anni) oppure su NAS, dispositivi che usano tecnologia RAID da 1 a 6 (importanti 1, 5 e 6) che fa sì che il dato sia scritto su più dischi (in caso di guasto basta togliere il disco rotto e sostituirlo con uno funzionante). Cloud: ci sono varie tecnologie tipo OneDrive, Dropbox; può essere utile fare dei backup cifrati se non vogliamo che i nostri dati possano essere letti Dati personali: tutti i dati che possono essere associati a una persona. In Europa sono di proprietà della persona, che ha diritto di vietarne l’uso. Dal punto di vista pratico i dati personali si possono suddividere in dati personali e dati sensibili (sanitari, penali...). I dati sensibili devono essere cifrati. In Italia i dati personali sono nome, cognome, data e luogo di nascita, codice fiscale Il Regolamento Generale sulla Protezione dei Dati (GDPR) è stato proposto dall’UE per rafforzare la protezione dei dati personali di cittadini dell'Unione europea e dei residenti nell'UE, restituendo ai cittadini il controllo dei propri dati personali, semplificando il contesto normativo che riguarda gli affari internazionali, unificando e rendendo omogenea la normativa privacy dentro l'UE. È stato poi preso autonomamente in carico dai singoli paesi dell’UE CRITTOGRAFIA E FIRMA DIGITALE Crittografia significa rendere un’informazione non utilizzabile in senso naturale: la possono usare solo le persone autorizzate. Nasce in ambito militare in modo che se un’informazione viene intercettata non può essere letta. Non è un’idea moderna: già nel mondo greco e romano esistevano tecniche di crittografia: in Grecia prendevano uno schiavo, lo rasavano, tatuavano il messaggio sulla testa pelata e aspettavano che gli ricrescessero i capelli prima di inviarlo. Per quanto riguarda i Romani, invece, Cesare nelle guerre galliche usava un metodo che consiste nel prendere le lettere dell’alfabeto latino spostandole di 3: A=D, B=E, X=A, Y=B, Z=A Il meccanismo della crittografia è il seguente: abbiamo un’informazione che vogliamo trasmettere in forma cifrata, la criptiamo e poi occorre decifrarla: J – C(J) – Jc – C’(Jc) – J Se usiamo anche una chiave, come si fa normalmente oggi: J – C(k’, J) – Jc – C’(k, Jc) -- J 10 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 C e C’ sono funzioni pubbliche (così che gli esperti possano dire se funzionano bene), mentre le chiavi (k e k’) sono riservate: in questo modo si può sapere come è stato criptato ma non si conosce la chiave, che può anche essere cambiata tutte le volte Ci sono due tipi di crittografia con funzioni e usi diversi: a chiave simmetrica: di solito si ha un’unica chiave: k = k’ o comunque k’ deriva da k in modo banale. Si usa una funzione per cifrare e una per decifrare sempre usando la chiave k Ad esempio, se un ambasciatore che deve comunicare con il proprio governo in maniera riservata si porta dietro una serie di chiavi (non può essergli chiesto cosa si porta dietro) Difetto: se uno scopre la chiave può decifrare: la chiave deve essere condivisa tra mittente e destinatario e trasmessa in modo sicuro Vantaggio: gli algoritmi di cifratura e decifrazione sono semplici e poco dispendiosi per quanto riguarda l’operatore, quindi abbiamo degli algoritmi efficienti. Oggi una chiave del genere ha una dimensione di 256 bit (2 256), quindi sono abbastanza brevi a chiave asimmetrica (o pubblica/privata): k è diverso da k’: in realtà k’ è una funzione di k. Però, la funzione inversa è estremamente inefficiente: se è facile con un elaboratore passare da k a k’, passare da k’ a k è estremamente lungo (è una funzione lenta: mentre nel primo caso ci possono volere millesimi di secondo, qui i tempi sono molto molto lunghi). Un esempio semplificato può essere che cerco due numeri primi p 1 e p2 e questa è k, k’ è il prodotto dei due numeri primi; i due numeri primi possono anche essere da 1024 bit (2 1024), quindi k’ sarà di 2048 bit k è la chiave privata, che decifra l’informazione, k’ è la chiave pubblica, che la cifra. k’ è pubblica perché tanto ci vuole talmente tanto tempo per risalire a k, che nel tempo che uno c’è riuscito, ormai la chiave è caduta in disuso Il destinatario del messaggio genera una chiave privata k e la conseguente chiave pubblica k’; il mittente userà k’ per cifrare il messaggio e il destinatario, essendo l’unico a possedere k, sarà l’unico a poterlo decifrare Vantaggio: non è necessario scambiare la chiave privata Svantaggio: i tempi di elaborazione sono molto più lunghi Più è nota la chiave pubblica, più il sistema diventa sicuro. Ci sono tecniche per interferire, in particolare la tecnica dell’uomo in mezzo: l’uomo in mezzo si definisce una chiave h privata e una h’ pubblica: al mittente fornisce come chiave pubblica h’: se è riuscito a ingannarlo può leggere i suoi messaggi e poi restituirli al destinatario con la chiave k’ mittente C(h’,J) uomo in mezzo C(k’,J) h privata h’ pubblica destinatario k privata k’ pubblica Per evitare questo problema bisogna rendere molto pubblica la chiave pubblica Enti di certificazione: raccolgono e certificano le chiavi pubbliche. A questo punto l’ente dice che esiste una chiave tale che è associata alla tale persona o al tale sito. Questi certificati sono garantiti dall’ente stesso e gli enti di certificazione si garantiscono l’un l’altro. Molti certificati sono già inseriti nei nostri computer. Gli enti di certificazione costituiscono un 11 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 mercato: la certificazione è a pagamento e ha una scadenza. Infatti, questi certificati scadono prima che sia possibile trovare una chiave privata sulla base di quella pubblica: durano due o tre anni Usi: o o quando una sim viene attivata, genera al suo interno in modo casuale una chiave privata, tenendo conto di variabili casuali esterne (tempo, temperatura…) e genera poi una chiave pubblica. La chiave privata rimane senza possibilità di uscire dall’interno della sim, mentre la chiave pubblica viene inviata al fornitore della sim. Se qualcuno telefona la chiave pubblica è usata per mantenere l’informazione riservata. Per duplicare una sim servirebbe una chiave privata: per questo diciamo che la sim è identificabile in maniera univoca. Ci sono strumenti molto raffinati che possono leggere le celle di memoria dove è inserita la chiave privata, ma è molto molto molto difficile la connessione tra due siti web: la connessione tra siti web e client dovrebbe essere protetta. Sia sito web sia client hanno una loro chiave privata e pubblica. Il sito web ha una chiave pubblica certificata. Quando andiamo sul sito web, sito e client si scambiano le chiavi pubbliche e il nostro computer può verificare se effettivamente la chiave pubblica è stata inviata dal sito web (verifica il certificato). Per mandare un messaggio al sito web uso la sua chiave pubblica, lui per rispondere usa la chiave del mio computer: solo io posso leggere quello che mi manda il sito web. In realtà questo meccanismo è inefficiente: per renderlo più efficiente si genera e si scambia una chiave simmetrica che viene mandata con la cifratura asimmetrica: a questo punto ci si scambia i dati con la cifratura simmetrica, molto più efficiente. Se non si rinnova il certificato il sito web smette di funzionare https è una variazione di http, che invece va in chiaro Firma digitale: la chiave privata è usata per firmare, la chiave pubblica è usata per verificare la firma. Esiste una funzione di firma che prende documento e chiave privata e genera una firma: F(D,k) – firma Per la verifica della firma abbiamo una funzione F’ che prende un documento (in chiaro o cifrato), la chiave pubblica e la firma e restituisce sì o no (quella firma fa riferimento al documento oppure no): F’(D, k’, firma) – sì/no Possiamo avere la certezza che la firma appartiene al suo proprietario grazie ai certificati, che possono essere o già nel nostro computer, oppure sono stati firmati da un altro ente (magari abbiamo quello nel computer). Le firme di certificato non possono essere falsificate se non in decenni, ma a quel punto il certificato è scaduto RETI E PROTOCOLLI Input è quello che entra nell’elaboratore, output è quello che esce dall’elaboratore L’ENIAC era composto da una parte intelligente e da una console (con due l è il mobile): inizialmente la console era costituita da interruttori (input) e l’output era dato da lampadine, ognuna delle quali era un bit. Per l’input si è passati dagli interruttori alle schede perforate, per arrivare poi alle tastiere e al mouse (informazioni vettoriali, è un puntatore, così come i controller dei videogiochi: sistemi per individuare punti dello schermo) 12 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 L’output è dato inizialmente da lampadine, in seguito da una stampa e quindi da un video (si lavora quindi con tastiera e monitor anziché con schede perforate e stampante; premo tasti, posizione dei tasti mandata all’elaboratore centrale che decideva come doveva essere scritta la lettera sul monitor e quindi restituiva l’informazione; oggi sono operazioni quasi istantanee, allora si poteva aspettare qualche secondo) terminale Un computer multiutente è multitask (più attività contemporaneamente) e introduce protezioni di dati: i diversi utenti possono decidere che gli altri non possono leggerli. La console è un terminale privilegiato che serve per la gestione dell’elaboratore. L’elaboratore centrale è detto generalmente mainframe terminale elaboratore multiutente terminale 13 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) terminale lOMoARcPSD|12768107 DAI MAINFRAME ALLE RETI; INTRODUZIONE ALLE RETI Gli elaboratori successivi presentano un mainframe con degli elaboratori dipartimentali a cui erano collegati i terminali. Nell’elaboratore centrale avvenivano le operazioni in comune. È il cosiddetto modello a stella Sono stati poi inventati i personal computer, che sono così piccoli e a basso costo da poter essere associati a una persona. Ne esce un modello dove i terminali sono sostituiti da pc. I costi sono di poco superiori rispetto a dei terminali, ma si guadagna in efficienza con una migliore distribuzione della potenza di calcolo Una rete di elaboratori cambia la relazione tra di loro. Generalmente si rompe una connessione si ha comunque la possibilità di lavorare grazie alle altre connessioni alternative In realtà le reti moderne hanno questa struttura con al centro un elemento che permette a tutti gli elaboratori di collegarsi tra di loro In una rete abbiamo una suddivisione (basata sul software) in elaboratori client e server: un server, che è sempre acceso, aspetta delle richieste da altri computer e restituisce dei risultati; un client è un programma che fa delle richieste al server. Quest’idea è poi passata nell’hardware Nelle grandi organizzazioni i server tendono a essere specializzati: ogni server ha un solo o pochi software. Un esempio sono i print-server o server di stampa, che gestiscono le stampe. Il server è collegato alla rete ed è collegato poi in vario modo a delle stampanti: la rete manda la richiesta di stampa al server di stampa e questo mette la stampa in coda, così, non appena la stampante è libera, lo stampa. Il print-server può essere collegato a decine di stampanti e utilizzato da decine di utenti. Le stampanti non sono quindi collegate ai singoli computer; se ogni utente avesse la sua stampante avremmo un peggioramento del servizio e un aumento dei costi, in quanto si è obbligati a comprare delle stampanti economiche. Inoltre, le stampanti non farebbero niente quasi tutto il tempo. Con un print-server, invece, le stampanti sono a costo più alto, hanno maggiore velocità, la qualità di stampa è maggiore e si possono avere diverse stampanti a seconda delle esigenze; l’unico problema può essere che magari la stampante non è vicina all’utente Inizialmente le reti erano proprietarie: un’azienda definiva la sua rete con certe caratteristiche elettroniche e di software e se un’altra azienda aveva bisogno della rete la chiedeva all’azienda informatica che le dava la sua. Sono stati definiti poi degli standard per garantire la compatibilità tra fornitori diversi. Esiste ad esempio lo standard Ethernet, nato da un consorzio di aziende che hanno da subito definito degli standard di connessione Reti locali (LAN: local area network) e reti geografiche (WAN: wide area network). Le prime sono pensate per collegare computer di un’azienda in un edificio (se è suddivisa in più edifici si fanno diverse reti locali per ogni edificio): è aziendale, relativamente piccola e omogenea (usano gli stessi standard). Le reti geografiche servono a collegare computer o LAN in un ampio territorio di differenti proprietà. Mentre le reti locali sono aziendali, quelle geografiche sono di provider (es Telecom), che propongono costi molto minori di quelli che avrebbe l’azienda per interconnettere 14 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Le reti locali (es Ethernet, che usa cavi a 8 fili: prendendo due fili alla volta si avrebbero cavi telefonici) hanno distanze inferiori a 100-1000 metri. Una rete metropolitana (MAN) è una rete geografica pensata per fornire una città (abbastanza piccola come distanza coperta) mentre reti geografiche più ampie possono collegare diverse città, stati o continenti. Entrambe le reti possono essere wired o wireless; se wired, quasi tutte le reti locali sono in rame, quelle geografiche in fibra ottica. Divagazione sullo spettro elettromagnetico Protocolli: insiemi di regole condivise utilizzate perché due sistemi possano comunicare. I protocolli di rete dicono come avviene la comunicazione; sono descritti dagli stack (pila): un oggetto di tipo FILO (il primo che entra è l’ultimo che esce). Il contrario degli stack sono le queue (file): oggetti di tipo FIFO (first in, first out) Quando noi parliamo usiamo dei protocolli di comunicazione: distanza tra le persone che parlano, le pause nel discorso per permettere all’altra persona di intervenire o meno A livello informatico abbiamo più protocolli che operano contemporaneamente: OSI (fatto da ISO: la comunicazione tra elaboratori può essere fatta su 7 livelli), oppure Internet basato su TCP/IP (4 livelli). I livelli (layer) sono: livello di accesso alla rete, il livello di rete (in realtà tra le reti), livello di trasporto e livello di applicazione. Il primo è quindi un protocollo fisico, segue quello di Internet, quello di trasporto e quello applicativo. Questi protocolli agiscono in contemporanea. Si parla di stack perché dal punto di vista pratico questi protocolli vengono tolti uno alla volta: se abbiamo un messaggio da trasportare il primo computer aggiunge informazioni di protocollo applicativo, poi quelle di trasporto, poi quelle di interconnessione, poi il protocollo di tipo fisico e tutto questo viene inviato all’altro elaboratore che toglie il livello fisico, le informazioni di livello internet, quelle di trasporto e infine quelle applicative. Il primo protocollo messo è quindi l’ultimo a essere tolto Livello fisico: informazioni di protocollo che dipendono da che tipo di rete stiamo usando (es Wi-Fi, Bluetooth, Ethernet): ci dice chi e quando ha diritto di trasmettere informazioni. Ci dice quindi come facciamo a far sì che i vari dispositivi non interferiscano: se uno sta comunicando e anche l’altro, si accorgono di interferire l’uno con l’altro, interrompono la comunicazione e riprovano poi. In tutti i protocolli fisici esiste un indirizzo univoco del dispositivo: ogni sistema di connessione di rete ha un suo indirizzo fisico univoco in esadecimali. ipconfig/all Se abbiamo una qualsiasi rete locale: scheda di rete, connessione Wi-Fi… quando viene venduto il dispositivo fisico che connette alla rete, il produttore ci mette un indirizzo che non può essere 15 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 modificato (la parte iniziale la usa solo il produttore, la parte finale la mette in modo che non ce ne siano due uguali) Il problema dell’indirizzo (e protocollo) fisico è che funziona all’interno di una rete. Se vado in una rete diversa l’indirizzo fisico non è più utilizzabile. Abbiamo indirizzo fisico di mittente e destinatario che però devono essere nella stessa rete. Nella stragrande maggioranza delle reti wireless è facile intercettare i messaggi rivolti ad altri: infatti, tutti i dispositivi connessi alla rete li intercettano, ma quelli con indirizzo fisico diverso da quello del destinatario lo scartano. Quindi, anche solo in caso di malfunzionamento, il messaggio può essere intercettato Per l’interconnessione di due reti locali uso un router, che collega i dispositivi di una rete con un’altra rete locale o con una geografica. Il router prende i messaggi che vengono da una rete e li manda all’altra rete buttando via il protocollo fisico della rete del mittente e sostituendolo con quello della rete del destinatario Quindi il protocollo fisico viene sostituito ogni volta che si passa per un router. L’indirizzo fisico serve per comunicare all’interno della rete: se passo in un'altra rete l’indirizzo fisico viene modificato e diventa quello del router Livello di Internet, ovvero livello di interconnessione tra le reti (il termine Internet è antecedente alla creazione della rete Internet). A differenza degli altri livelli dove c’erano più protocolli, qui ce n’è uno solo, che regola l’interconnessione tra tutte le reti. Si tratta del protocollo IP (Internet Protocol): l’indirizzo IP del dispositivo permette di individuarlo nell’ambito dell’enorme rete Per capire quanto siano complesse le connessioni tra le reti prendiamo come esempio la rete dell’università di Bologna In realtà a Statistica ci sono varie LAN; tutte sono collegate a una rete di università, che fa capo al CESIA, centro di elaborazione dati dell’università di Bologna. La parte di Via Zamboni è basata su cavi di proprietà dell’università, mentre per collegarsi a ingegneria si usano cavi non dell’università. Il CESIA è anche collegato alle altre sedi dell’università di Bologna, che sono interconnesse grazie a dei fornitori di servizio che affittano una parte della connessione (affittano l’uso dei cavi fino a un certo livello di uso). La parte di Bologna si può definire MAN (Metropolitan area network), che è poi collegata a una WAN. Ogni rete ha il suo protocollo fisico diverso, quindi sono necessari dei router 16 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 CESIA è anche collegato anche a INFN e CINECA che sono di proprietà del Ministero della ricerca. INFN e CINECA fanno parte della rete GARR (Gruppo per l’armonizzazione delle reti della ricerca), che connette quasi tutti gli enti di ricerca italiani pubblici e privati. La rete GARR è interconnessa alla TEN, che collega le reti corrispondenti degli altri paesi europei (permette quindi di interconnettere i vari centri di ricerca europei), ma anche a reti commerciali, come la TIM Si passa quindi da LAN a reti geografiche intercontinentali, che usano satelliti come ponte radio (per collegare con gli Stati Uniti generalmente si parte da Portogallo o Irlanda) oppure cavi in fibra ottica (si preferiscono i cavi sottomarini perché passare per terra crea problemi sia per lo stato in cui si passa, sia per la proprietà della terra) Per comunicare con l’università, il messaggio parte dal mio dispositivo, passa per la mia rete, che ha un router con un provider (fornitore di servizi Internet), che si connette ad altri provider (30-40) fino ad arrivare al computer finale. In una versione semplificata si passerebbe dalla mia LAN, a TIM a GARR a CESIA per poi arrivare alla LAN del dipartimento designato La nascita di Internet è dovuta a finanziamenti del dipartimento del ministero della difesa americano per risolvere un problema strategico per ciò che riguarda un eventuale guerra nucleare. Si voleva sviluppare una tecnologia non sensibile alle radiazioni elettromagnetiche: infatti, grandi quantità di radiazioni elettromagnetiche possono portare a guasti nei dispositivi elettronici. Una tempesta solare di elevata intensità a noi non farebbe niente, ma potrebbe causare un blackout per due o tre giorni; una tempesta solare dell’Ottocento ha provocato corto circuiti e sbalzi di corrente (soprattutto al Nord) nei sistemi telegrafici. Si voleva quindi che la connessione potesse continuare con i dispositivi rimasti: bombe nucleari lanciate a 100/200 km di altezza non uccidono le persone e non distruggono edifici, ma producono una grande quantità di radiazioni elettromagnetiche che distruggono le infrastrutture di comunicazione Tutto ciò ha portato alla progettazione di una rete: ARPANET (Arpa è l’acronimo del dipartimento della difesa che l’ha sviluppato), pensata per connettere 4 sistemi: Pentagono e università americane (per vedere se la rete funzionava). È stata implementata per usi militari e civili. Si è poi scissa in Arpanet, che rimane a uso militare, e Internet, a uso civile L’Indirizzo IP è un modo per individuare tutti gli elaboratori collegati alla rete Internet: permette quindi di rintracciare il computer a cui ci si vuole collegare. Ci sono due tipi di indirizzi IP: IPv4 e IPv6, che fanno riferimento alla versione (esisteva anche una 5 ma è stata utilizzata per fare solo delle prove); nascono a 20/30 anni di distanza per risolvere problematiche diverse. Noi parliamo dell’IPv4 ipconfig La notazione puntata significa che il primo byte ha un valore binario che in decimale vale 192, il secondo vale 168 (ce ne sono 4, quindi ce ne sono 2 32 possibili: circa 4miliardi). Nell’IPv6 abbiamo una scrittura in esadecimali con 16 byte per un totale teorico di 2 128 (circa 3,4*1038, anche se non tutti gli indirizzi possono essere utilizzati). Di questi 16 byte ne vengono mostrati solo 5 mentre gli altri sono tra i due punti e sono 0000 17 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Quando il provider ha bisogno di un indirizzo IP chiede a un’organizzazione internazionale e ottiene un range. In genere gli indirizzi IP sono in range di indirizzi: classe A (10.x.x.x; ce ne sono 127: il primo byte va da 0 a 127; ci sono 2 24 indirizzi), classe B (137.204.x.x; ci dà quindi due byte; sono 2 16 indirizzi), classe C (198.16.1.x; prendiamo quindi 256 indirizzi, anche se 2 non possono essere usati) Oggi ci sono circa 10 miliardi di dispositivi; si possono collegare a internet anche altri oggetti autonomi (IoT, Internet of things, tipo lampadina intelligente, Alexa), quindi il numero aumenterebbe considerevolmente Il router ha un suo IPv4; gli IP locali sono validi solo dentro la rete e non possono essere mostrati al di fuori: sono quelli 10.x.x.x e quelli 192.168.x.x (ma di classe C). Il router, quando gli arriva l’indirizzo interno fa NAT (Natural Address Translation), quindi lo trasforma nell’IPv4 pubblico aggiungendo informazioni riguardo la macchina da cui arrivava Quindi quando il messaggio arriva al router, questo toglie sia IP sia protocollo fisico e li sostituisce rispettivamente con l’IP pubblico e con il protocollo di destinazione Livello di trasporto: ci sono più protocolli. Il più utilizzato è TCP, che garantisce il trasporto del messaggio: se devo trasportare un messaggio grande, questo viene suddiviso in pacchetti, la cui dimensione può essere variata. Ogni pacchetto che viene spedito ha un suo indirizzo fisico e indirizzo IP. Per come funziona Internet l’ordine di arrivo dei pacchetti potrebbe non essere quello corretto. TCP gestisce la divisione in pacchetti: quando il messaggio arriva a destinazione bisogna essere in grado di riordinarli; se un pacchetto non arriva viene richiesto di nuovo di trasmettere quello specifico pacchetto. TCP gestisce quindi il modo in cui la comunicazione avviene tra i due dispositivi Limiti: non è Real Time, quindi non garantisce l’arrivo del messaggio in un tempo predefinito perché dipende da come funziona la rete. Mentre il TCP garantisce se il messaggio arriva oppure no (se manca un pacchetto non è arrivato), nel Real Time non viene garantita l’integrità di tutti i pacchetti ma solo il tempo di trasmissione. TCP serve per comunicazioni in cui l’integrità del messaggio è fondamentale, Real Time si usa quando non importa se una parte viene persa, basta la velocità Nel sistema di Real Time non si distingue tra livello di trasporto e applicativo, quindi si lavora solo su tre livelli. Esempi di Real Time sono VoIP (Voice on IP; alcuni usati da gestori telefonici, altri da informatici), ovvero comunicazioni vocali: i pacchetti inviati sono utilizzati per produrre suoni dal ricevitore. Se un pacchetto non arriva in tempo viene tolto: la voce è ridondante, quindi un suono viene ripetuto più volte, perciò, se manca una piccola parte della voce, siamo comunque in grado di ricostruire il messaggio vocale; se il pacchetto arrivasse in ritardo creerebbe invece dei problemi Sempre in Real Time è IPTV, il sistema di trasmissione video tipo Netflix (ha un suo protocollo). È quindi la televisione su IP; anche in questo caso se perdo un pezzetto non importa, ma se arriva in ritardo è un problema (buffer: dispositivo di memorizzazione in cui vengono accumulati provvisoriamente i dati che sono trasferiti da un’unità di elaborazione a un’altra avente velocità di elaborazione inferiore alla prima: si hanno quindi i tipici tre secondi di ritardo) Internet ha avuto tre fasi esplosive: dalla ricerca alle aziende: con la diffusione della posta elettronica (non è l’unico sistema che si diffonde ma è quello che ha più visibilità) si possono connettere diverse aziende. Prima di Internet le aziende avevano dei sistemi informativi usati per le esigenze interne aziendali 18 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 delle aziende alle persone: la nascita del web, che permette alle persone di acquisire informazioni da aziende o altre persone in modo semplice. Questa fase si ha negli anni Novanta dalle persone alle cose (IoT): le aziende sono centinaia di milioni, le persone sono miliardi, le cose sono decine/centinaia di miliardi. È una rivoluzione ancora in corso Internet è un’infrastruttura che permette la connessione, che avviene tramite i protocolli di base. Invece, posta elettronica, Web e IoT sono dei servizi applicativi, che sono basati sui protocolli di base e sono utili a chi usa Internet Posta elettronica: in realtà nasce prima di Internet Quando abbiamo un mainframe, questo dà a ogni utente il suo spazio, dando delle autorizzazioni che sono in parte sotto il controllo del sistema operativo e in parte sotto il controllo degli utenti (non si può vedere o modificare quello che fanno gli altri). In un mainframe le persone devono anche poter comunicare trasferendo file da una persona all’altra che lavorano su due terminali differenti Nella versione elementare, nell’ambito del sistema operativo si costruisce un’applicazione e si riserva, nello spazio dedicato a ogni utente, una sezione dedicata a questa comunicazione (mailbox). Perché A possa mandare un messaggio a B è necessario che A mandi un messaggio all’applicazione, che lo manda poi al ricevente, inserendolo nella sua mailbox. L’utente A deve quindi poter accedere all’applicazione, alla quale deve dare il messaggio ma anche informazioni circa il recapito, in modo da poter entrare nel “recinto” dell’utente B: deve esistere quindi un protocollo di comunicazione. Questi protocolli sono quindi antecedenti alla nascita di Internet e dei suoi protocolli e nascono con lo scopo di collegare le persone di un’azienda che lavorano sullo stesso mainframe Con il tempo si passa al termine posta elettronica (abbreviata in email). I dati trasmessi sono inizialmente solo testi, poi il meccanismo si evolve permettendo di inserire anche degli allegati. Inoltre, inizialmente il messaggio posto nella mailbox era inizialmente passivo, quindi non poteva fare niente Le informazioni che permettono il recapito sono detti header e devono avere un formato particolare (per questo nasce l’idea di un protocollo). Le informazioni principali degli header sono mittente e destinatario. Tutti i programmi per la gestione della posta elettronica (client) nascondono gli header: li posso trovare andando su un messaggio, file, proprietà Gli header sono molto lunghi perché il messaggio passa per molti server 19 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Abbiamo anche il tipo di contenuto e l’oggetto Ogni messaggio inviato ha un suo identificatore univoco piuttosto complicato È anche presente la lingua e altre numerose informazioni Noi di tutte queste informazioni vediamo oggetto, destinatario, mittente, destinatari associati (cc); i destinatari associati inseriti con ccn non sono visibili Gli header sono generalmente in chiaro (sono testuali) e possono essere modificati, in particolare è molto facile falsificare l’informazione dell’header from (bisogna andare a vedere l’header con tutte le informazioni specifiche) Quando si lavorava su mainframe i diversi utenti si riconoscevano tramite nickname, ovvero il nome pubblico che la persona ha all’interno del sistema. Nel momento in cui colleghiamo due mainframe possono esserci persone con nickname uguali: si decide di usare l’SMTP (Simple Mail Transfer Protocol, è il protocollo legato all’applicazione che invia i messaggi) introducendo il nome del server. Per identificare i computer c’era già l’IP, che però è poco pratico da ricordare: si decide di associargli quindi un nome, il DNS (nome di dominio) nslookup Dice server non autorevole perché non è quello con cui stiamo lavorando Cercando Google si vede un IPv6; cercando Microsoft si trovano diversi IP perché ci sono molti server diversi per rispondere alle richieste La mail di un utente è identificata da un nickname (che è anche il nome della mailbox) e da un DNS. Per convenzione si usa una @ per separare nickname e DNS: quindi la chiocciola si inizia a usare solo nel momento in cui si usano i DNS Il nome di dominio di primo livello è quello più a destra: i domini di primo livello danno i nomi a quelli di secondo livello e così via. Quelli di primo livello possono essere nazionali o non nazionali: le sigle nazionali sono derivate dagli standard ISO e sono sempre a due lettere (.it .au .de …), quelle non nazionali hanno più lettere (.gov, per le organizzazioni governative americane, .org, per organizzazioni senza fini di lucro, .com, .net) Ci sono delle aziende private, dette generalmente register, che si occupano delle registrazioni dei nomi di dominio grazie a contatti con le autorità di primo livello. Un esempio è Aruba.it (se ci metto 20 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 un dominio già esistente posso sapere di chi è e varie caratteristiche tipo la lingua, l’azienda che ha fornito il dominio di secondo livello). Ci sono delle regole per cui non posso chiedere nomi di dominio uguali a un trademark Funzionamento della posta elettronica Il server SMTP ha delle mailbox da dove vengono inviate le mail: questo server controlla se siamo effettivamente noi a mandare il messaggio e poi è lui che lo manda. I messaggi oggi sono cifrati, quindi non possono essere intercettati durante la trasmissione I client di posta elettronica sono programmi per la gestione della posta elettronica personale. Il client si collega al server SMTP per la spedizione; per leggere i messaggi (contenuti nella mailbox del server SMTP) ci sono vari sistemi: ci si può collegare con terminale come si faceva con i mainframe (i moderni SMTP non lo permettono per motivi di sicurezza) web mail si usa un client, che usa il server SMTP per inviare e scaricare i messaggi Per inviare i messaggi il protocollo è sempre SMTP, per riceverli invece ce ne sono diversi: POP (il più vecchio: Post Office Protocol), IMAP, Exchange Problemi della posta elettronica: SPAM: consiste nel mandare messaggi non voluti, soprattutto pubblicità. Il nome deriva dal marchio di carne in scatola di basso costo che per un certo periodo (negli anni 70/80) venne fortemente pubblicizzato e preso in giro in uno sketch. Col tempo gli spam sono stati regolamentati con delle normative: ad oggi è illegale farlo. Ad oggi l’80/90% del totale di messaggi è spam. Quando il sistema si accorge che si spediscono decine di messaggi l’ora disattiva la posta elettronica e la si può riattivare solo con una procedura poco agevole Phishing: far finta di essere un’azienda per ingannare il destinatario e scoprire i suoi dati Inizialmente le mail erano solo testuali, poi è stato possibile allegare oggetti non testuali, il che ha però portato un problema: gli allegati possono essere maligni e trasformare il computer in un computer zombie. Un computer zombie ha un programma che non fa nulla, ma che quando gli viene richiesto si attiva e compie attività illegali: sono spesso usati per attacchi ad altri sistemi. Lo spam arriva generalmente da computer affidabili che sono stati trasformati in zombie e quindi inviano questi messaggi Web: nasce tra la fine degli anni 80 e l’inizio degli anni 90 per un progetto sperimentale del CERN di Ginevra, principale centro di ricerca sul nucleare con collaborazioni da tutto il mondo. Per ognuno degli eventi vengono salvate le immagini, quindi è questione di gestire, produrre, generare e condividere Tbyte di dati. In quel periodo un ricercatore ha proposto un sistema per l’analisi e la condivisione dei dati. A differenza di Internet, che nasce per effetto di una ricerca militare, qui abbiamo una ricerca di tipo civile Bisogna definire tre componenti, che sono anche alla base del web attuale: protocollo: si usano i protocolli di basso livello di Internet. Inizialmente era pensato per la condivisione di dati in ambito fisico tra professionisti e ricercatori, quindi non era perfetto per le esigenze successive. Questo protocollo è HTTP (Hyper Text Transfer Protocol): è pensato per la condivisione in Internet di ipertesti. Un ipertesto è l’evoluzione di un testo: a partire da un testo, immagini e altri testi, collegandoli si ottiene un ipertesto linguaggio: HTML (Hyper Text Markup Language) 21 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 sistema per individuare le risorse. Nel progetto iniziale le informazioni erano in posti diversi ed era necessario che lavorassero come un tutt’uno. Venne quindi inventato l’URL (Uniform Resource Locator) http è uno dei protocolli applicativi utilizzabili: non è RealTime, ma si preoccupa moltissimo che il dato arrivi in modo corretto non è un protocollo di sessione: nel momento in cui faccio una ricerca per visualizzare una pagina e poi su questa pagina clicco un link, queste due azioni sono indipendenti. Farle gestire come un tutt’uno richiede qualche complicazione in più non è pensato per la sicurezza, quindi in ogni punto intermedio è possibile intercettare quello che una persona sta facendo e modificarlo Per poter avere RealTime bisogna usare un altro protocollo Il problema del protocollo di sessione si supera grazie ai cookies: il sito web chiede al browser di scrivere un cookie e di conservarlo e ogni volta che siamo collegati al fornitore di servizi rimandiamo lo stesso cookie, in modo che il sito sappia che siamo sempre noi. Sono quindi informazioni gestite dal nostro browser e che vengono mandate come header. I cookies sono molto criticati perché possono essere utilizzati per individuare le nostre abitudini. I cookies tecnici sono per il funzionamento del sito web, come ad esempio quelli per il carrello di Amazon. Altri invece vengono utilizzati per la profilazione degli utenti, che permettono di ricostruire a posteriori i siti che visitiamo; possono quindi essere utilizzati per capire quali sono i nostri gusti e preferenze. Questo può essere un vantaggio perché ci verranno mostrate le cose che ci interessano, ma se vogliamo avere delle informazioni differenti saranno più difficili da ottenere. Questa sorta di spionaggio è detta profilazione. Una normativa definita dall’UE dice che bisogna sempre segnalare che si usano dei cookies e quali sono i motivi. Per quanto riguarda la sicurezza è stato sviluppato l’HTTPS, con il quale le informazioni avvengono in forma cifrata. Il browser cerca sempre di collegarsi in https, se invece il protocollo di sicurezza non è presente ci avvisa che stiamo passando a una connessione non sicura L’URL è un sistema per identificare su Internet le risorse. Si è anche evoluto in URI (Uniform Resource Identifier) e URN (Uniform Resource Name). È una stringa (una successione di caratteri) che non può contenere spazi e che segue un certo numero di regole di formazione La prima parte dell’URL è lo schema, che è separato dal resto dai due punti e ci indica il meccanismo (il protocollo) per raggiungere quella risorsa. Gli schemi più comuni sono http, https, ftp (file transfer protocol: con upload e download trasferisco file su o dal server; è un protocollo storico in fase di abbandono). Un altro schema è mailto, che indica che alcune cose devono essere fatte tramite la posta elettronica: usando questo schema si predispone un collegamento con il client di posta elettronica per inviare un messaggio. Ci sono altri schemi che però è difficile incontrare perché sono usati per esigenze tecniche Quello che segue lo schema dipende dallo schema stesso. Lo schema mailto è seguito da un indirizzo di posta elettronica. Lo schema http(s) è seguito da informazioni che permettono di raggiungere un sito: //<nome di dominio>/<path-percorso>/<nome di una risorsa> Molte di queste parti sono facoltative e i browser (programmi specializzati per accedere alle risorse del web) aggiungono nome di dominio, percorso o nome di una risorsa facendo ipotesi sulle informazioni. Se ad esempio scrivo unibo.it il browser assume che lo schema sia https, non gli cambia che non ci siano i due punti e //; se nessuno gli risponde prova con lo schema http. Il browser indica la lingua privilegiata. In alcuni casi abbiamo nel percorso it – it, che indicano lingua e paese: le pagine sono visualizzate in italiano secondo le regole usate in Italia. Il nome di una risorsa può essere seguito da #, se stiamo cercando una posizione nella risorsa, che di solito è un punto all’interno della 22 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 risorsa stessa, o da ?, che indica un’interrogazione, un meccanismo di approfondimento. Siccome l’URL non può contenere spazi, questi sono sostituiti da _ ; altri caratteri che non possono apparire nel nome sono # e / Al posto del nome di dominio potrebbe anche esserci un IP. In quasi tutti i casi il www che precede il nome di dominio è facoltativo e non sempre è presente, ad esempio Wikipedia non lo usa, ma al suo posto mette la lingua utilizzata [Un indirizzo è qualcosa che permette di raggiungere un’informazione, ma ce ne sono di diversi tipi: indirizzo IP, indirizzo di posta elettronica…] Linguaggi Per parlare dei linguaggi è necessario prima introdurre il concetto di codice: se abbiamo trasmettitore e ricevitore, per farli comunicare si apre un canale di informazione e si usa un segnale, che non è un’informazione, ma è qualcosa che la codifica. I segnali sono oggetti fisici, mentre i significati sono oggetti metafisici. Il mezzo (o medium) è l’ambiente fisico in cui un segnale viene trasmesso. Perché il segnale possa passare è necessaria una parte che faccia la codifica e avvii la produzione del segnale; dall’altra parte è necessaria una base di ricezione che deve decodificare il segnale I problemi possono essere di codifica, di produzione o dovuti alla presenza di rumore (in quanto il mezzo è condiviso). Il problema di un sistema di codici è che il numero di segnali che si possono inviare deve essere limitato, perché se fossero troppi si confonderebbero gli uni con gli altri. Sistemi di codifica che superano i 100 segnali sono rari. La comunicazione avviene a tutti i livelli, le uniche necessità sono sistemi di codifica e decodifica e di produzione dei segnali Tra i segnali e i significati esiste una corrispondenza che è quasi 1:1. L’idea geniale che sta dietro un linguaggio è che i segnali possono essere segnali elementari privi di significato I linguaggi, che sono tipici degli umani, cercano di sviluppare delle modalità aggiuntive per una comunicazione oltre a quella dei codici. I segnali elementari che sono privi di significato di per sé, ma che vengono articolati ( I articolazione) in segnali complessi, che hanno significati elementari. Nei linguaggi naturali possiamo identificare i segnali elementari con i suoni alfabetici e i significati elementari con le parole. Con la II articolazione i significati elementari diventano significati complessi (nei linguaggi naturali avremmo le frasi) I linguaggi possono essere naturali o artificiali. I linguaggi naturali si imparano nei primi anni di vita in un modo che non è ancora del tutto chiaro, sono normalmente linguaggi orali; di conseguenza un linguaggio orale si può definire estinto se nessuno lo impara più nei primi anni di vita. I linguaggi artificiali sono stati inventati dagli esseri umani e possono essere scrit (si cerca di riprodurre il più possibile i linguaggi naturali). I linguaggi artificiali si articolano in alfabetici, sillabici o ideografici 23 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Il linguaggio nasce per la comunicazione di due individui che condividono uno spazio (medium comune). Mentre in un sistema di codici si manda un segnale alla volta, in un linguaggio si mandano molti segnali. Un linguaggio naturale è spesso associato all’invio di codici: intonazione della voce, segnali visivi... Inoltre, c’è una retroazione (feedback): il destinatario è in grado di inviare a sua volta messaggi per chiedere informazioni e approfondimenti. La comunicazione linguistica è sempre una sola: non si possono seguire due discorsi contemporaneamente, ma si può provare a sentire un po’ uno e un po’ l’altro sperando di ricostruire le parti mancanti; i codici possono essere invece molteplici e contemporanei. Nel linguaggio scritto abbiamo un dispositivo di memorizzazione (buffer) in cui chi comunica trascrive quello che sta dicendo sotto forma di simboli codificati. Chi riceve il messaggio è in grado di riconoscere i simboli e ricavarne il significato. Non si possono mandare codici aggiuntivi e non ci può essere feedback. Il vantaggio è che possiamo avere una stabilizzazione della conoscenza, che permette di mantenere la conoscenza nel tempo Comunicazione scritta e orale sono molto diverse: trascrivere un testo orale fa perdere informazioni, mentre la lettura di un testo scritto è critica dal punto di vista della comunicazione. Per superare la barriera del linguaggio scritto sono stati inseriti i segni di interpunzione, che comunicano informazioni non linguistiche. Sono stati poi inventati dei sistemi per registrare e riprodurre i fenomeni fisici (voce…): si parla di multimedialità. La multimedialità diventa possibile quando i fenomeni fisici sono conosciuti in maniera tale da poter essere riprodotti. Con la multimedialità si supera il problema del non poter inviare codici aggiuntivi. Per quanto riguarda il problema della retroazione, questa viene attualmente simulata facendo sì che il ricevitore faccia una richiesta, che però non va direttamente alla fonte originale (ad esempio questa potrebbe non esserci più), ma a un sistema che gestisce i feedback e dà delle risposte: si tratta degli ipertesti. Sia per la multimedialità, sia per l’ipertestualità sono necessarie delle macchine in grado di elaborare le informazioni e di comportarsi di conseguenza: nella multimedialità perché la conservazione dell’informazione ne richiede l’elaborazione e nell’ipertestualità perché è necessario rispondere alle richieste. Il sistema ipertestuale più diffuso è il web perché abbiamo varie pagine interconnesse Abbiamo quindi codici, comunicazione linguistica orale (molto più evoluta dei codici), comunicazione scritta (che permette di muoversi nel tempo e nello spazio) e ci sono i sistemi multimediali e 24 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 ipertestuali, che implementano la comunicazione scritta con le parti in difetto rispetto alla comunicazione orale I linguaggi artificiali possono essere anche inventati a scopo ludico (Tolkien) o scientifico. Esempi possono essere l’esperanto o l’interlingua, che vogliono essere indipendenti dalle culture. I linguaggi naturali sono ambigui … Tra i linguaggi artificiali abbiamo i linguaggi informatici, che sono linguaggi scritti. In informatica abbiamo una grande quantità di linguaggi che si possono suddividere in due famiglie: linguaggi di descrizione, che descrivono qualcosa (HTML e CSS), e linguaggi di programmazione, che definiscono dei programmi, quindi attività che risolvono dei problemi (Javascript e R) Linguaggi di programmazione Risoluzione dei problemi Modello matematico Variabili Linguaggio principe Procedurali imperativi Modo verbale imperativo con istruzioni e comandi Macchina di Von Neumann Sì Procedurali funzionali Funzioni Logico descrittivi Modo verbale indicativo λ calculus Calcolo dei predicati No Lisp (list processing) No Prolog (programmation logique) Per quanto riguarda i linguaggi dei procedurali operativi, inizialmente abbiamo i linguaggi macchina. Si arriva poi agli assembler e quindi a fortram, cobal, basic e Pascal. L’evoluzione successiva è C (prima aveva progettato A e B), i cui linguaggi derivati sono linguaggi a oggetti Java e C sharp sono molto simili tra loro. Invece, la derivazione di Javascript ed R (oggi molto utilizzato per i report statistici) è più particolare Ciclo di vita del software Analizziamo il ciclo di vita del software associato ai progetti informatici ad hoc, per come sono richiesti da un’azienda. Leggermente diverso è il caso dei software pensati per essere commercializzati Le persone coinvolte sono: chi lo richiede, chi lo progetta (scelto sulla base di un rapporto fiduciario) e chi lo realizza (scelto per motivi economici). Queste tre parti dovrebbero essere separate perché: chi fa la richiesta non ha le idee sufficientemente chiare e deve perciò rivolgersi a persone specializzate chi progetta il software tende a ragionare sulle tecnologie disponibili, mentre chi lo realizza sulle tecnologie con le quali ha maggiore esperienza Le varie tappe sono: 1. analisi dei requisiti: si decidono quali sono le caratteristiche che deve avere il software sulla base delle esigenze di tutti i giorni, ma anche delle esigenze eccezionali. È compiuta da chi richiede e da un progettista, che generalmente viene pagato una percentuale sul costo totale 25 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 2. 3. 4. 5. 6. del software. Lo scopo del progettista è quello di individuare quali siano le vere richieste, in quanto, essendo un esperto, si rende maggiormente conto di quali siano Una percentuale significativa dei software fallisce perché i requisiti non sono stati definiti in modo chiaro. Sempre in questa fase si definiscono i test, ovvero prove che il software deve superare per essere in grado di rispondere alle esigenze definite analisi funzionale: si cercano di organizzare le caratteristiche necessarie in un progetto. Questa fase riguarda prima l’architetto del software e poi gli analisti (generalmente ingegneri elettronici; chi analizza i vari elementi di una procedura di lavoro o di un sistema per ricavarne gli elementi utili al suo razionale trattamento da parte di un calcolatore elettronico). Per il progetto vengono definiti dei documenti tecnici, sulla base dei quali si verifica chi è in grado di realizzare il software, e si cercano i fornitori, ai quali si affiderà la programmazione programmazione: qui entrano in gioco i test, per verificare che il software finale risponda ai requisiti iniziali. Se non vengono superati ci si chiede se gli errori riguardano la programmazione (risolvibili nel breve periodo), oppure se riguardano l’analisi funzionale o dei requisiti. Ogni volta che si torna indietro di un passaggio i costi aumentano di un ordine di grandezza; gli errori più costosi sono quelli nell’analisi dei requisiti: per questo motivo è un’analisi che viene condotta con un esperto rilascio del prodotto manutenzione: riguarda il 60/80% del costo totale. È normalmente divisa in: o manutenzione ordinaria: mantiene il software funzionante risolvendo bug e adeguando il software alle nuove normative, rinnovando i certificati. Per quanti riguarda i bug, si stima circa un errore ogni 100 righe di programma (i programmi sono generalmente da 100mila righe, mentre un sistema operativo può arrivare anche a 10 milioni); i bug non hanno effetti sul comportamento del programma e sfuggono ai test, ma vengono fuori in situazioni eccezionali Dal punto di vista contrattuale, di solito si prevede un costo annuo percentuale sul costo del software, che di solito è intorno al 5/10%. Di solito se ne occupa il fornitore e il costo aumenta con l’età del software, perché la manutenzione diventa sempre più complessa (ogni volta che si corregge un errore si rischia di commetterne altri). I costi possono essere ancora più elevati se non ci si rivolge al fornitore originale Non essendo un oggetto fisico, il software non ha garanzia, perciò, in Italia, si inizia a far pagare la manutenzione ordinaria a partire dal terzo anno o manutenzione straordinaria: sono modifiche da effettuare al programma per altri motivi, ad esempio a causa dello sviluppo di nuove tecnologie più vantaggiose. Siccome si vuole che il software faccia cose nuove, si fa un nuovo progetto, che si deve attaccare al software esistente Dal punto di vista contrattuale, il fornitore prevede un costo orario o giornaliero; ogni volta che è necessaria una manutenzione di questo tipo si concorda preventivamente di quanti giorni ci sarà bisogno sostituzione: quando i costi di manutenzione superano i costi di realizzazione di un nuovo programma, si ha una sostituzione e il software precedente muore I software commerciali, come Microsoft Office, inizialmente compiono un’analisi dei requisiti sulla base del mercato (indagine sugli interessi delle persone, analisi delle nuove tecnologie…). Fanno quindi una progettazione e una programmazione. Poi esce sul mercato: se la parte precedente è stata fatta bene il programma ha successo e ci si può rifare delle spese. La manutenzione consiste nella risoluzione di bug, soprattutto quelli di sicurezza (il programma ha caratteristiche che permettono a 26 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 un hacker di fare attività che l’utente del programma non si aspetta). I programmi di Office utilizzano dei programmini (macro) all’interno del programma, che sono stati utilizzati da degli hacker per creare dei virus; Microsoft nel tempo ha modificato il modo di fare queste macro, aggiungendo dei controlli. A un certo punto il software viene sostituito da una nuova versione e ci sarà quindi la morte (circa dopo 5 anni dall’uscita della nuova versione), ovvero il produttore non ha più la responsabilità che il programma funzioni. Conservare versioni vecchie dei software è pericoloso, ma lo stesso discorso vale per gli hardware Quasi tutti i software commerciali hanno una versione costituita da major version, minor version e un numero che indica le variazioni che non modificano il funzionamento del programma, ma magari lo rendono più veloce o correggono bug: x.x.x. Per la versione minore solitamente si inizia da 0. Quando cambia la versione maggiore non viene garantito che le cose su cui si lavorava funzionino ancora: alcune versioni potrebbero essere tali da non essere retrocompatibili Se abbiamo un’azienda con 500 personal computer, si inizia a prenderne 100 e così gli anni successivi; quando sono passati 5 anni si inizia la sostituzione, così ogni anno ci sono 100 computer vecchi e 100 nuovi. Infatti, la vita media di un personal computer è intorno ai 5 anni, in quanto dopo quel periodo si hanno reti più sicure e connessioni più veloci. Cambiare un computer diventa un’esigenza economica per l’azienda, in quanto, se non viene cambiato, ne risente la produttività del dipendente. Infatti, come avevamo già detto, le aziende devono tener conto del TCO (Total Cost of Ownership) di hardware e software, che comprende costo di acquisto, di manutenzione e di utilizzo. Generalmente, quando un’azienda compra un computer nuovo per un dipendente che ne ha necessità, se quello vecchio è ancora funzionante viene dato a un altro dipendente con esigenze inferiori Nel momento in cui mi rendo conto di avere un’esigenza, prima di pensare alla progettazione di un software ad hoc, cerco di vedere se esiste già in commercio un software che la soddisfi, in modo da averne un vantaggio economico Ad esempio, le anagrafi comunali italiane richiedevano dei software ad hoc. Si è passati poi a software per la gestione delle anagrafi comunali, che, essendo in contatto con tutti i comuni, riescono a capire meglio quali siano le esigenze Nel caso in cui si abbiano esigenze particolari, inizialmente vengono inserite con un programma di manutenzione straordinaria, mentre nelle versioni successive del programma vengono già integrate Nelle aziende, in produzione, si usa la versione definitiva, ma ci sono anche delle sezioni test dove si utilizza la versione beta. Infatti, quando si arriva al terzo/quarto anno del software, si inizia a cercare di capire quali siano le nuove esigenze e si inizia a progettare una versione alfa, alla quale segue una beta e poi quella definitiva. Per un’azienda, la versione beta è fondamentale, perché permette di vedere quali saranno le nuove funzioni Software statistici sono SAS, SPSS, Statistica. Come linguaggio di programmazione c’è R 27 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 28 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Editor: programma per gestire linguaggi informatici IDE (Integrated Development Environment): ambiente di sviluppo integrato che fornisce supporto per facilitare lo sviluppo software. Esempi sono Visual Studio ed Eclipse, pensati per ambito aziendale, e Visual Studio Code Mirrors: il sito è duplicato su vari siti diversi. Una volta erano molto utili perché si poteva utilizzare quello maggiormente raggiungibile a seconda dell’infrastruttura di partenza. Macchina virtuale: è indipendente dal sistema su cui si sta lavorando ed è gestita da un server, che nel nostro caso è disponibile su Internet Pixel: picture element, è l’elemento di base dell’immagine, che è indivisibile e ci dice il colore dell’immagine in quel particolare punto Una pagina web è formata da tre componenti: contenuto, formato di presentazione e capacità di interazione. Inizialmente, con la nascita del web, interessava solo il contenuto e non c’era capacità di interazione. Era quindi prioritario creare un linguaggio per la descrizione del contenuto: HTML. Per rendere più agevole la descrizione del formato è stato poi inventato il linguaggio CSS (Cascading Style Sheets), che è stato proposto da enti di standardizzazione. L’interazione con l’utente avviene grazie a un linguaggio di programmazione: Javascript, il cui nome ufficiale è ECMAscript (l’ente che lo definisce è l’ECMA). HTML e CSS sono gestiti dall’ente di standardizzazione W3C (consorzio del World Wide Web). Le possibili alternative a questi tre linguaggi non hanno presentato vantaggi particolari. All’inizio degli anni 2000 le aziende più importanti in questo campo erano Microsoft, Netscape e Sun. I primi due avevano un proprio browser, rispettivamente Internet Explorer e Netscape. Netscape e Sun strinsero un accordo commerciale a causa del quale abbiamo la somiglianza tra i nomi di linguaggi Java (sviluppato da Sun) e Javascript (sviluppato da Netscape). Netscape è stato poi assorbito da Mozilla, che offre ancora un browser, mentre Sun è stato assorbito da Oracle. Si aggiunge poi Google, facendo sì che oggi i browser più diffusi siano Chrome, Firefox ed Edge OpenSource: del software sono disponibili le sorgenti del programma. Spesso i software OpenSource sono gratuiti. In alcuni casi, non solo è pubblica la sorgente, ma anche lo sviluppo, in modo che le persone possano proporre delle modifiche. Ad esempio, Edge e Chrome derivano entrambi dal progetto OpenSource Chromium, al quale sono stati fatti degli interventi da parte dei dipendenti di Microsoft e Google, che hanno poi sviluppato i loro software. 29 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Introduzione al Javascript È un linguaggio funzionale e object-based (gestisce oggetti), ma non è object-oriented. Sta subendo un’evoluzione: le versioni più recenti sono tipizzate e fanno riferimento al Typescript, compatibile con Javascript Variabile: scatola in cui possono essere messi dei valori (uno per scatola) e dotata di un nome. A seconda del linguaggio di programmazione può variare: cosa c’è nel contenitore prima che venga inserito il valore la forma del contenitore, ovvero i valori che possono esservi inseriti ( tipi). Javascript è un linguaggio non tipizzato, quindi il contenitore cambia forma in base al valore inserito. Mentre nei programmi semplici (come quelli scritti con Javascript) i linguaggi tipizzati sono molto comodi, a partire da certe dimensioni i linguaggi non tipizzati portano al rischio di errori di programmazione; per questo motivo i linguaggi per scrivere grandi programmi sono tipizzati Tipi: numerico: in altri linguaggi si distingue tra Integer e Real, ma non corrispondono effettivamente a numeri interi e reali, perché i computer sono finiti e non infiniti; per questo motivo sono solo sottoinsiemi di numeri interi e razionali. In 17 è considerato come 17.0 (si usa il punto per separare i decimali). Per le potenze di 10, in quasi tutti i linguaggi di programmazione si utilizza la rappresentazione 1.75E01 (prima della E abbiamo la mantissa, dopo l’esponente) senza spazi. Scrivere E01 oppure E1 è equivalente La scrittura standardizzata utilizzata dagli elaboratori prevede la scrittura dell’esponente e poi della mantissa booleani: True e False. Di conseguenza alcuni bit sono 0 o 1: spesso 0 è False e 1 True, ma non è detto stringhe: sono sequenze di caratteri utilizzando i codici. Originariamente si usava la codifica ASCII (ISO 646), ma oggi viene utilizzata quella Unicode. Una stringa di 10 caratteri è quindi costituita da 10 byte, ognuno dei quali presenta la codifica dello specifico carattere (anche lo spazio è un carattere; per la è servono due byte). Le stringhe sono scritte racchiudendole tra apici ‘xxx’ oppure tra virgolette “xxx” e vanno scritte su una sola riga (negli altri casi si può andare a capo quando si vuole) L’attività fondamentale di un linguaggio di programmazione procedurale è l’assegnazione di un valore a un contenitore. Javascript segue la convenzione utilizzata in C per la quale l’assegnazione si ha con = (quindi = non indica un’uguaglianza matematica) <identificazione di un contenitore> = <espressione che restituisce un valore> La parte a destra può anche essere costituita da un unico valore. Nel caso di una variabile abbiamo: <nome di una variabile> = valore In Javascript esistono le parole riservate: termini del linguaggio predefiniti che devono essere usati tal quali. Esempi sono: if, for, function, var Si possono invece definire dei termini aggiuntivi che sono utili o necessari per risolvere un problema. Si parla di identificatori, quindi una parola che identifica una cosa, ad esempio il nome di una variabile. Gli identificatori vanno scritti secondo regole grammaticali (altrimenti errore di compilazione) e regole d’uso: devono iniziare con un carattere alfabetico o una sottolineatura (_), mentre negli altri caratteri possono esserci caratteri alfabetici, cifre, sottolineature. Esempi accettabili sono: a5, _5, a_bc7 30 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Regola grammaticale: i caratteri maiuscoli e minuscoli sono diversi (case sensitive), mentre il Pascal era case insensitive Regola d’uso: usare sempre nomi il cui significato sia non ambiguo, in modo da rendere più facile da leggere il programma, soprattutto per la manutenzione. Ad esempio, matrice3 (terza riga di una matrice) è corretto, mentre a7 non lo sarebbe. Esistono tecniche per rendere difficile agli altri leggere un programma (ad esempio cambiando tutti gli identificatori e sostituendoli a caso) come nel caso in cui si pubblicasse un programma su una pagina web Se si vogliono scrivere nomi di più parole esistono diverse convenzioni. nomeDiPiuParole: l’identificatore inizia con una lettera minuscola e l’inizio delle altre parole è identificato con lettere maiuscole: è il metodo più utilizzato in Javascript ed è definita notazione a cammello. La notazione Pascal abbiamo NomediPiuParole, dove l’unica differenza è che la prima lettera è maiuscola (si può usare anche questa in Javascript). In CSS si usa nome-di-piu-parole, ma non si può usare in Javascript perché – non si può utilizzare negli identificatori (pensa all’operatore meno e non a un separatore di parole) La sorgente è un testo, che viene compilato o interpretato, ottenendo l’eseguibile (programma che può essere eseguito dall’elaboratore), che viene eseguito. Gli errori si possono scoprire durante la compilazione o durante l’esecuzione (errore logico) Token: nomi di identificatori, simboli (= <= …), numeri, operatori, stringhe; sono oggetti elementari del programma che si sta scrivendo var variabile; var è una parola riservata: la parola variabile è un identificatore per un contenitore di tipo variabile variabile = 3+5; variabile = ’3+5’; in questo caso la variabile è una stringa variabile=variabile+1; Essendo l’uguale un’assegnazione ha senso, altrimenti non lo avrebbe. Una scrittura equivalente è variabile+=1; var stringa=’3+5’ Per brevità, quando si dichiara una variabile, si può anche assegnare immediatamente il valore x=++variabile x=variabile++ Prende il valore della variabile e aggiunge 1, restituendo il valore: il valore viene incrementato e poi restituito Il valore viene restituito e poi incrementato di 1. Sono comunque due scritture da evitare. Il ++ modifica l’oggetto variabile e restituisce un valore: bisognerebbe separare la restituzione e la modifica e non farlo contemporaneamente Oggetto: è qualcosa di complesso che nasce dalla virtualizzazione del concetto di oggetto nella realtà. Gli oggetti fisici si possono dividere in parti, ognuna con delle proprietà e gli oggetti hanno anche metodi, modi di operare sull’oggetto. Quando descrivo una proprietà o un metodo scrivo: identificatore.proprietà. Un esempio di proprietà è variabile stringa.lenght che mi dice da quanti caratteri è composta la stringa (nel caso precedente è 3). Un metodo ha invece bisogno di parametri che permettano di operare sull’oggetto, un esempio è stringa.substr(0,3) come parametri abbiamo la posizione iniziale e la lunghezza. Substr è quindi un metodo che estrae alcuni caratteri da una stringa dicendo da quale carattere si inizia e quanti caratteri devono essere estratti In Javascript ci sono predefinite classi o istanze di oggetti, ovvero tipi di oggetti con certe caratteristiche. Tra le classi (che generalmente iniziano con la lettera maiuscola) predefinite troviamo: 31 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Math: le proprietà sono delle stime di numeri notevoli (pi greco, e, radice 2) mentre i metodi sono delle particolari funzioni analitiche (arcsen, arctan, cos, po (elevamento a potenza), cell, log…) Number: nelle proprietà possiamo trovare EPSILON e MAX_VALUE, che sono il numero più piccolo (a livello di precisione) e più grande che si possono rappresentare; MAX_SAFE_INTEGER: le operazioni di numeri interi su numeri più grandi non possono restituire numeri interi (abbiamo numeri reali con la virgola). Come metodi abbiamo isNaN(): ci permette di vedere se ciò che è contenuto nella parentesi è NaN restituendo true o false; ci sono anche altri metodi che iniziano con is. La classe Number presenta quindi proprietà e metodi utili per la programmazione Window: fa riferimento all’oggetto window, ovvero alla finestra attuale. Proprietà: outerHeight: ci dà l’altezza della finestra, quindi il numero di pixel che occupa; outerwidth: ci dà la larghezza della finestra. Quando si fa riferimento a proprietà o metodi dell’oggetto window, la classe si può omettere (ad esempio quando uso la proprietà console) L’oggetto document è quello che descrive il documento, facendo riferimento al body, secondo lo standard DOM (Document Object Model: è uno standard definito da W3C per come un browser deve permettere a chi fa i programmi di ritrovare le varie parti di un documento web). Ha una serie di proprietà e metodi. Esempi di proprietà possono essere url (da dove viene il file che descrive il documento) e body (oggetto che descrive il corpo del documento: mi fa vedere le tag di apertura e di chiusura e se le apro vedo anche tutto quello che c’è scritto in mezzo; posso modificare l’oggetto body seguendo l’albero del documento ma è abbastanza complesso). Esempi di metodi: getElementsByTagname(‘xxx’): restituisce tutti gli oggetti del documento html che sono inseriti in una tag di questo tipo (il numero indica se è il primo, secondo… elemento con quella tag) 32 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Nella sua pagina bisogna andare sul cloud e poi su Software Anche bookmarks 33 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Tipi su R: numeri, stringhe, vettori, liste (simili agli array su Javascript), matrici, data.frame. Essendo un linguaggio procedurale esistono le variabili e il concetto di assegnazione. L’assegnazione può avvenire con l’uguale, ma più frequentemente con <- oppure ->, che comportano meno ambiguità dal punto di vista matematico 1. Descrivere il ciclo di vita del software Software disegnati per le aziende e software commerciali hanno cicli di vita leggermente diversi. Per quanto riguarda le aziende, il primo passo è l’analisi dei requisiti. In questa fase chi richiede il software, aiutato da un esperto, definisce le sue esigenze nei casi quotidiani e in quelli eccezionali e vengono preparati dei test, ovvero delle prove che il software deve essere in grado di superare per rispondere correttamente alle esigenze definite. Segue poi l’analisi funzionale, durante la quale operano architetti del software e analisti, che disegnano il progetto vero e proprio e cercano di capire quali sono le esigenze di costruzione, sulla base delle quali verrà deciso chi si occuperà della successiva fase di programmazione. In questa viene creato il software e messo alla prova con i test definiti nella fase di analisi dei requisiti. Segue poi il rilascio del programma e la manutenzione (ordinaria e straordinaria), che dura per tutta la vita del programma. Quando i costi di manutenzione superano quelli per l’acquisto di un nuovo software si ha la sostituzione e il software precedente muore. Nel caso di software commerciali l’analisi dei requisiti viene fatta sulla base delle esigenze di mercato. Analisi funzionale e progettazione sono uguali, mentre la manutenzione avviene fornendo degli aggiornamenti alle versioni del programma. Dopo circa 3 anni dal rilascio si inizia a progettare un nuovo software, del quale viene rilasciata prima la versione beta. Una volta che del software non vengono più rilasciati gli aggiornamenti (e quindi corretti i bug) l’azienda produttrice non risponde più dei malfunzionamenti 2. Descrivere cosa si intende per analogico e digitale Una grandezza si dice analogica se varia con continuità, assumendo tutti i valori possibili tra un minimo e un massimo. Grandezze analogiche sono suono, luce, colore, temperatura… Una grandezza si dice digitale quando può assumere solo due valori, come nel caso di un interruttore. Nel mondo dell’informatica le informazioni sono espresse tutte sotto forma digitale. La rappresentazione digitale delle informazioni avviene mediante cifre binarie (bit) e qualsiasi informazione può essere rappresentata mediante insiemi di cifre binarie utilizzate in un codice. La qualità della rappresentazione digitale dipende dal numero di cifre binarie usate nel codice 3. Descrivere il funzionamento della posta elettronica Il funzionamento della posta elettronica è basato sul protocollo SMTP (Simple Mail Transfer Protocol). I client di posta elettronica si servono del server SMTP per inviare e ricevere i messaggi: il server controlla se chi vuole inviare il messaggio è veramente chi dice di essere e quindi lo invia, mentre le risposte ricevute rimarranno nella mailbox di questo server. Oggi i messaggi sono criptati, quindi non possono essere intercettati. Una volta, per scaricare i messaggi dalla mailbox del server ci si collegava direttamente ad esso tramite un terminale, mentre oggi questo non è più possibile per motivi di sicurezza. Per farlo si hanno due alternative: web mail o client di posta elettronica (programmi per la gestione della posta elettronica personale). Mentre per inviare un messaggio di posta elettronica c’è solo il protocollo SMTP, per riceverla ci sono diversi protocolli: POP (Post Office Protocol, il più vecchio e in disuso), IMAP, Exchange 34 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 4. Descrivere il DNS Il DNS o nome di dominio viene introdotto in seguito alla nascita della posta elettronica per identificare mittenti e destinatari in un modo più preciso del nickname (utilizzato finchè si comunicava all’interno dello stesso mainframe) e più semplice da ricordare di un indirizzo IP. Gli indirizzi di posta elettronica sono infatti formati da nickname@DNS. I nomi di dominio di primo livello sono quelli più a destra e possono essere nazionali o non. Quelli nazionali sono di due lettere e seguono gli standard ISO, quelli non nazionali sono di tre lettere, come ad esempio gov (organizzazioni governative americane), com, org (organizzazioni senza fini di lucro), net. I nomi di dominio di primo livello danno i nomi a quelli di secondo e così via. I nomi di dominio si possono ottenere tramite aziende specializzate definite register, come ad esempio Aruba 5. Descrivere l’istruzione di assegnazione del Javascript Con l’assegnazione si attribuisce un valore a un contenitore: ciò avviene tramite il simbolo =, che quindi non ha il significato di uguale matematico (che invece si indica con ===). Avremo quindi <identificazione di un contenitore> = <espressione che restituisce un valore>. La parte a destra può anche essere costituita direttamente da un unico valore Ad esempio: var x; var y; x = funzione(y,z); y = 5; 6. Descrivere la fase della manutenzione nel ciclo di vita del software La fase di manutenzione si suddivide in ordinaria e straordinaria. Quella ordinaria copre il 60-80% del costo totale del software. È costituita da un costo percentuale annuale che aumenta con il passare del tempo e ha lo scopo di risolvere bug e adeguare il software alle nuove normative. L’aumento progressivo del costo è dovuto al fatto che a ogni modifica del programma si possono aggiungere potenziali errori, rendendo più difficoltosa la loro individuazione. Siccome i software non sono oggetti materiali, in Italia non sono protetti dalla garanzia, per cui si tende a far pagare la manutenzione ordinaria solo a partire dal terzo anno. La manutenzione straordinaria consiste nell’aggiungere funzioni o migliorare le prestazioni del programma, ad esempio in seguito allo sviluppo di nuove tecnologie. In questo caso è necessario creare un nuovo progetto che andrà integrato in quello precedente. Normalmente si prevede un costo orario o giornaliero per questo tipo di manutenzione 7. Descrivere il livello applicativo dello stack dei protocolli di Internet Siccome il sistema di protocolli TCP/IP è del tipo FILO, il protocollo applicativo, che è il primo ad essere inserito, è l’ultimo ad essere eliminato. A differenza del livello di Internet dove c’era un unico protocollo possibile, in questo caso ce ne sono diversi a seconda delle esigenze. Il protocollo SMTP riguarda la posta elettronica, mentre l’HTTP(S) le pagine web, FTP il download e l’upload di file. Gli ultimi due sono legati alla nascita del web e vanno a costituire lo schema dell’url, ovvero la prima parte separata dai due punti dal resto della stringa 8. Descrivere cosa si intende per client-server Con lo sviluppo delle reti nasce la suddivisione tra dispositivi client e server, sulla base del software in dotazione. Un server è un software sempre attivo che riceve delle richieste ed elabora delle risposte. Un client, invece, è un software che fa delle richieste al server. Il sistema client-server viene utilizzato, oltre che nelle reti aziendali, anche nella rete Internet e nei sistemi operativi. Questa terminologia viene utilizzata sia per gli hardware, sia per i software. Esempi possono essere: client di posta elettronica – server SMTP oppure web browser – server web, mentre nelle aziende possono essere 35 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 presenti dei print server, collegati alle stampanti e ai quali i vari elaboratori fanno la richiesta di stampa. 9. Descrivere l’istruzione for del Javascript Si tratta di un’istruzione di controllo, che quindi modifica il suo comportamento sulla base dei dati inseriti. L’istruzione for, così come il while, è un’istruzione di ripetizione, quindi permette di effettuare la stessa operazione più volte, come nel caso di una sommatoria o di una produttoria, che sono rispettivamente somme ripetute e moltiplicazioni ripetute. for(condizione iniziale; condizioni di modifica; modifica della condizione iniziale) {funzione} Quando si entra nel ciclo for si ha una condizione iniziale, con la quale viene eseguita la funzione. La condizione iniziale viene modificata (attivando ogni volta la funzione) finché ci si trova all’interno delle condizioni di modifica. Nel momento in cui la modifica della variabile fa sì che essa non rientri più nelle condizioni di modifica, questa non avviene e si esce dal ciclo 10. Descrivere le caratteristiche dei linguaggi procedurali imperativi I linguaggi informatici si suddividono in linguaggi di descrizione e linguaggi di programmazione. Quelli di programmazione si suddividono in procedurali imperativi, procedurali funzionali e logicodescrittivi. Quelli procedurali imperativi risolvono i problemi tramite comandi e istruzioni al modo imperativo e come modello matematico si basano sulla macchina di Von Neumann. Per quanto riguarda il linguaggio principe, dal linguaggio macchina si passa ad assembler, quindi a Fortram, Pascal, Cobas e basic, per giungere poi a C, dal quale sono derivati C++, C# e Java (simili tra loro), Javascript, R (oggi applicato alla statistica). 11. Descrivere il protocollo IP Per quanto riguarda il livello di Internet nella suite di protocolli TCP/IP, esiste un unico protocollo, il protocollo IP. L’indirizzo IP permette di identificare il dispositivo all’interno della rete e ne esistono due tipologie: IPv4 e IPv6. Il primo prevede quattro numeri decimali (a rappresentazione di numeri binari) separati da un punto, quindi si hanno 2 32 combinazioni possibili. Il secondo, più recente, prevede dei numeri esadecimali separati da due punti con 2 128 combinazioni possibili, così da poter assegnare un indirizzo IP a tutti i dispositivi oggi connessi a Internet (compreso l’IOT). Gli indirizzi IPv4 vengono suddivisi in tre classi (A, B, C) sulla base di quanti numeri sono noti; quelli di classe C che iniziano con 192.10.x.x sono indirizzi privati. Infatti, gli indirizzi IP si suddividono in pubblici e locali: quando si vuole inviare un’informazione si assegna l’indirizzo locale (utilizzabile solo all’interno della rete), ma, una volta raggiunto un router, questo viene sostituito con l’indirizzo pubblico facendo NAT (Natural Address Translation). Quando si raggiunge il router, quindi, questo non si limita a sostituire il protocollo fisico con quello della rete di destinazione, ma cambia anche il protocollo di Internet. 12. Descrivere la differenza tra rete locale e rete geografica Una rete locale (LAN: Local Area Network) connette dispositivi posti a brevi distanze, come all’interno dello stesso edificio di un’azienda. Una rete geografica (WAN: Wide Area Network) serve invece a connettere dispositivi o LAN a grandi distanze; una rete geografica che connette una città è detta MAN (Metropolitan Area Network). La rete locale è piccola e omogenea, quindi si utilizzano gli stessi standard, mentre in quella geografica si possono anche utilizzare standard diversi in quando i territori coperti sono di diverse proprietà. Mentre le LAN sono aziendali, le WAN sono di provider, in quanto i costi che avrebbe un’azienda per interconnettere sarebbero troppo elevati. Entrambe le reti possono essere wired o wireless. Generalmente, per quanto riguarda quelle wired, le reti locali utilizzano cavi in rame, mentre quelle geografiche la fibra ottica, più veloce 36 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 13. Descrivere la funzione dei router Il router ha lo scopo di interconnettere due reti. Quando si vuole inviare un messaggio utilizzando il protocollo TCP/IP, gli ultimi due protocolli inseriti riguardano il livello di Internet e il livello fisico. Il protocollo fisico è valido solo all’interno della propria rete, quindi il router lo sostituisce con il protocollo fisico della rete di destinazione (il passaggio per più router porta a sempre nuove modifiche nell’indirizzo fisico). Per quanto riguarda l’indirizzo IP, invece, il router ha lo scopo di sostituire l’indirizzo locale (visibile solo all’interno della rete) con quello pubblico, facendo quella che si definisce NAT (Natural Address Translation) 14. Descrivere come si interconnettono le reti L’interconnessione tra le reti avviene tramite i router, che definiscono la strada che i vari pacchetti devono percorrere per giungere a destinazione. Inoltre, il router sostituisce protocollo fisico e protocollo di Internet in modo da adeguarsi alla rete di destinazione. In particolare, il protocollo fisico viene sostituito con quello della rete connessa, mentre per quanto riguarda il livello di Internet, l’indirizzo IP locale viene sostituito con quello pubblico 15. Descrivere cos’è il Web Il Web è uno dei principali servizi di Internet i cui standard sono definiti dal W3C (consorzio del World Wide Web). Nasce tra gli anni 80 e 90 in ambito scientifico, per permettere la condivisione dei dati e delle immagini prodotti dal CERN di Ginevra: rendendo le informazioni facilmente accessibili alle persone, abbiamo la seconda rivoluzione di Internet, con il passaggio dalle aziende alle persone. Il Web ha un suo protocollo, che è l’http(s) (Hyper Text Transfer Protocol), un suo linguaggio, l’HTML (Hyper Text Markup Language) e un sistema di ricerca per individuare le risorse, l’URL (Uniform Resource Locator). Nel protocollo e nel linguaggio è evidente la centralità degli ipertesti, evoluzioni di testi che permettono il collegamento tra più di essi. 16. Descrivere come può avvenire una connessione fisica in una rete Nelle reti le connessioni possono essere di tipo wired o wireless, sia per le reti locali, sia per quelle geografiche. Inizialmente nelle reti wired c’erano alcune aziende che fornivano le proprie reti a chi le richiedeva, ma ben presto un consorzio di aziende preferì definire uno standard, lo standard Ethernet. Generalmente nelle reti locali le connessioni avvengono tramite cavi in rame (1/10 della velocità della luce lavorando con gli elettroni), mentre nelle reti geografiche si preferisce la fibra ottica, che permette connessioni più veloci 17. Descrivere le principali istruzioni di controllo del Javascript Le istruzioni di controllo modificano il loro comportamento in base ai dati inseriti nel programma. Possono essere di diversi tipi: sequenza: sono indicate da parentesi graffe scelta: if then else: si esegue una determinata istruzione se si verifica una condizione, altrimenti se ne esegue un’altra ripetizione: for, while, repeat, loop. In questo caso se una condizione viene verificata si esegue il ciclo, altrimenti si esce da esso 18. Descrivere la differenza tra linguaggi artificiali e linguaggi naturali I linguaggi naturali sono orali e vengono imparati nei primi anni di vita, di conseguenza, se un linguaggio naturale non viene più insegnato a dei bambini muore. I linguaggi artificiali, che si articolano in alfabetici, sillabici e ideografici, cercano di imitare i linguaggi naturali, ma sono 37 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 principalmente scritti. I linguaggi artificiali possono essere creati per motivi ludici, come nel caso della narrativa fantasy, o scientifici, come nel caso dell’esperanto, dell’interlingua o dei linguaggi informatici. Ai linguaggi naturali, essendo orali, è possibile associare codici aggiuntivi come espressioni del viso, intonazione della voce, movimenti delle mani… È inoltre disponibile fornire un feedback. I linguaggi artificiali sono invece limitati dal fatto di essere quasi esclusivamente scritti, il che elimina la possibilità di utilizzare codici aggiuntivi e di fornire un feedback (parzialmente ottenibile con l’invenzione degli ipertesti) 19. Descrivere cosa si intende per firma elettronica La firma digitale è un metodo per verificare se chi scrive un documento è veramente chi dice di essere. Infatti, viene generata servendosi della crittografia asimmetrica: una funzione prende in input il documento e la chiave privata e genera la firma, che potrà poi essere verificata da una funzione che prende in input la firma, la chiave pubblica e il documento e restituisce sì o no a seconda che la firma corrisponda al possessore della chiave pubblica o meno. I certificati ci permettono di verificare a chi appartiene la chiave pubblica e se questa è affidabile. 20. Descrivere lo stack dei protocolli di Internet I protocolli permettono a due sistemi di comunicare, definendo come deve avvenire la comunicazione. Lo stack dei protocolli di Internet, essendo di tipo FILO (First In Last Out), prevede che il primo protocollo inserito sia l’ultimo ad essere tolto. Abbiamo due tipologie di stack di protocolli: TCP/IP a quattro livelli e OSI su sette livelli e basato sugli standard ISO. TCP/IP prevede (partendo dal primo protocollo da inserire): livello applicativo, livello di trasporto, livello di Internet e livello di accesso alla rete o livello fisico. Il livello di Internet è l’unico a prevedere un unico protocollo, il protocollo IP. 21. Descrivere cos’è la cifratura La cifratura è una tecnica che permette di rendere un’informazione non comprensibile, o almeno comprensibile solo ad alcune persone. Utilizzata fin dai tempi dei greci e dei romani (Cesare usava un metodo che consisteva nel sostituire ogni lettera con un’altra che si trova alcuni spazi più avanti secondo l’ordine alfabetico), consiste in: J – C(k, J) – J’ – C’(k, J’) – J ovvero nel prendere un’informazione e cifrarla in modo da non renderla leggibile; per renderla nuovamente leggibile occorrerà prima decifrarla. Cifratura e decifrazione avvengono tramite una chiave (k), che può essere uguale in entrambi i casi nel caso della crittografia simmetrica o diversa nel caso della crittografia asimmetrica (o a chiave pubblica/privata) 22. Descrivere cosa sono le URL Con la nascita del Web è stato necessario definire un protocollo, un linguaggio e un metodo per trovare le risorse. Quest’ultimo è l’URL (Uniform Resource Locator), una stringa priva di spazi (sostituiti da _) che presenta all’inizio lo schema, ovvero il protocollo utilizzato. Lo schema è separato da due punti dal resto dell’URL e definisce cosa lo segue: lo schema FTP serve per download e upload di documenti, lo schema MAILTO è seguito da un indirizzo e-mail, mentre lo schema http(s), il più comune, è seguito da //<nome di dominio>/<percorso>/<nome di una risorsa> Molte parti dell’URL sono facoltative e se mancanti vengono ipotizzate dal browser: se, ad esempio, viene omesso lo schema, il browser ipotizza che sia https 23. Descrivere le principali tipologie di linguaggi di programmazione 38 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 I linguaggi informatici si suddividono in linguaggi di descrizione e linguaggi di programmazione. I linguaggi di programmazione si suddividono in procedurali imperativi. procedurali funzionali e logicodescrittivi. Quelli procedurali imperativi risolvono i problemi con comandi e istruzioni al modo imperativo, hanno come modello matematico la macchina di Von Neumann e prevedono delle variabili. I linguaggi procedurali funzionali risolvono i problemi tramite funzioni, hanno come modello il lambda calculus e non prevedono variabili. I linguaggi logico-descrittivi risolvono i problemi con il modo indicativo, hanno come modello matematico il calcolo dei predicati e non prevedono variabili. Per i procedurali descrittivi il linguaggio principe è il LISP (List Processing), mentre per i logicodescrittivi è il PROLOG (Programmation Logique). I procedurali imperativi si sono sviluppati a partire dal linguaggio macchina, passando per Assembler e quindi cobas, Basic, Pascal e Fortram; si è poi arrivati a C da cui sono derivati Javascript, Java e C#, R, C++ 24. Descrivere la crittografia simmetrica La crittografia permette di rendere un messaggio che venisse intercettato non leggibile, in modo che solo il destinatario sia in grado di decifrarlo. La crittografia moderna può essere di due tipi: simmetrica o asimmetrica (pubblica/privata). Quella simmetrica prevede la condivisione della chiave tra mittente e destinatario, che quindi viene usata sia per cifrare il messaggio sia per decifrarlo. Questo tipo di crittografia è molto vantaggioso per quanto riguarda i costi di calcolo (sia come macchine, sia come tempo), ma presenta l’inconveniente che la chiave deve essere trasmessa in modo sicuro. La crittografia simmetrica viene utilizzata per la comunicazione tra sito web e client e in quel caso lo scambio della chiave avviene tramite crittografia asimmetrica. 25. Descrivere cos’è Internet Internet è una rete di comunicazione, un’infrastruttura che permette l’interconnessione di sistemi informatici in quasi tutto il mondo. È stato sviluppato dal Ministero della difesa americano, che voleva sviluppare una tecnologia che potesse essere funzionante anche in caso di un bombardamento nucleare ad elevata altitudine, che non avrebbe danneggiato le infrastrutture ma avrebbe creato dei problemi nelle comunicazioni basate sulle onde elettromagnetiche (come era già avvenuto con i telegrafi in occasione di una tempesta solare). Inizialmente chiamato ARPANET, coinvolgeva il Pentagono e alcune università americane. Quando venne adottato ad uso civile prese il nome di Internet, mentre ARPANET rimase ad uso militare. La comunicazione in Internet avviene attraverso una serie di protocolli che possono essere del tipo TCP/IP (4 livelli), oppure seguire lo standard ISO, quindi avremo i protocolli OSI (7 livelli) 26. Descrivere l’istruzione if del Javascript If è un’istruzione di controllo, quindi un’istruzione che modifica il suo comportamento in base ai dati inseriti. Si tratta di un’istruzione di scelta strutturata come: if (condizione) {istruzione1} else {istruzione2} Di conseguenza, come si potrebbe notare dal flowchart, nel momento in cui si verifica la condizione, viene eseguita la prima istruzione, mentre negli altri casi viene eseguita la seconda. Si possono anche scrivere vari if di fila: if (condizione){istruzione1} else if(condizione){istruzione2} else {istruzione3} Questo tipo di istruzione viene utilizzata nelle funzioni ricorsive 27. Descrivere la crittografia asimmetrica 39 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Mentre la crittografia simmetrica prevede la condivisione della chiave tra mittente e destinatario, la crittografia asimmetrica prevede una chiave privata per il destinatario e una chiave pubblica che deve utilizzare il mittente. Chiave pubblica e privata sono legate da una funzione che permette di passare facilmente da chiave privata a pubblica, ma rende difficile risalire da quella pubblica a quella privata. In questo modo sono necessari degli anni per ottenere la chiave privata, ma dopo un certo periodo di tempo le chiavi vengono rinnovate, rendendo questo metodo molto sicuro. Più la chiave pubblica è nota, più il sistema funziona. Infatti, un modo per aggirarlo è quello dell’uomo in mezzo: normalmente il mittente cifra il messaggio con la chiave pubblica del destinatario, che decifra il messaggio con la sua chiave privata; l’uomo in mezzo fa credere al mittente che la chiave pubblica del destinatario sia in realtà la sua (dell’uomo in mezzo), così da poter decifrare il messaggio e poi da poterlo cifrare usando la vera chiave pubblica del destinatario. La tecnica dell’uomo in mezzo è difficile da scoprire perché effettivamente il destinatario decifra il messaggio con la propria chiave privata. Se però si rendono le chiavi pubbliche molto note e ci si serve degli enti di certificazione per associare le chiavi pubbliche alle persone di cui sono proprietà, è difficile poter applicare questa tecnica di hacking 28. Descrivere cosa si intende per protezione e sicurezza dei dati Con sicurezza si intende che solo le persone autorizzate possono accedere ai dati o modificarli. Si articola in autenticazione e autorizzazione, che consistono rispettivamente nell’identificazione di chi sta accedendo ai dati e nella definizione di quali dati sono i dati a cui la persona può accedere. Con la protezione, invece, si fa in modo che i dati non vengano corrotti, ovvero rovinati e resi inutilizzabili. Una procedura di sicurezza può essere quella di creare una copia di sicurezza (backup) su un supporto fisico o virtuale in un posto lontano da dove è conservata l’originale 29. Descrivere alcuni protocolli applicativi Un esempio può essere il protocollo http, che va a costituire lo schema di un url. Non è RealTime, non è un protocollo di sessione e non è pensato per la sicurezza perché inizialmente il web aveva lo scopo di connettere dei ricercatori. Per quanto riguarda il problema della sicurezza è stato sviluppato il protocollo https, mentre per quanto riguarda il protocollo di sessione si utilizzano i cookies, che permettono ai siti di ricordare le nostre visite precedenti e i dati inseriti nelle pagine web. Lo schema dell’url può essere anche costituito dal protocollo ftp (File Transfer Protocol), che riguarda il download e l’upload di file Anche il protocollo SMTP è un protocollo applicativo: questo riguarda la posta elettronica e prevede che gli indirizzi siano costituiti da nickname@nome di dominio e permette di inviare i messaggi email (oggi la ricezione avviene con altri protocolli) 30. Descrivere le funzioni del Javascript Il Javascript permette di rendere una pagina web interattiva, cosa che non era prevista ai tempi della nascita del web Una delle interazioni possibili riguarda la definizione di funzioni tramite la parola riservata function: function nomeFunzione(parametri){istruzioni} La funzione prende in input i parametri (separati da virgole) e sulla base di questi segue le istruzioni indicate. In realtà in alcune funzioni i parametri non sono necessari, come nel caso in cui si richiamino dei valori dall’html. L’assegnazione di un nome alla funzione permette di richiamarla all’interno del programma assegnandovi diversi parametri. L’istruzione return termina la funzione e restituisce un valore 31. Cos’è la standardizzazione e che enti se ne occupano in ambito informatico 40 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 La standardizzazione consiste nel rendere uniforme qualcosa ad ampio livello, in alcuni casi nel mondo. L’ente di standardizzazione più importante è sicuramente l’ISO, un’organizzazione internazionale che definisce molti standard, come l’ora e le date (anno-mese-giorno T ora:minuti:secondi , decimi di secondo), gli stati e le lingue (it, ita, en, eng…), la codifica delle lettere (collaborando con Unicode)… In ambito informatico abbiamo anche IEEE, che definisce ad esempio lo standard per indicare le potenze di 2: Gibyte, Tibyte… Per quanto riguarda Internet abbiamo l’IETF, mentre per il Web lo standard W3C 32. Come viene codificato un nuovo carattere nello standard ISO10646 Essendo internazionale, l’utilizzo dello standard ISO non è vincolante nei vari stati, ma in ognuno di essi sono presenti enti (riconosciuti dall’ISO) tutelati dalla legge. Quando si vuole codificare un nuovo carattere si fa una richiesta a Unicode, che propone una codifica all’ISO. Solo nel momento in cui la codifica viene accettata da tutti gli stati, l’ISO lo inserisce nell’elenco dei caratteri standardizzati e ne demanda l’attuazione al consorzio Unicode 33. Rappresentazione informatica dei dati In informatica, dati numerici e testuali vengono rappresentati come insiemi di stati. Unità fondamentale è il bit (binary digit), che può avere due stati diversi a seconda della presenza o assenza di corrente, tensione, luce… Questi due stati possono essere rappresentati con due valori: 0 e 1, Falso e Vero. Zero e uno saranno quindi le rappresentazioni degli stati e non gli stati stessi. I bit vengono raggruppati in byte, ovvero insiemi di 8 bit, che possono essere suddivisi in due semibyte 34. Sistemi di numerazione in informatica In informatica si utilizzano quasi esclusivamente sistema binario e sistema esadecimale, entrambi sistemi posizionali. Siccome si utilizza il sistema binario, un bit può assumere solo i valori 0 e 1 (rappresentazioni di due diversi stati); un byte, composto da 8 bit, può quindi assumere 2 8 valori possibili, che vanno da 0 a 255. Siccome si è soliti suddividere i byte in due semibyte, è utile utilizzare il sistema esadecimale (base 16), in quanto in un semibyte si hanno 2 4 (16) combinazioni possibili e si possono rappresentare i numeri da 0 a 15. Nel sistema esadecimale le cifre sono 0 1 2 3 4 5 6 7 8 9 A B C D E F, quindi il numero C316 sarà 12*16 + 3 = 19510 ovvero 1100 0011 Nel momento in cui si cerca di rappresentare il numero 256 con un byte si ha un errore, oppure un fenomeno di overflow, in seguito al quale viene restituito o un errore oppure la perdita della nona cifra (che dovrebbe appartenere a un altro byte), per la quale al numero 1111 1111 risulta seguire 0000 0000 35. Struttura delle calcolatrici Le calcolatrici possono essere definite i predecessori degli elaboratori, essendo state sviluppate molti anni prima (già da Pascal e Liebniz) ed essendo una loro versione semplificata e meno duttile. Le calcolatrici sono costituite da ALU (Arithmetic and Logic Unit) e memoria. La ALU esegue gli algoritmi, ovvero serie di attività descritte in ordine per arrivare a uno scopo. Gli algoritmi sono cablati, quindi non se ne possono applicare altri oltre a quelli predefiniti. La memoria contiene gli algoritmi e può contenere alcuni risultati, che normalmente vengono visualizzati sullo schermo 36. Struttura dell’ENIAC L’ENIAC è quello che possiamo definire il primo elaboratore, costruito nel 1946. È basato sulla macchina di Von Neumann, che prevede una suddivisione in CPU e memoria. La CPU (Central Process Unit) è a sua volta suddivisa in CU e ALU. La CU (Central Unit) si occupa di scegliere 41 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 algoritmi e dati, entrambi presenti nella memoria, e di indirizzarli all’ALU, che applica poi gli algoritmi come già accadeva nelle calcolatrici. L’utente è in grado di interagire con l’elaboratore tramite la console, una macchina non intelligente costituita da interruttori che permettevano l’input, mentre l’output era dato da lampadine L’ENIAC era monoutente, monotask (poteva compiere un solo processo per volta) e monoprocessore (aveva un unico processore), mentre oggi gli elaboratori sono multiutente, multitask e multiprocessore L’ENIAC era una macchina molto ingombrante con valvole termoioniche che si surriscaldavano, necessitando di sostituzioni preventive e rendendo l’ambiente ottimale per gli insetti. Fu proprio un insetto a dare origine al termine bug nell’accezione con cui lo conosciamo oggi in informatica, essendo la causa di un cortocircuito. 37. Tipologie di computer Nelle tipologie monoutente troviamo i cellulari, le workstation, i supercomputer. Le workstation sono computer specializzati utilizzati in ambito aziendale e assegnati a un unico dipendente. I supercomputer, come può essere quello per le previsioni metereologiche di Reading, sono macchine molto potenti sulle quali lavora generalmente un team di ricerca, che le usa per svolgere calcoli complessi (come doveva essere nell’idea di Von Neumann). Multiutente sono invece i personal computer, le console videogiochi, i computer dipartimentali, i minicomputer (in disuso) e i mainframe. Minicomputer, mainframe e computer dipartimentali, utilizzati in ambito aziendale, fungono anche da server 38. Hardware L’hardware costituisce la componente fisica di un personal computer. È costituito da: famiglia di processori, memoria e GUI. La famiglia di processori è un gruppo di processori con ALU simili; questi sono costituiti da microchip, i cui componenti sono i transistor. La memoria si suddivide in centrale e periferica: la memoria centrale si misura in Gibyte (secondo lo standard IEEE), mentre quella periferica in Tbyte. La memoria periferica può essere su disco rigido (hard disk), oppure su ssd (disco solido): il primo è più conveniente ma presenta un disco in movimento, quindi risulta essere più fragile rispetto al disco solido, che presenta solo movimenti elettronici. La GUI (Graphic Interface Unit) permette all’utente di interfacciarsi con la macchina: l’input è permesso da tastiera e mouse, mentre l’output da monitor e cuffie 39. Software Il software è la parte immateriale del personal computer. È costituito da sistema operativo e software applicativi. Il sistema operativo (OS) costituisce il software di base e si occupa di coordinare tutti i processi basilari. È grazie ad esso che il software applicativo non deve essere specifico per ogni dispositivo, ma è in grado di interagire con le altre componenti del computer Esempi di sistema operativo sono iOS e Android per i cellulari e Macintosh, Windows e Linux per i personal computer Il software applicativo può essere locale o in rete: se è locale è legato al computer, mentre se è in rete si ha un abbonamento che permette di usufruire della versione più aggiornata. Esempi di software applicativo sono: calcolatrice, word processor, spreadsheet 40. Livello di trasporto dello stack dei protocolli di Internet 42 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 Il livello di trasporto è il secondo a essere inserito e il penultimo a essere eliminato. In esso il protocollo prevalente è il TCP, che garantisce l’arrivo del messaggio completo. Infatti, se abbiamo un messaggio grande, questo viene suddiviso in pacchetti, che vengono poi riordinati grazie allo stesso protocollo, che prevede anche che venga richiesta la trasmissione di un pacchetto se questo risulta essere mancante. Non è un protocollo RealTime, quindi la velocità di trasmissione dipende dall’efficienza della rete. Sistemi RealTime sono invece VoIP o IPTV perché in quel caso il messaggio riesce ad essere interpretato anche se ci sono delle parti mancanti (la voce è ridondante); nell’IPTV viene utilizzato un buffer, che memorizza i dati e li trasmette con un certo ritardo 41. Oggetti in Javascript In Javascript gli oggetti sono delle rappresentazioni degli oggetti presenti nella realtà. Gli oggetti hanno proprietà e metodi, che vengono indicati come oggetto.proprietà oggetto.metodo() Le proprietà possono essere a loro volta degli oggetti con proprietà e metodi. Esempi di classi di oggetti sono Math, che permette di ottenere stime di numeri irrazionali con le sue proprietà e funzioni particolari con i suoi metodi. Un altro esempio è Window, che può essere omesso e riguarda tutto ciò che concerne la finestra di visualizzazione, oppure Number, che tra le altre cose permette di ottenere il massimo numero visualizzabile senza l’uso di esponenti. Gli oggetti si possono anche creare: si utilizzano le parentesi graffe e all’interno di esse le proprietà sono separate da virgole. La creazione di un oggetto permette la conservazione e trasmissione dei dati tramite lo standard JSON, altri modi per farlo sono l’XML e il CSV (Comma Separated Values) 42. Cos’è un Array Un array è una classe di oggetti che contiene una serie di elementi ognuno indicato con un indice, che indica la posizione dell’elemento nell’array (partendo dalla posizione 0). Ogni elemento è a sua volta un contenitore che può essere di tipo numerico, booleano, stringa o array (se tutti gli elementi sono array della stessa lunghezza abbiamo una matrice). La creazione di un array vuoto avviene tramite il costruttore new Array(): in questo caso l’array andrà poi riempito accedendo alle varie posizioni tramite le parentesi quadre e l’indice: ad esempio array[3] = 5 Si possono creare anche array già riempiti assegnando semplicemente a una variabile dei valori contenuti all’interno di parentesi quadre e separati da virgole, ad esempio: var a = [1, 2, “ciao”, []] 43. Definizione iterativa e definizione ricorsiva delle funzioni La definizione ricorsiva prevede una serie di condizioni e una serie di istruzioni associate ad esse. In questo caso avremo quindi tipicamente un if(condizione1){istruzione1} else {istruzione2} con il quale la funzione richiama se stessa su porzioni di dati di volta in volta più piccole La definizione iterativa prevede invece una serie di istruzioni che vanno ripetute finché si è all’interno di una determinata condizione. In questo caso avremo quindi tipicamente un for(condizione iniziale; condizioni di modifica; modifica della condizione iniziale){istruzioni}. Finché le condizioni di modifica risultano verificate vengono applicate le istruzioni 44. Struttura del CSS Con il CSS viene definito il formato del documento HTML. Abbiamo delle regole che sono costituire da un selettore seguito da clausole inserite in parentesi graffe e costituite da proprietà: valore con unità di misura. Il selettore definisce la parte del documento a cui sarà applicata la regola. Le proprietà indicano un aspetto del selettore da modificare: margine, sfondo, padding, colore del testo… Le varie clausole sono separate da dei punti e virgola. Per quanto riguarda i colori, questi si 43 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com) lOMoARcPSD|12768107 possono definire con numeri esadecimali, con l’RGB (red, green and blue: sono i colori della visione dell’occhio umano) o con dei nomi definiti 45. Cosa significa che Javascript è non tipizzato Le variabili sono contenitori in cui possono essere messi dei valori. Le tipologie di valori che possono essere inseriti sono dette tipi e possono essere numerico, booleano, stringhe. In un linguaggio tipizzato ci sono contenitori diversi per tipi differenti, mentre in un linguaggio non tipizzato, come Javascript, il contenitore si adatta al tipo inserito. I linguaggi non tipizzati sono molto comodi se si scrivono programmi brevi, come gli script, ma per programmi complessi i linguaggi non tipizzati aiutano a commettere meno errori 46. Cosa sono gli identificatori e come vanno scritti Gli identificatori sono parole che identificano una variabile, una funzione. Questi devono sottostare a regole grammaticali e a regole d’uso. Le regole grammaticali riguardano il fatto che sono case sensitive (c’è differenza tra scrivere un carattere maiuscolo o minuscolo), devono iniziare con un carattere alfabetico o una sottolineatura, nei caratteri interni si possono utilizzare anche cifre. Le regole d’uso riguardano invece il fatto che i nomi attribuiti devono essere non ambigui, in modo da rendere facile la lettura del programma, soprattutto nella fase di manutenzione. Se si vogliono scrivere più parole si utilizza generalmente notazione a cammello, che prevede l’utilizzo della lettera maiuscola per segnare l’inizio di una nuova parola. 47. Problemi legati alla posta elettronica Inizialmente i messaggi di posta elettronica erano solo testuali e passivi, quindi non creavano alcun problema. Con l’introduzione degli allegati, diventa invece possibile inviare messaggi dal contenuto dannoso. Nasce, ad esempio, il problema dei computer zombie, ovvero computer che scaricano un programma che normalmente non fa niente, ma ad un certo punto inizia a compiere attività illegali, ad esempio inviando messaggi SPAM. Gli SPAM sono messaggi generalmente pubblicitari che intasano le caselle di posta elettronica. Un altro problema è il phishing, che consiste nel fingersi persone o aziende affidabili per scoprire dati personali. 44 Downloaded by Eugenio Pollice (eugenio.pollice@gmail.com)