Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Regolamentazione?
Le Tre leggi della robotica (Isaac Asimov, anni ‘40):
1. Un robot non può recar danno a un essere umano né può permettere che, a causa del
suo mancato intervento, un essere umano riceva danno
2. Un robot deve obbedire agli ordini impartiti dagli esseri umani, purché tali ordini non
vadano in contrasto alla Prima Legge
3. Un robot deve proteggere la propria esistenza, purché la salvaguardia di essa non
contrasti con la Prima o con la Seconda Legge
IA «Forte» vs IA «Debole»
IA Forte (Generale):
➔ «Il computer, opportunamente programmato con i giusti input e output, avrebbe quindi
una mente esattamente nello stesso senso in cui gli esseri umani hanno la mente» (Searle,
1999)
➔ Macchina che è in grado di applicare intelligenza alla risoluzione di qualsiasi problema
IA Debole (Ristretta):
➔ Implementa una parte limitata della mente, o risolve uno specifico
problema
➔ Ad esempio: riconoscimento di immagini, traduzione
IA simbolica
➔ Gli esseri umani ragionano attraverso «simboli» per assegnare significato a oggetti ed
eventi
➔ L’idea dietro all’approccio simbolico è che questi simboli sono i mattoni di qualsiasi
processo cognitivo
➔ Sistema di IA composto da:
◆ Base di conoscenza: progetto Cyc
◆ Insieme di regole
◆ Motore inferenziale
➔ Interpretabile
◆ Sillogismo (Aristotele):
● Premessa: Tutti gli uomini sono mortali
● Premessa: Tutti i greci sono uomini
● Conclusione: Tutti i greci sono mortali
➔ Funziona bene con applicazioni che hanno regole e obiettivi ben definiti
IA connettivista
➔ Non sono gli esseri umani a codificare la conoscenza in modo esplicito
➔ Modelli e metodi statistici che consentono al sistema di apprendere in modo autonomo
dai dati
➔ L’idea è cercare di riprodurre le capacità intellettuali utilizzando un modello semplificato
delle funzionalità cerebrali
➔ Richiede grandi quantità di dati di alta qualità
STORIA DELL’IA
Il termine «Intelligenza Artificiale» viene per la prima volta utilizzato da John McCarthy nel
1956, con l’organizzazione del Dartmouth Summer Research Project on Artificial
Intelligence
Visione storica d’insieme
Da quel momento, l’Intelligenza Artificiale ha vissuto una storia fatta di continui alti e bassi
Esplosione: 2011-oggi
➔ Non si vuole costruire una IA «generale» (OpenAI?), ma la ricerca è molto più pragmatica e
focalizzata su problemi specifici
➔ Sempre più dati a disposizione su cui addestrare soluzioni di IA (Big Data), grazie anche allo
sviluppo di Internet
➔ Nel 2012, tramite reti neurali, un gruppo di ricerca improvvisamente dimezza l’errore di
classificazione sul dataset ImageNet, composto da più di 14 milioni di immagini suddivise in 20.000
categorie
APPLICAZIONI DELL’INTELLIGENZA ARTIFICIALE
shakey 1966 - 1972
Atlas 2021
robotica
Alcune applicazioni dell’intelligenza artificiale, come la guida autonoma, pongono dei dilemmi
etici e legali non banali:
● In caso di incidente, di chi è la responsabilità?
● Moral Machine: individuare le possibili preferenze riguardo le scelte che dovranno compiere le
macchine a guida autonoma in caso di incidenti inevitabili
● “Mercedes-Benz’s Self-Driving Cars Would Choose Passenger Lives Over Bystanders
Medicina
“It’s quite obvious that we should stop training radiologists.”
– Geoffrey Hinton, 2016
Chatbot
chatGPT (OpenAI) è un language model estremamente avanzato
➔ può essere utilizzato per realizzare un chatbot in grado di dialogare con l’utente utilizzando il
linguaggio naturale
➔ Molto simile all’AGI! https://chat.openai.com/chat
➔ Ha molta “intuizione artificiale”, è in grado di capire in modo estremamente accurato le necessità
dell’utente
➔ Tuttavia, non è in grado di svolgere “ragionamento artificiale”, basato su un “modello del mondo”
Arte generativa
DALL-E (OpenAI) è un sistema di intelligenza artificiale in grado di generare immagini a partire da
descrizioni formulate in linguaggio naturale
Limiti
➔ Ci sono ancora limiti importanti che riguardano le capacità di apprendimento di una rete neurale
➔ Ad esempio, tipicamente, sono richieste decine/centinaia di migliaia di esempi anche per imparare
un semplice concetto, e milioni/miliardi per sviluppare le applicazioni più avanzate
➔ I modelli addestrati possono mostrare dei comportamenti inattesi quando sottoposti ad un input
mai incontrato in fase di addestramento
Futuro?
➔ Alle soluzioni di IA manca un modello del mondo, trasversale al compito specifico per il quale il
sistema viene utilizzato, costruito incrementalmente
➔ Modello sul quale basarsi per imparare ogni nuova abilità, e da utilizzare per gestire situazioni mai
osservate in precedenza, per formulare previsioni sulle conseguenze delle proprie azioni, …
Il termine deriva dal francese informatique, coniato da P. Dreyfus nel 1962, e composto dalle due
parole: INFORMATion automatIQUE
INFORMATICA UMANISTICA
L'informatica umanistica, o digital humanities o humanities computing, è un campo di studi che
nasce dall'integrazione di procedure computazionali e sistemi multimediali nelle discipline
umanistiche, relativamente in particolare alla rappresentazione dei dati, alla formalizzazione delle
fasi di ricerca e alle tecniche di diffusione dei risultati. Il rapporto tra le due componenti si esprime
non solo a livello applicativo, ovvero nell'impiego di strumenti informatici per rendere più veloci ed
efficienti le ricerche delle discipline umanistiche, ma anche a livello metodologico, ovvero
nell'integrazione di approcci al fine di generare nuovi paradigmi di elaborazione dei dati. I campi
d'applicazione dell'informatica umanistica coinvolgono gli studi di linguistica, filologia, letteratura,
storia, archeologia, storia delle arti figurative, musicologia, interazione uomo-macchina,
biblioteconomia e il settore della didattica.
Informazione
L’informazione deriva da un dato, o da un insieme di dati, che sono stati sottoposti a un processo di
interpretazione che li ha resi significativi per il destinatario
➔ Leggendo i dati registrati dal termografo, ed interpretandoli come gradi centigradi, si determina
che nelle 24 ore passate la temperatura è stata mediamente troppo elevata
➔ L’informazione è il risultato di una elaborazione dati
➔ Il termine informazione deriva dal latino e significa “dare forma alla mente” e rappresenta il
processo di elaborazione del significato di un dato o di un insieme di dati
Collegando una data informazione con altre informazioni riferite ad un particolare contesto si ottiene
conoscenza, che viene poi confrontata con le conoscenze già acquisite. La conoscenza permette di
interpretare e guidare il nostro operare.
➔ Ad esempio, sulla base di esperienze pregresse, ipotizzo che l’anomalia relativa alla temperatura
sia dovuta probabilmente ad un guasto nell’impianto di climatizzazione e ordino un intervento di
manutenzione
Bit
Nel calcolatore, tutti i dati vengono memorizzati utilizzando sequenze di numeri binari, detti bit
(binary digit), principalmente per ragioni tecniche:
➔ la memorizzazione viene
gestita da opportuni
supporti fisici, ad esempio il
disco rigido o i CD
➔ tutte le elaborazioni
effettuate sui dati operano
quindi su tale
rappresentazione binaria
➔ una stessa sequenza di bit
può essere interpretata, come
vedremo, in diversi modi (come
numeri, caratteri, suoni, immagini, …)
PORTE LOGICHE
Circuiti logici
➔ A partire dalle porte logiche, è possibile realizzare circuiti logici complessi, che implementano
diverse tipologie di operazioni
➔ Semplificando, possiamo pensare al processore come composto da un insieme di circuiti logici
➔ Proviamo ad implementare l’operazione:
◆ AND(1, OR(x, 0))
◆ x è l’input specificato dall’utente
◆ https://logic.ly/demo/
➔ Allo stesso modo, è possibile realizzare circuiti più complessi che implementano operazioni quali
le somme, le moltiplicazioni, ecc su numeri rappresentati in binario
◆ decimale: 5 + 1 = 6
◆ binario: 101 + 001 = 110
“Begin at the beginning,” the King said, very gravely, “and go on till you come to the end:
then stop.”
― Lewis Carroll, Alice in Wonderland
L’esecutore
➔ Essenziale, nel concetto di algoritmo, è il ruolo dell’esecutore
➔ Si tratta di un “operatore” in grado di svolgere le istruzioni specificate
◆ Ad esempio, un cuoco che legge una ricetta per preparare una torta
◆ Attenzione: l’algoritmo impiega delle operazioni “atomiche”, non interpretabili a
discrezione dell’esecutore. Cambiando l’esecutore, e rieseguendo lo stesso algoritmo, si
otterrà sempre lo stesso risultato
➔ Nel nostro caso, l’esecutore è il calcolatore
Il calcolatore come esecutore
Apparecchio destinato all’elaborazione automatizzata dei dati tramite l’accettazione di istruzioni
per compiere determinate operazioni secondo procedure prestabilite ed espresse in modo formale
(algoritmi) per produrre un risultato (output) come effetto di un inserimento di dati (input)
Algoritmi e programmi
➔ Al fine di poter essere eseguito da un calcolatore, un algoritmo viene codificato in un programma
➔ Un programma è dunque la rappresentazione di un algoritmo in un formato “compatibile” con il
calcolatore
➔ Nel corso del tempo sono stati sviluppati i più svariati linguaggi di programmazione per
consentire la scrittura di programmi
Intuizione
Una MdT è una macchina ideale/astratta che manipola (legge, scrive, cancella) i dati contenuti nelle
caselle di un nastro di lunghezza potenzialmente infinita, seguendo un insieme finito e prefissato di
regole ben formalizzate.
Componenti
Una MdT è composta da:
➔ Un nastro infinito suddiviso in celle (supporto per input, output e memorizzazione dei dati)
➔ Un alfabeto finito
◆ insieme dei simboli che possono comparire nelle celle (un singolo simbolo per casella)
◆ per semplicità, consideriamo l’insieme {0, 1, blank}, dove blank è un simbolo che denota
l’assenza di dati (cella vuota)
➔ Un insieme finito di stati (condizioni) in cui la macchina può trovarsi
◆ definiamo q0 lo stato iniziale, in cui la macchina si trova quando viene fatta partire
◆ definiamo halt lo stato finale: se la macchina raggiunge tale stato, si ferma
➔ Una funzione di transizione che determina il comportamento della macchina (realizza la logica di
controllo)
Funzione di transizione
La funzione di transizione è data da un insieme finito di regole che determinano, per ogni possibile
simbolo X che si trovi al momento sotto la testina e per ogni possibile stato P della macchina:
➔ quale simbolo Y scrivere al posto di X (eventualmente, anche X stesso
o blank)
➔ qual è il nuovo stato Q della macchina (eventualmente, Q=P)
➔ se la testina deve essere spostata a destra oppure a sinistra di una
singola casella
La MdT inizia la sua computazione nello stato iniziale q0, trovando sul nastro già un insieme di dati
iniziali (input). Al termine, la macchina si troverà nello stato finale halt e sul nastro saranno presenti i
dati di output.
MdT è un dispositivo astratto che contiene tutti gli elementi essenziali per poter calcolare il risultato
di una qualsiasi funzione/problema:
➔ Un supporto su cui scrivere: un nastro infinito, diviso in caselle
➔ Un insieme finito di simboli che possono comparire nelle caselle
➔ Un dispositivo di lettura/scrittura: la testina
➔ Un insieme finito di “stati” in cui la macchina si può trovare in ogni istante
➔ Una “tavola di istruzioni” finita, che dice alla macchina cosa fare in base al simbolo che si trova
in quel momento sotto la testina di lettura/scrittura, anche in base a quanto è stato processato nei
passi precedenti (grazie allo stato) La MdT consente di formalizzare l’idea di algoritmo
… perché?
➔ La MdT ha una definizione e un funzionamento estremamente semplici
➔ Nonostante ciò, si può dimostrare che essa è in grado di effettuare tutte le elaborazioni effettuabili
dagli altri “modelli di calcolo” noti all'uomo
◆ Quindi ha la stessa espressività offerta dai computer classici, computer quantistici, ecc
➔ Di conseguenza si è consolidata la convinzione che per ogni problema/funzione calcolabile esista
una MdT in grado di risolverlo (congettura di Church-Turing)
➔ Anche i più complessi computer odierni possono essere ricondotti al modello della MdT
◆ Disclaimer: un calcolo che un odierno computer esegue in una manciata di secondi
potrebbe richiedere un numero enorme di passi se eseguito su un meccanismo dotato di
dispositivi operativi estremamente semplici come quelli della MdT
Halting problem
➔ Determinare, data la descrizione di una MdT arbitraria e un suo input, se tale macchina terminerà
l’esecuzione sull’input dato, o continuerà invece a girare all’infinito
➔ Intuitivamente, si tratta di definire una MdT x che, ricevuta in input la descrizione di un’altra MdT y
e dell’input per y, determina se y termina su tale input
➔ Alan Turing dimostra nel 1936 che un algoritmo generale, in grado di risolvere l’halting problem per
ogni possibile coppia di MdT e relativo input, non può esistere
4.Il calcolatore: Cenni storici
Le origini
➔ La storia dei moderni calcolatori ha radici lontane
➔ L’abaco:
◆ usato sin dal XXI secolo a.C. in Cina e nella Mezzaluna Fertile, e utilizzato in seguito
anche tra i Greci e i Romani
◆ in realtà, è meramente un sistema per la rappresentazione e la memorizzazione
dell’informazione
◆ il controllo dell’esecuzione è demandato ad un operatore umano
La macchina di Anticitera
➔ La macchina di Anticitera è un congegno meccanico datato 23 dicembre 178 a.C.
(studiando la sua calibrazione iniziale)
➔ Rinvenuto nel 1900 tra i resti di un naufragio avvenuto nel secondo quarto del I secolo
a.C. nei pressi dell'isola greca di Cerigotto
➔ Consente il calcolo automatizzato della posizione dei pianeti nel cielo (output) ad ogni
data futura e passata (input), secondo procedure prestabilite ed espresse in modo formale: i
meccanismi e i loro movimenti
➔ È ritenuto il più antico calcolatore meccanico conosciuto
Calcolatori elettromeccanici
➔ Negli anni ‘40 si ha l’avvento dei calcolatori elettromeccanici a relè in Germania con
Konrad Zuse
un relè è un interruttore elettromagnetico la cui apertura e chiusura può essere
controllata tramite un altro circuito elettrico
➔ 1944: IBM Mark I, utilizza 3000 relè e pesa 5 tonnellate; riesce a sommare due numeri di
23 cifre in meno di mezzo secondo
◆ Durante il suo utilizzo nasce anche il termine “bug”
c ELETTRONICI
➔ 1946: ENIAC, primo calcolatore elettronico, che utilizza 10.000 condensatori, 18.000
valvole termoioniche, 70.000 resistenze e pesa 30 tonnellate; effettua 5.000
addizioni/secondo, e ha una memoria di 200 byte
Transistor
➔ 1947: alla Bell Corporation vengono
inventati i transistor, dispositivi più affidabili,
più piccoli, più duraturi e più veloci delle
valvole termoioniche
➔ 1954: primo computer a Transistor
Transistor dispositivi formati da
semiconduttori, che iniziarono a sostituire nei
calcolatori le valvole termoioniche
➔ 1956: l’IBM Model 350 è primo disco rigido commerciale, composto da 50 dischi
metallici larghi 60 cm, e con una capacità di 3.75 megabyte
➔ 1958: viene costruito il primo microchip, o circuito integrato: i circuiti elettrici diventano
microscopici
Computazione batch
➔ Negli anni ‘50 e ‘60, i calcolatori supportano i sistemi informativi aziendali per compiti
batch, ancora basati sull’uso di schede perforate; personale altamente specializzato per
l’esecuzione di job
➔ Per la memorizzazione si utilizzano principalmente i nastri magnetici, che consentono un
accesso sequenziale all’informazione
➔ Grande eterogeneità nell’hardware e nel software
5. Il calcolatore: Hardware
Definizioni e intuizione
L'hardware è la parte materiale di un computer, ossia tutte quelle parti elettroniche,
elettriche, meccaniche, magnetiche, ottiche che ne consentono il funzionamento.
La differenza tra hardware e software può essere chiarita con la seguente
metafora musicale:
➔ se l’hardware può essere considerato alla stregua di uno strumento musicale,
➔ il software corrisponde alla partitura,
➔ mentre l’informazione elaborata, ossia l’output, equivale alla musica eseguita
Componenti principali
➔ Unità centrale di elaborazione (CPU), a sua volta articolata in
◆ Unità di controllo (CU)
◆ Unità aritmetico-logica (ALU)
◆ Registri
➔ Memoria centrale/principale (RAM), che immagazzina dati e istruzioni dei programmi:
ogni operazione estrae dati/istruzioni dalla memoria, li elabora e poi li rimanda alla memoria
➔ Unità di input (es., tastiera e mouse)
➔ Unità di output (es., monitor, memorie di massa/ottiche)
➔ Bus, più canali che collegano tutti i dispositivi fra loro
◆ un po’ come il sistema nervoso negli esseri viventi
La CPU
➔ La CPU esegue i programmi memorizzati nella memoria centrale, prelevandone le
istruzioni, esaminandole, ed eseguendole in sequenza
➔ La CPU ha diversi componenti:
◆ L’unità di controllo (CU) trasferisce dati e istruzioni da/verso la memoria principale
(parole = sequenze di bit, es. 32 o 64)
◆ L’unità aritmetico-logica (ALU) esegue semplici operazioni aritmetiche e
booleane (es., somma o AND)
◆ I registri costituiscono una piccola memoria di lavoro interna alla CPU
estremamente veloce:
● Program Counter (PC): punta alla successiva istruzione che deve essere
recuperata per l’esecuzione dalla memoria
● Instruction Register (IR): memorizza l’istruzione correntemente in esecuzione
Registri e ALU
Il ciclo fetch-decode-execute
La CPU esegue ciascuna istruzione ripetendo una piccola serie di passi (ciclo
fetch-decode-execute), gestiti dalla CU:
1. Recupera l’istruzione da eseguire dalla memoria (puntata dal PC), e la memorizza nell’IR
2. Cambia il PC affinché punti alla successiva istruzione da eseguire
3. Determina il tipo di istruzione recuperata dalla memoria
4. Se l’istruzione necessita di dati contenuti in memoria, determina dove si trovano
5. Recupera i dati, se necessari, e li memorizza nei registri della CPU
6. Esegue l’istruzione tramite l’ALU
7. Ritorna al passo 1
Memoria cache
➔ Le CPU sono da sempre più veloci della memoria
principale
➔ Quando la CPU richiede dei dati in memoria, possono
trascorrere diversi cicli (ciclo ~ tempo necessario per
l’esecuzione di una semplice operazione) prima che tali dati
vengano trasferiti sui registri interni
➔ Soluzione: creare una memoria intermedia, piccola e
molto veloce, la cache (circa 3–5 volte più lenta dei registri
La memoria
Nel calcolatore sono presenti varie
tipologie di memoria:
➔ Diverse caratteristiche di capacità,
velocità, costo e volatilità
➔ Tutte memorizzano l’informazione
sotto forma di 0/1, sfruttando diverse
tecnologie
➔ Possiamo organizzare le memorie in
uno schema a piramide
La memoria principale
➔ La memoria principale (RAM, Random Access Memory) memorizza dati e istruzioni sui
quali il calcolatore deve lavorare
➔ Dialoga direttamente con la CPU
➔ Capienza limitata (tipicamente 4–16 GB)
➔ Veloce (anche se 10–100 volte più lenta della CPU cache)
➔ Volatile: perde il suo contenuto allo spegnimento della macchina
➔ Può essere implementata con flip-flop (SRAM); oggi tipicamente si sfruttano altre
tecnologie (DRAM, SDRAM)
La memoria secondaria
➔ A prescindere dalla sua grandezza, la memoria principale non sarà mai sufficiente a
contenere tutta l'informazione che un utente medio vuole memorizzare
➔ Inoltre, allo spegnimento, la memoria principale perde le sue informazioni
➔ La memoria secondaria (o di massa) ha come scopo primario la memorizzazione
permanente delle informazioni al suo interno
◆ Capacità più elevata della RAM
◆ Tempo di accesso più elevato della RAM
➔ SSD, HDD, CD, DVD…
Dischi allo stato solido
➔ I dischi allo stato solido (SSD, solid-state disk) sono costituiti da celle di memoria flash
(simili a quelle delle chiavette USB) che memorizzano l'informazione tramite speciali
transistor
➔ A differenza degli hard disk, non hanno parti mobili:
◆ Maggiore resistenza agli urti e alle sollecitazioni
◆ Maggiore velocità di accesso e trasferimento dei dati (0.1 millisecondi, 15 volte più
veloce risp. hard disk)
➔ Svantaggi vs. HDD:
◆ Costo superiore
◆ Durata: una cella tipicamente supporta 100.000 scritture
◆ Dimensioni: 64 GB – 4 TB
Dischi magnetici
➔ Un disco magnetico (o hard disk, HDD, storicamente per distinguerlo dal
floppy disk) è costituito da 1–12 piatti di alluminio ricoperti da materiale magnetizzabile
➔ Inizialmente, i piatti potevano essere 50 cm in diametro; oggi, tipicamente variano dai 3
ai 9 cm
Dischi magnetici, lettura e scrittura
➔ Ciascun disco ruota e sulla sua superficie è posta una testina,
che può muoversi verso l'interno o l'esterno del disco
➔ La testina fluttua ad un'altezza di circa 0.5 micron
➔ Le testine scrivono i dati sulla superficie del disco
modificando la carica del materiale magnetizzabile, tramite
l'applicazione di una corrente positiva o negativa
➔ Similmente, la carica del materiale magnetizzabile induce una
corrente positiva o negativa nella testina; in questo modo si
effettua la lettura
6. Il calcolatore: Software
Il software costituisce la parte logica di un calcolatore
➔ Agisce come tramite tra l’utente e la macchina
➔ Guida l’hardware nell’esecuzione dei suoi compiti
Si divide in due componenti principali:
➔ Il Sistema Operativo
➔ I programmi applicativi (che sfruttano il SO)
Il software applicativo
Insieme dei programmi, non compresi nel sistema operativo, che svolgono attività e
compiti per determinati tipi di lavori, finalizzati a produrre certi risultati, soddisfando
specifiche esigenze dell’utente ()
➔ Elaboratori di testi (MS Word, LibreOffice Writer)
➔ Fogli elettronici (MS Excel, LibreOffice Calc)
➔ Elaboratori di presentazioni (MS PowerPoint, LibreOffice Impress)
➔ Browser web (MS Edge, Google Chrome, Mozilla Firefox, Apple Safari)
➔ Database (MS Access, PostgreSQL, Neo4j)
➔ Posta elettronica (MS Outlook, Mozilla Thunderbird, Apple Mail)
➔ Grafica (Adobe Photoshop, MS Paint, GIMP)
➔ Riproduttori multimediali (Windows Media Player, VLC)
I SW sottolineati sono open source, vale a dire il loro codice è libero per l’uso e
la modifica… impulso anche per l’accesso aperto ai dati e ai prodotti della
ricerca scientifica!
Il sistema operativo
➔ Il sistema operativo è il programma che controlla il funzionamento del calcolatore, ed
è sempre in esecuzione sulla macchina
➔ Fornisce all'utente diversi servizi, come la memorizzazione ed il recupero dei file e
l'esecuzione dei propri programmi, uso delle periferiche, …
➔ Esistono diversi sistemi operativi, (Windows, Solaris, Unix-like come Macintosh e Linux,
…)
➔ Sebbene essi forniscano agli utenti un'esperienza di utilizzo comparabile, le loro
caratteristiche interne li rendono piuttosto diversi l'uno dall'altro per i professionisti del
settore
➔ collezione di programmi di utilizzo generale per l’interazione tra utente e calcolatore,
la gestione delle risorse in dotazione allo stesso calcolatore e il supporto
all’esecuzione del software applicativo
Il sistema operativo
Cenni storici
➔ Le origini dei sistemi operativi sono da rintracciare nei primi sistemi batch
➔ Si trattava di software realizzati per la specifica macchina, a volte dal cliente stesso, e
potevano dunque essere molto diversi gli uni dagli altri (anche dato lo stesso modello di
macchina)
➔ 1956: GM-NAA I/O, sviluppato dalla divisione di ricerca della General Motors per il suo
IBM 704, viene considerato il primo sistema operativo realizzato e utilizzato in ambito
commerciale
➔ In tale contesto, il compito principale di un sistema operativo era semplificare
l’esecuzione e la transizione fra job
➔ Si limitavano principalmente a leggere l'input nell'ordine in cui era loro fornito, eseguire le
istruzioni in esso contenute, e generare l'output finale
➔ Nel tempo, si è assistito ad un progressivo arricchimento delle loro funzionalità
Funzionalità
Il sistema operativo si occupa tipicamente delle seguenti funzioni:
➔ Controllo dell’esecuzione di programmi (processi)
➔ Accesso ai dispositivi di I/O (periferiche)
➔ Archiviazione di dati e programmi nella memoria di massa
➔ Controllo degli accessi e protezione
➔ Monitoraggio e gestione delle risorse
➔ Gestione dei malfunzionamenti
➔ Dialogo con l’utente tramite GUI o CLI
STRUTTURA
Nucleo (Kernel)
➔ Il nucleo (o kernel) gestisce l’esecuzione dei programmi sulla CPU, decidendo quali
avviare, mettere in pausa, bloccare, …
➔ Un programma in esecuzione sulla macchina viene detto processo
➔ Il programma è quindi un insieme statico di istruzioni (come uno spartito musicale)...
➔ … mentre un processo è un'attività dinamica, le cui proprietà cambiano nel tempo
(come un musicista che suona lo spartito)
➔ Un processo, per la sua esecuzione, ha a disposizione un insieme di risorse assegnate
dal sistema operativo (in termini di calcolo e memoria)
La multiprogrammazione
➔ A differenza del musicista, che suona un pezzo musicale alla volta, all'interno del sistema
operativo sono tipicamente in esecuzione molti processi allo stesso tempo
➔ Attraverso task manager (in Windows) o monitoraggio attività (in OS X) è possibile avere
un’idea dei processi in esecuzione nel sistema operativo
➔ Il tempo di calcolo fornito dal processore viene suddiviso in brevi intervalli di alcuni
millisecondi, detti quanti
➔ Al termine ogni intervallo, il processore può dedicarsi a un diverso processo (seguendo le
scelte dello scheduler)
➔ L'operazione con cui il processore passa da un processo all'altro viene detta context
switch ed implica il salvataggio dello stato del processo “uscente” ed il ripristino dello stato
del processo “entrante” (es., program counter, instruction register, dati nei registri e in
memoria principale)
➔ Intuitivamente, è come una persona che, mentre sta svolgendo un compito, viene
interrotta da un'altra attività
◆ Prima di dedicarsi alla nuova attività, la persona annota nel dettaglio quanto stava
facendo
◆ Terminata l'attività incombente, essa rilegge gli appunti e riprende il compito
precedente da dove l’aveva lasciato
DRIVER→ fornisce al sistema operativo tutti i dettagli operativi per gestire una periferica
➔ I driver, forniti dai produttori delle periferiche fisiche stesse, realizzano le funzionalità
dell’interfaccia “virtuale”, implementando le funzionalità che il sistema operativo si aspetta
di poter svolgere sulle periferiche di un determinato tipo
➔ Un driver è quindi una sorta di “traduttore”, che converte un comando generico, es.
stampa(...), nello specifico formato atteso dalla vostra stampante (che può variare molto tra
una stampante e l’altra)
◆ Permette di astrarre dalle caratteristiche tecniche dei singoli dispositivi
Driver scritti male sono la prima causa di instabilità e malfunzionamenti del calcolatore…
➔ Oltre ai dati in essi contenuti, i file possiedono anche una serie di metadati
(dati sui dati), che li descrivono
OPERAZIONI
➔ Le operazioni tipicamente supportate dal file system includono:
◆ Creazione, modifica e cancellazione di un file o di una cartella
◆ Cambio del nome di un file o di una cartella
◆ Spostamento e copia di un file o di una cartella
◆ Modifica dei metadati di un file o di una cartella
➔ A ciascun file nel file system è associato un percorso che lo identifica univocamente
all’interno della struttura ad albero
◆ cammino che si deve compiere per raggiungere un determinato file a partire dalla
radice dell'albero
◆ ecco perché è possibile avere due file con lo stesso nome in cartelle diverse, ma
non all’interno della stessa cartella
Interfaccia utente interfaccia uomo/macchina
Codifica di testi
➔ Idea: associare un diverso pattern di bit a ciascun carattere
◆ Il testo può così essere rappresentato dalla concatenazione dei pattern di bit associati
ai caratteri
➔ Problema: quali pattern associare ai diversi caratteri?
◆ Negli anni '40 e '50, sistemi diversi utilizzavano codifiche diverse
◆ Difficoltà riguardanti l’interoperabilità e lo scambio dei dati
➔ Soluzione: standardizzazione
L’ASCII (american standard Code for information interchange) è una codifica per la quale
7
ogni carattere è rappresentato da una sequenza di 7 bit (2 = 128 caratteri), proposto
inizialmente da IBM e adottato da ISO.
L’ASCII esteso è un ‘evoluzione dell’ascii originario, che grazie all’impiego di codici a un
byte consente di raddoppiare da 128 a 256 il numero di caratteri e quindi di rappresentare
anche altre lettere oltre che nelle diverse regioni del mondo.
➔ Problemi:
◆ 128 (o 256) caratteri sono insufficienti per certe lingue dell'Europa orientale o dell'Asia
◆ Non è possibile creare documenti che contengono caratteri provenienti da estensioni
ASCII diverse
◆ Queste sono grosse limitazioni, specialmente dall’avvento di Internet
RTF
Codifica di numeri
➔ Abbiamo visto come codificare caratteri, i quali includono anche caratteri numerici, es.
‘1’
➔ Tale modalità di codifica è utile per rappresentare l’informazione in modo da renderla
fruibile dagli esseri umani
➔ Tuttavia, considerare i numeri come caratteri e codificarli utilizzando ad esempio codici
ASCII sarebbe inefficiente (21 bit per codificare ‘375’)
➔ Sarebbe anche scomodo svolgere delle operazioni matematiche sui numeri rappresentati
così… un po’ come usare i numeri romani: X + XL - III = XLVII
➔ Se l'informazione è prettamente numerica, può essere utilizzato un approccio basato
sulla notazione posizionale: 10 + 40 - 3 = 47
CODIFICA DI IMMAGINI
CODIFICA DI SUONI
CODIFICA DI VIDEO
Multimedialità e multimodalità
➔ Ad esempio, la presentazione corrente è multimediale, in quanto utilizza
contemporaneamente testo e immagini
➔ Se la presentazione coinvolge più sensi per la trasmissione dell’informazione, allora è
anche multimodale
◆ Es., stimolo visivo da testo e immagini + stimolo uditivo dalla musica o effetti sonori
◆ Multimodale era la nostra spiegazione della codifica del suono fatta attraverso Audacity
Protocolli di comunicazione
➔ l ruolo dei protocolli è quello di disciplinare le comunicazioni attraverso una rete
➔ Senza protocolli, più dispositivi potrebbero cercare di comunicare nello stesso momento,
provocando interferenze, o non rimanendo in ascolto dei messaggi provenienti dagli altri
(es., CSMA/CD per le reti Ethernet)
Combinazione di reti
Reti omogenee
A volte è necessario connettere fra loro più reti al fine di creare un sistema di comunicazione
più esteso. Ciò può essere fatto sfruttando diversi dispositivi:
➔ un ripetitore inoltra i messaggi fra due diversi bus, eventualmente amplificando i segnali
➔ un bridge connette due diversi bus, similmente ad un ripetitore.
Tuttavia, inoltra da un bus all'altro solo i messaggi scambiati tra macchine che si trovano
sulle due reti opposte. In questo modo, le comunicazioni che avvengono fra le macchine di
una stessa rete non interferiscono con quelle fra le macchine dell'altra rete
➔ uno switch è un bridge che connette fra loro più di due bus
➔ Attraverso il collegamento delle reti omogenee, si ottiene una nuova rete più estesa, della
stessa tipologia delle reti componenti (es., collegamento di più reti Ethernet fra loro tramite
uno switch)
➔ Similmente a come accade collegando fra loro, all’interno di una casa, gli impianti
idraulici di bagno, cucina, lavanderia…
Reti eterogenee
➔ Spesso, le reti da connettere hanno caratteristiche incompatibili (es., diverse topologie,
diversi protocolli di comunicazione)
➔ In tal caso, si rendono necessarie strategie di connessione più complesse
➔ Si viene a creare una rete di reti, in cui le reti originali mantengono la loro individualità
➔ Tale rete di reti prende il nome di internet (da non confondere con Internet, con la “I”
maiuscola)
➔ Per fare un parallelismo, pensiamo al sistema viario
➔ Un grande campus universitario potrebbe avere una sua rete viaria interna, indipendente
da quella stradale esterna, e potrebbe essere collegata a quest’ultima tramite degli ingressi
(gateway)
➔ La stessa cosa potrebbe avvenire per una
sede di una grande azienda
➔ Le due reti viarie “interne”, che mantengono
la loro identità, sono collegate fra loro tramite
la rete stradale (rete internet)
Router
➔ La connessione tra reti viene gestita da dispositivi detti router
➔ Compito dei router è gestire l'inoltro di messaggi fra le reti
➔ Si consideri il caso in cui un dispositivo A posto in una rete WiFi voglia inviare un
messaggio ad un dispositivo B posto in una rete Ethernet, connesse in una rete internet:
a. A invia il messaggio al proprio access point WiFi
b. L'access point invia il messaggio al router associato (a meno che i due
dispositivi corrispondano)
c. Il router inoltra il messaggio ad un dispositivo router sulla rete Ethernet
di destinazione
d. Tale dispositivo diffonde il messaggio sul bus
e. B riceve il messaggio dal bus
Internet
➔ Internet (con la “I” maiuscola) è il più famoso esempio di rete internet
➔ Rete globale che utilizza il protocollo TCP/IP per la gestione delle comunicazioni fra i
dispositivi
➔ Le radici si hanno negli anni '60, in diversi progetti DARPA (U.S. Defense Advanced
Research Projects Agency)
➔ Precursore di Internet è ARPANET, utilizzato negli anni '70 per connettere organizzazioni
militari e accademiche
Architettura di Internet
➔ Le reti che compongono Internet sono gestite da organizzazioni dette Internet Service
Provider (ISP)
➔ Le reti gestite dagli ISP possono essere classificate in una gerarchia, a seconda del ruolo
che giocano nella struttura generale di Internet:
◆ Al vertice della gerarchia si trovano i tier-1 ISP, che gestiscono WAN ad elevata capacità
e velocità, che si estendono su scala internazionale/intercontinentale (backbone)
◆ Alle reti dei tier-1 ISP si connettono le reti dei tier-2 ISP, che sono su scala regionale e
hanno capacità inferiori
◆ L'accesso alle reti degli ISP dei primi due livelli, che costituiscono il cuore di Internet,
viene fornito da un intermediario detto tier-3 ISP.
Quest'ultimo gestisce una propria rete indipendente, fornendo l'accesso ai clienti (es., TIM,
Fastweb, …)
Gerarchia di ISP
Protocolli TCP/IP
➔ Il funzionamento della rete Internet si basa sull’utilizzo della suite di protocolli
TCP/IP, che costituisce uno standard de facto sin dagli anni ‘70
➔ La suite ha due componenti principali:
◆ TCP, Transmission Control Protocol: gestisce il flusso dell’informazione a
pacchetto fra due dispositivi connessi alla rete
◆ IP, Internet Protocol: fornisce il sistema di indirizzamento dei dispositivi
connessi alla rete
➔ Sfruttando le funzionalità offerte dalla suite TCP/IP, sono state sviluppate diverse
applicazioni Internet, ciascuna basata su altri, specifici protocolli
◆ Posta elettronica: SMTP, POP3, IMAP
◆ Comunicazioni telefoniche: VoIP (Voice over IP)
◆ Streaming multimediali: RTSP
◆ Trasferimento file: FTP
◆ World Wide Web: HTTP
Indirizzi IP
➔ Ciascun dispositivo connesso alla rete Internet è identificato da un indirizzo univoco,
detto IP address (Internet Protocol address)
➔ Originariamente, un indirizzo IP era costituito da un pattern di 32 bit (IPv4, es.
255.110.145.0), che consente di identificare circa 4 miliardi di dispositivi
◆ Indirizzi da 0.0.0.0 a 255.255.255.255
➔ Ad oggi è in corso il (difficoltoso) passaggio verso indirizzi IP a 128 bit (IPv6), per
consentire uno spazio di indirizzamento più ampio
➔ Blocchi contigui di indirizzi IP sono assegnati agli ISP dall'ICANN (Internet Corporation
for Assigned Names and Numbers), una compagnia non-profit nata per coordinare l'uso di
Internet
➔ Gli ISP poi gestiscono l’assegnamento degli IP ai dispositivi dei propri clienti, in modo
statico o dinamico
Indirizzi mnemonici
➔ Utilizzare direttamente gli indirizzi IP sarebbe scomodo per gli esseri umani
➔ Internet dispone di un sistema di indirizzamento alternativo in cui i dispositivi sono
identificati da nomi mnemonici, es. uniud.it
➔ Tale sistema di indirizzamento è basato sul concetto di dominio, che può essere
considerato come una “regione” di Internet gestita da una singola autorità, quale
un'università, un'azienda, o un'agenzia governativa
➔ I domini vengono registrati presso l'ICANN da appositi enti detti registrar
➔ All'atto della registrazione, a un dominio viene assegnato un nome, univoco all'interno di
Internet
➔ Una volta registrato un nome di dominio, la relativa organizzazione può estenderlo
liberamente per ottenere ulteriori identificatori univoci al suo interno, che si riferiscono a
sottodomini (dimi.uniud.it) o macchine/dispositivi specifici all’interno di essi, ad esempio
datasciencelab.dimi.uniud.it
Paradigma Client/Server
➔ La maggior parte delle applicazioni Internet (e dei loro relativi protocolli) si basa sul
paradigma di comunicazione Client/Server, che prevede due entità
◆ L’entità Client che richiede il servizio: un qualsiasi programma che invia una richiesta e
aspetta una risposta
◆ L’entità Server che offre il servizio: macchina sempre in esecuzione, in ascolto di
richieste da parte dei client
➔ Si osservi che uno
stesso dispositivo
può ricoprire entrambi
i ruoli
➔ I software che
consentono agli utenti
di accedere agli
ipertesti (“pagine Web”) disponibili su Internet ricadono in due categorie principali
◆ Browser: risiede sulla macchina dell’utente e si occupa di recuperare il materiale da
esso richiesto, presentandolo in maniera ordinata e fruibile (es., Chrome, Edge, Firefox,
Safari)
◆ Web server: risiede su una macchina contenente ipertesti. Il suo compito è fornire
l’accesso a tali dati agli utenti che ne fanno richiesta
URL
➔ Al fine di poter
localizzare e
recuperare
documenti sul Web,
a ciascuno di essi
viene assegnato un
indirizzo univoco,
detto Uniform Resource Locator (URL)
➔ Un URL contiene tutta l'informazione di cui un browser necessita per contattare il
server e richiedere il documento desiderato (es., un ipertesto da visualizzare)
A volte, un URL consiste solamente della parte relativa al protocollo e al nome mnemonico
di una macchina, senza quelle relative al percorso e al
file da recuperare
➔ Ad esempio, http://www.google.com
➔ In tal caso, il web server installato sulla macchina restituisce una pagina
(documento) di default, tipicamente chiamata home page
➔ Infine, anche la parte relativa al protocollo può essere tipicamente ignorata.
In tal caso, il browser assume, di default, “http://”
➔ Ad esempio, www.google.com
Worm
➔ I worm, a differenza dei virus, non necessitano di un programma ospitante per operare:
sono a sé stanti
➔ Una volta che un worm è entrato nel sistema operativo, es. attraverso una connessione
di rete o un file scaricato, è in grado di copiarsi più volte e di diffondersi attraverso la
connessione di rete, senza intervento dell'utente
➔ Poiché ogni copia successiva di un worm può a sua volta auto-replicarsi, le infezioni si
possono diffondere molto rapidamente tra le reti
➔ Il risultato è un degrado delle prestazioni delle macchine infette, nonché un sovraccarico
dell'intera rete
➔ Take home message: non collegatevi a siti non attendibili
Worm Curiosità
➔ L'idea di un programma auto-replicante fu teorizzata per la prima volta da John von
Neumann nel 1949
➔ Il primo codice, sperimentale, in grado di auto-replicarsi e diffondersi si ebbe solo nel
1971 con Creeper, considerato il primo worm della storia, scritto per diffondersi su
ARPANET (primo antivirus Reaper, nel 1972)
➔ Morris viene considerato il primo worm dell'epoca moderna (1988), distribuito via Internet
➔ Creato da uno studente della Cornell University, USA, e poi diffuso dallo stesso tramite i
laboratori del MIT
➔ Inconsapevolmente, scatena un attacco che porta alla congestione e alla paralisi di una
buona parte di Internet, causando danni per milioni di dollari
➔ Robert Tappan Morris diventa la prima persona ad essere condannata negli USA per
pirateria informatica
➔ Nel 2006, diventa professore al MIT
Trojan
➔ Un trojan è un programma nocivo che penetra in un sistema camuffandosi da un
programma desiderato dall'utente, come un videogame
➔ Una volta nel sistema, il trojan può rimanere dormiente fino al verificarsi di una
condizione di attivazione, ad es. basata su una determinata data e ora
➔ Una volta attivato, il trojan inizia a svolgere attività dannose, come aprire le aprire le porte
ad altre infezioni
➔ A differenza dei virus e dei worm, i trojan non sono in grado di replicarsi
➔ Take home message: il sistema potrebbe essere infetto anche in assenza di sintomi;
eseguite regolari scansioni antivirus
Spyware
➔ Un'altra famiglia di software nocivi è data dagli spyware
➔ Obiettivo degli spyware è collezionare informazioni riguardanti i sistemi infettati
➔ Ad esempio, possono cercare di recuperare dati relativi all'utente del sistema con il fine
di delinearne un profilo di interesse commerciale
➔ In altri casi, l'attacco è più subdolo, come la registrazione dei pulsanti digitati dall'utente
sulla tastiera, con l'obiettivo di carpire password e numeri di carte di credito
➔ Infine, le informazioni raccolte vengono inviate all'attaccante
➔ Take home message: esistono più software antimalware; alcuni sono specializzati nella
rimozione di virus/worm/trojan, altri di spyware
Phishing
➔ Il termine phishing non si riferisce ad un software malevolo, ma ad una tecnica utilizzata
per ingannare l'utente affinché esso comunichi spontaneamente informazioni riservate
all'attaccante
➔ Un esempio è dato da email accuratamente camuffate in modo da sembrare a prima
vista lecite, ed in grado di superare i controlli anti-spam
➔ Ad esempio, un utente potrebbe ricevere una falsa email da parte di un servizio di
streaming al quale è abbonato, in cui viene invitato ad accedere al proprio account per
aggiornare determinate impostazioni. Cliccando su un link, l'utente viene invece indirizzato
su un sito malevolo
➔ Take home message: verificate sempre il mittente delle e-mail; se in dubbio, esaminate
gli indirizzi dei collegamenti riportati in esse prima di cliccarli
Protezioni e cure
Firewall
➔ Una tecnica primaria di prevenzione degli attacchi è filtrare il traffico che attraversa un
determinato punto della rete, utilizzando un software detto firewall
➔ Ad es., un firewall potrebbe essere installato all'interno di un gateway che connette una
rete aziendale alla rete Internet
➔ Compito del firewall è bloccare i messaggi uscenti destinati a specifici indirizzi, o i
messaggi entranti provenienti da origini non affidabili
Filtri antispam
➔ I filtri antispam possono essere considerati come dei firewall specializzati, il cui compito
è distinguere le e-mail desiderate/lecite da quelle indesiderate/fraudolente
➔ Le tecniche utilizzate dai filtri antispam possono essere molto sofisticate e basate, ad
esempio, sull'analisi del testo e su strumenti di apprendimento
automatico (machine learning)
➔ I filtri non sono infallibili: a volte, alcuni messaggi di tipo spam possono essere
scambiati per leciti, e viceversa
➔ Take home message: se non trovate un messaggio, potrebbe essere finito nella cartella
“posta indesiderata”; viceversa, non è detto che tutti i messaggi non filtrati siano attendibili
Antimalware
➔ Software progettati per rilevare ed eliminare i software dannosi, proteggendo l'utente
➔ In commercio esistono moltissimi software del genere, ad esempio:
◆ Gratuiti: Avira, AVG, Avast, Windows Defender, Malwarebytes
◆ A pagamento: Kaspersky, McAfee
➔ Alcuni di essi svolgono una funzione specifica, ad esempio, gli antispyware (es.,
Superantispyware, Spybot), ormai poco usati
➔ Take home message: ogni giorno nascono nuove minacce. Un software antimalware, per
essere efficace, deve essere mantenuto aggiornato
HTTP vs HTTPS
➔ HTTP è il protocollo standard/originario di comunicazione tra un client ed un server Web
per il trasferimento di ipertesti
➔ La comunicazione tramite HTTP non è sicura: i dati sono trasferiti fra client e server in
chiaro, chiunque può intercettarli e leggerli (esempio)
➔ HTTPS è la “variante sicura” del protocollo HTTP: tutti i dati trasferiti fra client e server
sono cifrati, dunque, anche intercettandoli, non risultano leggibili a terze parti. Nel tempo ha
quasi del tutto sostituito HTTP
➔ Take home message: non inserite mai dati sensibili, numeri di carte di credito o
password se la comunicazione sta avvenendo tramite HTTP
HTML
➔ L'HTML (HyperText Markup Language) è stato sviluppato nei primissimi anni novanta da
Tim Berners-Lee al CERN di Ginevra, assieme al protocollo HTTP dedicato al trasferimento
di documenti in tale formato
➔ A partire dal 1994 il linguaggio ha avuto una forte diffusione in seguito ai primi utilizzi
commerciali del web
➔ Nello stesso anno nasce il World Wide Web Consortium (W3C), organizzazione non
governativa internazionale che ha come scopo quello di favorire lo sviluppo di tutte le
potenzialità del World Wide Web e di diffondere la cultura dell'accessibilità della Rete
➔ Il W3C stabilisce anche gli standard tecnici per il World Wide Web inerenti sia ai
linguaggi di markup che ai protocolli di comunicazione
➔ Nel 2014 è stata rilasciata la versione HTML 5, che permette di aggiungere al
documento ipertestuale controlli più sofisticati sulla grafica, interazioni dinamiche con
l'utente, animazioni interattive e contenuti multimediali
Sezioni HTML
Un documento HTML (dunque, anche una pagina Web)
si compone di 2 sezioni:
➔ head: contiene metadati (dati sui dati) riguardanti il
documento, quali: titolo, codifica utilizzata per i caratteri,
informazioni per i motori di ricerca, eccetera
➔ body: contiene gli elementi principali di un
documento, visualizzati dal browser: paragrafi, immagini,
collegamenti, tabelle, liste, eccetera
CSS
➔ L’HTML consente di definire la struttura, il contenuto di una pagina Web (organizzare il
testo in titoli e paragrafi, inserire un’immagine, specificare link ad altre risorse/pagine)
➔ Sebbene consenta anche di specificare alcune informazioni relative alla formattazione,
come vedremo non si tratta della soluzione migliore per farlo
➔ I fogli di stile a cascata (Cascading Style Sheets, CSS) hanno lo scopo fondamentale di
separare struttura e presentazione di una pagina Web
Cascading
La parola chiave di CSS è cascading:
➔ è prevista e incoraggiata la presenza di fogli di stile multipli, che agiscono uno dopo
l’altro, in cascata, per indicare le caratteristiche tipografiche e di layout di un documento
HTML
➔ ad esempio, un primo foglio di stile, generale, potrebbe indicare caratteristiche di default,
da applicare a tutto il contenuto della pagina web: ad esempio utilizzare il font “Futura” di
grandezza “15” e di giustificare il testo
➔ poi, utilizzando un secondo foglio di stile, si può specificare un trattamento diverso per
tutti i sottotitoli: ad esempio utilizzare il font “Futura” di grandezza “20” e di centrare il testo
➔ il secondo foglio di stile “sovrascrive”, per i sottotitoli, alcune delle direttive generali date
in precedenza dal foglio di stile più generico
Vantaggi del CSS
I vantaggi della separazione di competenze sono evidenti:
➔ cambiando il CSS si può dare un aspetto completamente diverso alla pagina Web,
senza modificarne la struttura del contenuto specificato dall’HTML
➔ lo stesso contenuto diventa riusabile in più contesti: ad esempio, in un ambito formale
e in uno informale… cambia più spesso l’aspetto visivo di una pagina che il suo contenuto
➔ una data regola di stile può essere specificata una sola volta, e poi essere applicata ad
ogni occorrenza di un dato elemento (es., per rendere ogni sottotitolo di colore blu e in
grassetto)
➔ si può materialmente dividere il lavoro fra chi gestisce il contenuto e chi si occupa della
parte grafica
➔ si ottiene un codice HTML molto più “pulito”
Tramite le classi è possibile attribuire a tag di diverso genere gli stessi attributi di
formattazione