Uploaded by leandrobattistoni

Dispensa Informatica

advertisement
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)
Download