Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Informatica per studi umanistici, Slide di Fondamenti di informatica

appunti dalle slide caricate dal professore

Tipologia: Slide

2025/2026

Caricato il 22/12/2025

kykksqnbw2
kykksqnbw2 🇮🇹

1 documento

1 / 14

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica
Con il termine Informatica si indica l'insieme dei processi e delle tecnologie che rendono possibile la creazione, la raccolta,
l'elaborazione, l'immagazzinamento e la trasmissione dell'informazione con metodologie e strumenti automatizzati.
Deriva dalla contrazione di due parole francesi: "information" e "automatique"
Le tecnologie informatiche hanno tre funzioni principali:
1. elaborazione informazioni
2. memorizzazione informazioni (ed eventualmente combinarle con altre)
3. organizzare le informazioni in modo da renderle più comprensibili
Hardware e software
Le tecnologie informatiche sono sistemi caratterizzati da due livelli che integrano e si completano vicendevolmente:
l'hardware e il software.
- Hardware indica la struttura fisica dei dispositivi costituita (solitamente) da componenti elettronici che svolgono
funzioni nel trattamento e trasmissione dell'informazione.
- Software indica il livello logico, cioè l'insieme delle istruzioni che consentono all'hardware di svolgere i propri
compiti
Computer
Macchina per l'elaborazione di dati rappresentati da caratteri alfanumerici variamente codificati, che vengono sottoposti a
procedimenti aritmetici e logici, memorizzati in archivi e resi reperibili e trasmissibili.
Che cos'è un sistema?
Un sistema è un insieme di parti (componenti) correlate tra loro che operano in maniera congiunta per svolgere una
specifica funzione.
A seconda della scala un computer può essere considerato un sistema oppure un componente di un sistema di computer
collegati tra loro (Internet).
Macchina di Von Neumann
L'architettura di Von Neumann è una tipologia di architettura hardware per computer digitali programmabili a programma
memorizzato la quale condivide i dati del programma e le istruzioni del programma nello stesso spazio di memoria.
Lo schema si basa su cinque componenti fondamentali:
- Unità centrale di elaborazione (CPU), che si divide in:
Unità di controllo che si occupa di controllare le operazioni del calcolatore, interpretare le istruzioni prelevate dalla memoria
e inviare alle altre unità i segnali per l'esecuzione delle operazioni
Unità aritmetico-logica (ALU) che fornisce la capacità di effettuare operazioni aritmetiche di base
- Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory);
- Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati;
- Unità di output, necessaria affinché i dati elaborati possano essere restituiti all'operatore;
- Bus, un canale che collega tutti i componenti fra loro.
In queste ipotesi, per ogni istruzione del programma:
la CPU, tramite la sua parte Controllo, ordina il prelevamento di una istruzione dalla Memoria; la decodifica, cioè la
interpreta capendo quali azioni comporta; la esegue utilizzando le opportune unità coinvolte durante l'esecuzione può: usare
la ALU effettuare altri accessi in memoria per leggere o scrivere dati effettuare operazioni di ingresso (per es. leggi un dato
dalla tastiera) o di uscita (per es. visualizza il risultato sul video).
Scheda madre
Una scheda madre è un tipo di scheda elettronica principale che raccoglie in sé tutta la circuiteria elettronica e i
collegamenti di interfaccia tra i vari componenti interni principali di un computer come memoria e le altre schede elettroniche
montate o alloggiate sopra, comprendendo anche i bus di espansione e le interfacce verso le periferiche esterne.
E responsabile dunque della trasmissione e temporizzazione corretta di centinaia di segnali diversi tra processore e RAM,
schede di espansione e periferiche esterne attraverso i vari bus di sistema.
CPU
E' la parte "pensante" di ogni computer, costituita da un sottile cristallo di silicio. Su un processore (circa un cm?)
vengono impressi diodi, transistor e circuiti. Esegue le istruzioni ed elabora i dati dei programmi presenti nella memoria
RAM e nei registri interni al processore
I registri sono celle di memoria interne alla CPU su cui vengono memorizzate le informazioni necessarie per l'esecuzione
delle istruzioni.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Anteprima parziale del testo

Scarica Informatica per studi umanistici e più Slide in PDF di Fondamenti di informatica solo su Docsity!

Informatica

Con il termine Informatica si indica l'insieme dei processi e delle tecnologie che rendono possibile la creazione, la raccolta, l'elaborazione, l'immagazzinamento e la trasmissione dell'informazione con metodologie e strumenti automatizzati. Deriva dalla contrazione di due parole francesi: "information" e "automatique" Le tecnologie informatiche hanno tre funzioni principali:

  1. elaborazione informazioni
  2. memorizzazione informazioni (ed eventualmente combinarle con altre)
  3. organizzare le informazioni in modo da renderle più comprensibili Hardware e software Le tecnologie informatiche sono sistemi caratterizzati da due livelli che integrano e si completano vicendevolmente: l'hardware e il software.
  • Hardware indica la struttura fisica dei dispositivi costituita (solitamente) da componenti elettronici che svolgono funzioni nel trattamento e trasmissione dell'informazione.
  • Software indica il livello logico, cioè l'insieme delle istruzioni che consentono all'hardware di svolgere i propri compiti Computer Macchina per l'elaborazione di dati rappresentati da caratteri alfanumerici variamente codificati, che vengono sottoposti a procedimenti aritmetici e logici, memorizzati in archivi e resi reperibili e trasmissibili. Che cos'è un sistema? Un sistema è un insieme di parti (componenti) correlate tra loro che operano in maniera congiunta per svolgere una specifica funzione. A seconda della scala un computer può essere considerato un sistema oppure un componente di un sistema di computer collegati tra loro (Internet). Macchina di Von Neumann L'architettura di Von Neumann è una tipologia di architettura hardware per computer digitali programmabili a programma memorizzato la quale condivide i dati del programma e le istruzioni del programma nello stesso spazio di memoria. Lo schema si basa su cinque componenti fondamentali:
  • Unità centrale di elaborazione (CPU), che si divide in: Unità di controllo che si occupa di controllare le operazioni del calcolatore, interpretare le istruzioni prelevate dalla memoria e inviare alle altre unità i segnali per l'esecuzione delle operazioni Unità aritmetico-logica (ALU) che fornisce la capacità di effettuare operazioni aritmetiche di base
  • Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory);
  • Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati;
  • Unità di output, necessaria affinché i dati elaborati possano essere restituiti all'operatore;
  • Bus, un canale che collega tutti i componenti fra loro. In queste ipotesi, per ogni istruzione del programma: la CPU, tramite la sua parte Controllo, ordina il prelevamento di una istruzione dalla Memoria; la decodifica, cioè la interpreta capendo quali azioni comporta; la esegue utilizzando le opportune unità coinvolte durante l'esecuzione può: usare la ALU effettuare altri accessi in memoria per leggere o scrivere dati effettuare operazioni di ingresso (per es. leggi un dato dalla tastiera) o di uscita (per es. visualizza il risultato sul video). Scheda madre Una scheda madre è un tipo di scheda elettronica principale che raccoglie in sé tutta la circuiteria elettronica e i collegamenti di interfaccia tra i vari componenti interni principali di un computer come memoria e le altre schede elettroniche montate o alloggiate sopra, comprendendo anche i bus di espansione e le interfacce verso le periferiche esterne. E responsabile dunque della trasmissione e temporizzazione corretta di centinaia di segnali diversi tra processore e RAM, schede di espansione e periferiche esterne attraverso i vari bus di sistema. CPU E' la parte "pensante" di ogni computer, costituita da un sottile cristallo di silicio. Su un processore (circa un cm?) vengono impressi diodi, transistor e circuiti. Esegue le istruzioni ed elabora i dati dei programmi presenti nella memoria RAM e nei registri interni al processore I registri sono celle di memoria interne alla CPU su cui vengono memorizzate le informazioni necessarie per l'esecuzione delle istruzioni.

Tutte le sue operazioni sono sincronizzate da un clock. Le varie componenti della CPU devono operare in modo coordinato anche dal punto di vista della temporizzazione degli eventi. Questo si ottiene grazie ad un orologio (clock) che fornisce una cadenza temporale a cui tutte le attività elementari sono sincronizzate. La frequenza del clock, cioè il numero delle attività elementari che vengono eseguite nell'unita di tempo (tale frequenza viene misurata in hertz, Hz), determina la velocità di elaborazione della CPU Tutto viene ridotto ad una sequenza di bit! Al fine di poter essere processata dalla CPU qualsiasi informazione ricevuta manipolata o prodotta dalla CPU deve essere trasformata (più precisamente si dice "codificata") in una sequenza di bit. Inoltre, anche le operazioni sono trasformate in una sequenza di bit per essere interpretate. Memoria I computer usano quindi supporti di memorizzazione di più tipi:

  • Una memoria centrale (RAM): contiene i programmi durante la loro esecuzione ed i dati relativi
  • Una o più memorie di massa (dischi etc.): che mantengono tutti i dati ed i programmi in attesa di essere eseguiti in modo persistente, anche dopo lo spegnimento del calcolatore Tutte le informazioni vengono rappresentate mediante sequenze di 0 e di 1 (bit: Binary DigiT) | bit tra RAM e CPU fluiscono a gruppi di 8 (byte) che risulta essere la più piccola unità accessibile singolarmente. Altri tipi di memoria
  • Memoria di sola lettura (Read-only memory - ROM) Non può essere modificata. A differenza della RAM non è volatile. Contiene le informazioni di inizializzazione usate ogni volta che si accende l'elaboratore (bootstrap)
  • Memoria cache Livello di memoria intermedio tra i registri e la RAM. Memorizza i dati usati più spesso senza doverli recuperare tutte le volte dalla RAM (che è più lenta) Influisce moltissimo sulle prestazioni e sul costo della CPU (e quindi del computer), E' molto più costosa della RAM Si basa sui principi di località "spaziale" o "temporale": Località spaziale: "quando si accede all'indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A." Località temporale: "quando si accede all'indirizzo A, è molto probabile che gli accessi richiedano di nuovo la cella A." Legge di Moore «La complessità di un microcircuito, misurata ad esempio tramite il numero di transistor per chip, raddoppia ogni 18 mesi (e quadruplica quindi ogni 3 anni).» Più transistor = maggior frequenza di funzionamento Analogamente: La capacità delle memorie DRAM quadruplica ogni tre anni (60% anno) I limiti della prima legge di Moore starebbero solo nel raggiungimento dei limiti fisici imposti per la riduzione delle dimensioni dei transistor al di sotto dei quali si genererebbero. Tali limiti sarebbero peraltro già stati raggiunti con la generazione dei processori Pentium al di sopra del quale l'unico modo possibile e praticabile per aumentare le prestazioni di calcolo è rappresentato dalla tecnologia multicore ovvero dall'accoppiamento in parallelo di più processori In conclusione, il calcolatore elettronico oggi è un.. Sistema Elettronico Digitale programmabile:
  • Elettronico Digitale: Sfrutta componenti elettronici digitali (porte logiche) che operano su grandezze binarie (bit) che possono assumere due soli valori (0 e 1) Sistema: E' composto da parti (o componenti) che interagiscono in modo organico fra loro (architettura di von Neumann)
  • Programmabile: Il comportamento del sistema è flessibile e specificato mediante un programma, ossia un insieme di ordini Che cos'è il software? Software indica il livello logico, cioè l'insieme delle istruzioni che consentono all'hardware di svolgere i propri compiti Software e Dati In generale, il mondo del software si divide in due grandi categorie: sistemi operativi (infrastruttura che offre delle funzioni di base) e programmi applicativi (che offrono funzionalità specifiche). Pensiero computazionale Approccio per risolvere problemi, sviluppare sistemi e capire il comportamento umano che riprende i concetti fondamentali della computazione (= calcolo)

Operazioni consentite A seconda del tipo di albero sono consentite o meno le operazioni di cancellazione, aggiunta e verifica appartenenza Grafo Struttura dati in cui gli elementi sono collegati da archi. Nodo: elemento che contiene informazioni Arco: collega due nodi chiamati sorgente e destinazione Operazioni consentite

  • Inserimento di arco/nodo
  • Querying Esempi Rete stradale (nodi incroci, archi strade) Rete internet (nodi router e server, archi collegamenti) Matrice Una matrice è un array bi-dimensionale in cui ogni elemento di un array è a sua volta un array. Può essere visualizzato come se fosse una tabella (righe per colonne). Per accedere ad un elemento bisogna fornire il numero di riga e il numero di colonna. Esempi: Matrice parola/documento Tensore Una matrice è un array n-dimensionale Ad esempio un tensore in 3 dimensioni è un array i cui elementi sono degli array che contengono a loro volta array. Se un array viene visualizzato come un linea e una matrice come un quadrato, allora il tensore in 3 dimensioni può essere visualizzato come un cubo. Per accedere ad un elemento sono necessarie le coordinate e.g. in 3 dimensioni (i,j,k) Esempio: Trasformazioni in spazi vettoriali Come manipoliamo le informazioni? Le strutture dati offrono dei modi per organizzare informazioni generiche utilizzando dei costrutti standard. In altre parole, servono per memorizzare informazioni in modo statico. Per manipolare le informazioni al fine di produrne di nuove dobbiamo eseguire delle sequenze di operazioni. Queste sequenze di operazioni le chiamiamo algoritmi e sono qualcosa di cui tutti abbiamo esperienza quotidiana.. Algoritmo Un'astrazione di una procedura passo passo che prende qualcosa come input e produce un certo output, scritta in un linguaggio specifico in modo che le istruzioni che definisce possano essere communicate e comprese da un computer in modo da ottenere qualcosa come conseguenza dell'elaborazione di qualche materiale di input. Un programmatore è una persona che crea algoritmi e li specifica in programmi usando uno specifico linguaggio comprensibile dal computer (elettronico) Che linguaggio usare per definire un algoritmo? Non esiste un linguaggio standard per descrivere un algoritmo in modo che possa essere immediatamente comprensibile da un qualunque computer Di solito si usa uno pseudocodice, ovvero un linguaggio informale per descrivere i passi principali di un algoritmo ad un umano, anche se non è direttamente eseguibile da un computer elettronico - anche se i suoi costrutti sono strettamente connessi con quelli tipicamente definiti nei linguaggi di programmazione Un esempio di pseudocodice: i diagrammi di flusso - li abbiamo informalmente introdotti prima quando abbiamo visto la "Mappa per le discussioni Linguaggio "naturale" E linguaggio comune, come l'italiano Può essere scritto o orale Si è evoluto in maniera naturale all'interno di una comunità Vantaggio: molto espressivi Svantaggi: alcune frasi sono intrinsecamente ambigue se non accompagnate da un opportuno contesto Il significato di una frase può essere disambiguato mediante l'uso di convenzioni sociali o analizzando il contesto in cui l'azione avviene, in modo da restringere il possibile significato di un pezzo di informazione Formalizzazione di un linguaggio I linguaggi naturali non sono formali per definizione Tuttavia molti studi in linguistica cercano di fornirne una formalizzazione mediante l'uso di strumenti matematici Chomsky è uno dei padri della linguistica moderna - le cui ipotesi di ricerca principali sul linguaggio umano sono:
  • la sua struttura sintattica di base è rappresentabile mediante una teoria matematica, tale struttura è determinata biologicamente in tutti gli umani

Linguaggi e grammatiche formali Un linguaggio formale possiamo pensarlo come un insieme di frasi Una grammatica formale permette descrive come generare un linguaggio ed è definita da 4 elementi: un insieme di regole di produzione, simboli terminali simboli non-terminali simbolo iniziale Grammatica formale Un insieme di regole di produzione di forma premessa ::= espressione, dove la premessa e l'espressione possono contenere uno o più:

  • simboli terminali (specificati tra virgolette), che identificano tutti i simboli elementari del linguaggio in considerazione (come nomi, verbi, etc.)
  • simboli non terminali (specificati tra parentesi angolari), che identificano tutti i simboli di una grammatica formale che possono essere sostituiti da una combinazione di simboli terminali e non terminali Il simbolo non terminale < frase> è il simbolo iniziale. Frasi che possiamo produrre da questa grammatica:
  • lo scrivo
  • lo leggo Cosa sono i linguaggi di programmazione Un linguaggio di programmazione è un linguaggio formale che obbliga l'uso di specifiche regole sintattiche sviluppate in modo tale da evitare possibili istruzioni ambigue Solitamente l'espressività del linguaggio è ridotta ma tutte le "frasi" componibili trasmettono un solo possibile significato I linguaggi di programmazione sono solitamente basati su grammatiche libere dal contesto e possono distinguersi per un basso o elevato livello di astrazione dal linguaggio propriamente in uso da un elaboratore elettronico per eseguire le operazioni Linguaggio macchina Un insieme di istruzioni che possono essere eseguite direttamente dalla CPU (central processing unit, o processore) di un computer elettronico Basato sul codice binario - una sequenza di 0 e 1 - rivisitato da Leibniz alla fine del diciassettesimo secolo Linguaggi di programmazione a basso livello Forniscono un livello di astrazione sopra il linguaggio macchina Permettono di scrivere programmi in modo che siano un pochino più intellegibili dagli umani Il più famoso linguaggio di questo tipo è l'Assembly - anche se introduce simboli più comprensibili, di solito una linea di codice in Assembly rappresenta una specifica istruzione in linguaggio macchina Linguaggi di programmazione ad alto livello Caratterizzati da un forte livello di astrazione dal linguaggio macchina - esempio: Python Possono usare parole proprie del linguaggio naturale per definire costrutti specifici, così da essere di più facile comprensione per un umano Più astrazione da un linguaggio di programmazione a basso livello è fornita, più comprensibile è il linguaggio Linguaggi visuali In modo da facilitare l'avvicinamento all'uso dei linguaggi di programmazione tradizionali, negli ultimi anni sono stati sviluppati diversi linguaggi di programmazione visuali che permettono lo sviluppo di piccoli programmi per risolvere problemi computazionali specifici Alcuni sono proposti sotto forma di gioco, e permettono l'introduzione dei costrutti principali propri dei linguaggi di programmazione mediante l'utilizzo di oggetti grafici Gli ipertesti Definizione: un corpo di materiale scritto interconnesso in modo così tanto complesso che non è conveniente presentare su carta Una settantina di anni fa quest'idea era praticamente non convenzionale e non realizzabile I meccanismi che venivano usati per trasmettere e/o revisionare i risultati di una ricerca erano molto vecchi e per niente adatti a facilitarne la divulgazione Se non si fosse intervenuti per tempo, ci sarebbe stato il rischio di perdere importanti pietre miliari della ricerca all'interno di una massa sempre più corposa di materiale irrilevante Cosa succede quando si clicca su un collegamento ipertestuale (o link) di una pagina Web? Per rispondere pienamente a questa domanda, è necessario avere delle conoscenze di base relative sia sul come l'informazione viene trasmessa digitalmente, sia sulle componenti che compongono Internet e il Web

Ogni qual volta che, da un proprio dispositivo (un computer, uno smartphone, etc.), si clicca su un link, il dispositivo stesso recupera una copia della risorsa a cui l'URL si riferisce, per poi visualizzarla a video Un'applicazione software che permette di accedere e ottenere le informazioni presenti nel Web, cosi da poterlo "navigare" - esempi: Internet Explorer, Firefox, Microsoft Edge, Safari, Google Chrome Il primo browser sviluppato da Tim Berners-Lee si chiamava WorldWideWeb Come funziona un browser Il browser permette di specificare un URL della risorsa a cui siamo interessati in un apposito campo della sua interfaccia, solitamente in alto A seconda del tipo di risorsa, permette di visualizzarla all'interno della finestra browser (ad esempio nel caso di una pagina web) o di salvarla in uno specifico documento nel proprio computer (ad esempio nel caso di un documento PDF) Nel primo caso, la pagina web visualizzata è un documento ipertestuale a tutti gli effetti: può contenere dei link che, se cliccati, indicano al browser di richiedere e scaricare la risorsa identificata dall'URL del link stesso così da visualizzarla La navigazione nel Web è solo metaforica, siccome non ci si sposta fisicamente da una pagina web ad un'altra come se prendessimo un autobus Come fanno i computer a comunicare tra di loro? Un protocollo di comunicazione è un insieme di regole che due entità, parte di un sistema di comunicazione, devono seguire per scambiarsi informazioni Cosa serve? Una sintassi da seguire per costruire i messaggi Delle regole interpretative del messaggio cosi da definire la semantica dei messaggi Dei meccanismi per sincronizzare la comunicazione Dei meccanismi per correggere e/o gestire eventuali errori che possono intercorrere nello scambio dei messaggi Dove li usiamo Nella vita di tutti i giorni quando vogliamo, per esempio, comunicare con qualcuno Sintassi definita da regole, semantica derivata dall'apprendimento della lingua, mentre le altre componenti definite da regole sociali e/o esperienza Protocollo HTTP L'Hypertext Transfer Protocol (HTTP) è un protocollo di comunicazione inizialmente sviluppato da Tim Berners-Lee per facilitare l'implementazione del Web Basato su metodi di comunicazione di richiesta-risposta Esteso negli anni successivi - ad esempio con il protocollo HTTPS: un'estensione di HTTP che implementa un protocollo di comunicazione più sicuro sul Web, utile quando è necessario trasmettere dati di autenticazione come nomi utenti e password Entità coinvolte Client: l'agente che fa la richiesta, ad esempio un browser Server: l'agente che dovrebbe avere informazioni su una risorsa, ad esempio un server Web, e che risponde alla richiesta Messaggio di richiesta: il messaggio mandato dal client al server in cui vengono chieste informazioni riguardo una specifica risorsa indicata da un URL Messaggio di risposta: il messaggio che il server restituisce al client, che può essere sia positivo sia negativo Tipologie di richieste = Metodi Le tipologie di richieste che possono essere effettuate da un client vengono definite grazie all'uso di uno specifico metodo, ovvero l'operazione di richiesta relativa all'URL coinvolto nella comunicazione Questa operazione può essere di diversa natura, come una semplice richiesta di informazioni, ad azioni più operative che determinano l'esecuzione di una specifica azione del server Non tutte le operazioni a disposizione, ovviamente, sono permesse - dipendono esclusivamente dalle capacità del server e dai permessi concessi al client Metodi HTTP Il metodo più usato nel Web è GET, che permette di richiedere informazioni sulla risorsa definita dall'URL specificato - per esempio come conseguenza di un click su un collegamento ipertestuale PUT permette di creare sul server web contattato la risorsa specificata dall'URL utilizzato nella richiesta, e di associarvi informazioni incluse nella richiesta DELETE permette di rimuovere dal server web contattato tutte le informazioni relative alla risorsa specificata nella richiesta tramite l'URL POST permette di specificare informazioni aggiuntive, incluse nella richiesta, ad una risorsa esistente che già risiede sul server

Classificazione metodi HTTP Safe : viene usato solo per recuperare delle informazioni dal server web, senza cambiarne lo stato, ad esempio aggiungendo nuovi dati (ad esempio GET) Idempotente : molteplici richieste effettuate allo stesso URL hanno lo stesso effetto, sul server web, che effettuare una sola richiesta (ad esempio GET e PUT) GET è preponderante nel Web, visto che viene usato per richiedere una qualsiasi risorsa, gli altri metodi non sempre sono liberamente utilizzabili da tutti i client - sta sempre al server decidere quali di questi metodi possano essere usati nella comunicazione Messaggio HTTP I metadati relativi alla comunicazione - come il nome di client usato per effettuare la richiesta, il nome del server web che dovrebbe avere a disposizione la risorsa, etc. eventuali dati (o contenuto) da accompagnare al messaggio - può essere vuoto nel caso in cui si richiede una pagina, per esempio Messaggi di risposta Tutte le risposte, oltre che a contenere metadati nell'header e, talvolta, dati nel payload, specificano anche un codice di stato (sempre nell'header) Un codice di stato è un numero di tre cifre, la cui prima (da 1 a 5) definisce la classe di risposta: Risposta informativa (molto raro, di solito non usato) Successo (es. 200 OK) Redirezione (es. 303 See other) Errore del client (es. 403 Forbidden, 404 Not Found) Errore del server (es. 503 Service Unavailable) Server web È un computer "speciale" che esegue un software specifico che permette di ricevere, gestire, e soddisfare richieste HTTP provenienti da un client, ad esempio un browser Il nome del server web è incluso nell'URL che identifica la risorsa di cui si vuole ottenere informazioni, nella parte host, come introdotto nella lezione precedente precedente (ad esempio it.wikipedia.org) Riassundo di quello che abbiamo visto finora La richiesta HTTP da mandare al server è molto più strutturata rispetto a quello che abbiamo visto la scorsa volta con il semplice URL Informazioni principali di una richiesta Quando un client (ad esempio, un browser) richiede informazioni su una specifica risorsa (ad esempio una pagina web) utilizzando l'URL relativo, ad esempio la richiesta che viene davvero effettuata ha la seguente forma: Metodo HTTP percorso Protocollo e versione GET /wiki/Uniform_Resource_Locator HTTP/1. HOST: it.wikipedia.org Nome del server web da contattare Cosa succede lato server Una volta che il server web riceve una richiesta fatta come indicato in precedenza, cerca localmente informazioni del documento indicate nel percorso della richiesta Se trova la risorsa, ne fa una copia che viene impacchettata nel payload in un nuovo messaggio HTTP di risposta e la invia al mittente originale, specificando "200 OK" come stato Se non trova la risorsa, associa il codice di errore relativo nello stato e, opzionalmente, potrebbe anche specificare nel payload un qualche messaggio per specificare meglio l'errore o, in generale, la situazione occorsa Una distinzione importante :

  • Il Web è uno dei più famosi servizi di Internet, perché si basa interamente sulle tecnologie messe a disposizione da Internet
  • Internet in realtà è una contrazione di interconnected network (rete interconnessa), ovvero una rete composta da tante altre reti più piccole di dispositivi in qualche modo interconnessi tra loro mediante l'uso di specifici protocolli di comunicazione. E un'infrastruttura generale che permette la creazione di nuove applicazioni

Commutazione di circuito Viene stabilito un circuito virtuale unico di comunicazione tra mittente e destinatario, ovvero una sequenza finita e sequenziale di nodi riservati che permette la sola comunicazione dal mittente al destinatario Viene usata tutta la banda a disposizione, che occupa in modo esclusivo i suddetti nodi fino al termine della comunicazione Commutazione di pacchetto Pacchetto: unità atomica in informazione, formata solitamente da l'header e il payload

Dimensione massima dei pacchetti La scorsa lezione abbiamo accennato al fatto che un particolare messaggio debba essere spezzato in uno o più pacchetti IP prima che questi vengano instradati in rete Due diversi fattori:

  1. il limite dato dalla massima quantità di dati che ogni pacchetto IP può trasportare (che dipende dalla versione considerata del protocollo, IPv4 o IPv6)
  2. il limite imposto dalla rete a cui si instradano i pacchetti, ovvero il suo Maximum Trasmission
  3. Unit (MTU) Come sono espressi questi limiti Bit (contrattura di binary digit): l'unità minima di informazione che si può scambiare in una comunicazione e può assumere solo uno di due valori: 0 o 1 Byte: unità minima di informazione occupabile su un computer, che storicamente corrisponde al numero di bit necessari per codificare un carattere sul computer 1 byte = 8 bit Il concetto di bit è stato usato da diversi studiosi del passato (ad esempio Babbage con le schede perforate), ma introdotto come termine formalmente da Claude Shannon (1948) Teoria dell'informazione Nell'articolo che introduce il bit, Shannon in realtà mette le basi di uno specifico campo di ricerca e studio chiamato teoria dell'informazione note beaT La teoria dell'informazione si occupa di studiare come quantificare, memorizzare, e scambiare informazione, che ha tuttora svariate applicazioni pratiche, oltre che aver caratterizzato e veicolato l'invenzione di diverse tecnologie del passato, incluso lo sviluppo di Internet Esempio: evincere la capacità massima di un canale per trasmettere informazione in modo affidabile è stato uno degli studi più importanti della teoria dell'informazione (a cui l'MTU è strettamente connesso) Ogni carattere, numero, programma, applicazione all'interno di un computer, cosi come un qualunque messaggio da scambiare in Internet, è codificato come una sequenza di bit che, in qualche modo, vengono poi decodificati con la sequenza di caratteri corretta dalla particolare applicazione che riceve ed interpreta quell'informazione Per esempio, nella codifica binaria tradizionale dei numeri interi, il numero 0 è rappresentato dalla sequenza "O", il numero 1 da "1" , il numero 2 da "10". ", il numero 3 da "11" ', il numero 4 da "100", e così via Gli indirizzi IP (v4) Sono definiti mediante l'uso di 4 byte, uno per ogni numero Ogni byte, ovvero 8 bit, permette di definire un numero intero da 0 a 255 Codifica / decodifica binaria : ognuno degli otto bit di un numero facente parte dell'indirizzo IP ha assegnato uno specifico valore - il valore 1 è associato al bit più a destra, mentre a quello successivo verso sinistra è assegnato un valore doppio rispetto al precedente (in questo caso 2), e così via (vedi tabella precedente) I pacchetti trasmessi Un qualunque messaggio e/o pacchetto spedito attraverso Internet è di fatto codificato usando una sequenza di bit Una parte di questi bit corrispondono a informazioni relative all'header del pacchetto, mentre altre sono relative al payload Normalmente la dimensione massima dell'header e del payload è fissata a priori, come abbiamo già detto in precedenza Transmission Control Protocol (TCP) Sia il riordino dei pacchetti sia lo spezzare il messaggio originale in più pacchetti conformemente con I'MTU della rete, è gestito dallo strato di trasporto Protocollo principale: Trasmission Control Protocol (TCP) proposto da Vinton Cerf e Robert Kahn nel 1974 per ARPANET II TCP permette la consegna affidabile, ordinata, e esente da errori di un flusso di byte tra due computer in comunicazione tra loro attraverso una rete basata sul protocollo IP, e gestisce tutti quei processi che garantiscono la ritrasmissione di un pacchetto nel caso in cui non sia stato recapitato al destinatario entro un certo tempo limite L'header di un pacchetto TCP contiene informazioni relative alla comunicazione a livello trasporto tra i due computer mittente e destinatario (le porte usate per la comunicazione e un numero di sequenza che indica l'ordine dei vari pacchetti TCP), mentre il payload contiene le informazioni che devono essere scambiate tra i partecipanti alla comunicazione Comunicazione connessa Il mittente e il destinatario si mettono d'accordo di iniziare una comunicazione in modo esplicito prima di scambiarsi i dati, e dichiarano altrettanto esplicitamente quando questa comunicazione si può ritenere conclusa

Il processo di inizio della comunicazione, è regolato dal meccanismo del three-way handshake, mentre quello di chiusura è il four-way handshake Altri protocolli basati su TCP: SMTP Il Simple Mail Transfer Protocol (SMTP) è il principale protocollo di comunicazione dello strato applicativo per spedire email Ogni volta che si spedisce una mail, in realtà non viene recapitata direttamente al destinatario, ma viene raccolta da un server di posta di competenza del dominio della mail del destinatario Dominio identificato dalla parte dell'indirizzo email che segue il carattere "@" Questo server è come un server web ed è in grado di ricevere email attraverso il protocollo SMTP, per poi inoltrarle ai relativi destinatari quando questi ne fanno richiesta mediante l'uso del protocollo POP o IMAP Altri protocolli basati su TCP: POP e IMAP Sono entrambi utilizzati per richiedere e ricevere email da un server di posta Con il Post Office Protocol (POP), il server di posta consegna tutti i messaggi precedentemente inviati a quel particolare destinatario e, una volta consegnati, li cancella dal server L'Internet Message Access Protocol (IMAP) è stato esplicitamente sviluppato per facilitare la gestione di una stessa casella di posta elettronica da parte di più dispositivi - infatti i messaggi di posta elettronica non vengono eliminati automaticamente dal server anche se sono stati già recapitati ai rispettivi destinatari a seguito di una loro richiesta, ma devono essere eliminati esplicitamente dall'utente, se lo desidera Altri protocolli basati su TCP: FTP Il File Transfer Protocol (FTP) è un protocollo che permette il trasferimento di un qualunque file da un computer ad un server e viceversa E uno dei protocolli più adottati di Internet per permettere lo scaricamento di una grossa mole di dati, mentre è poco adatto per scaricare documenti molti piccoli, come pagine web Marcatura di un testo Definizione: l'annotazione del testo così da definire esplicitamente i vari ruoli strutturali e semantici delle varie parti che lo compongono Da SGML a XML In modo da definire formalmente la marcatura relativa a un certo testo, sono stati sviluppati diversi linguaggi di markup Quelli di maggiore rilevanza per il Web seguono una sintassi specifica introdotta per la prima volta nello Standard Generalized Markup Language (SGML, 1986), e poi ripresa dal suo successore, l'Extensible Markup Language (XML, 1996) Sono metalinguaggi : definiscono le regole sintattiche che devono essere seguite per specificare la marcatura di un testo, ma non impongono alcun vocabolario particolare per il nome da assegnare ai vari marcatori - cosa che invece viene poi fatta quando si definisce un linguaggio di marcatura vero e proprio basato su queste regole sintattiche HTML L'Hypertext Markup Language (HTML) è il linguaggio di markup usato per creare tutte le pagine web e le applicazioni presenti sul Web E un linguaggio che segue una sintassi simile a quella XML, e che mette a disposizione uno specifico vocabolario di elementi ed attributi per identificare i vari ruoli strutturali e semantici di una pagina web Ogni qual volta viene fatta una richiesta per una pagina web, viene restituita una copia di un documento HTML contenente opportuni marcatori che il browser è in grado di interpretare e visualizzare a video in qualche modo Prima versione di HTML (di Berners-Lee) è del 1990, ed era basata su SGML Le versioni di HTML HTML inizia ad avere una fortissima diffusione in seguito ai primi utilizzi commerciali del Web Negli anni successivi al 1990, durante la cosiddetta prima guerra dei browser tra Netscape e Microsoft, le definizioni di nuove specifiche del linguaggio HTML si susseguono, rincorrendo le estensioni e le modifiche proposte dai produttori dei browser che cercano di accaparrarsi quote di mercato Vengono rilasciate diverse versioni di HTML, fino ad arrivare alla versione 4.01 del 1999, che era piuttosto caotica: alcuni marcatori funzionavano soltanto su alcuni browser o su versioni specifiche di questi, mentre le indicazioni per gestire gli errori di sintassi erano molto generiche e per nulla chiare XHTML Il W3C decide di iniziare a lavorare ad una nuova versione di HTML basata interamente sulla sintassi XML, chiamata XHTML, pubblicata ufficialmente nel 2000 Migliora l'interoperabilità con altri linguaggi basati su XML della stessa famiglia (SVG e MathML su tutti), ma sacrificando la piena compatibilità con HTML

Invio, otteniamo immediatamente il risultato. La modalità interattiva è molto comoda per scrivere righe di codice molto brevi. Questa modalità è molto adatta ai principianti della programmazione, poiché li aiuta a valutare il codice riga per riga e a comprenderne bene l'esecuzione. Python dispone di un interprete interattivo molto comodo e potente:

  • Su MacOs è possibile avviare l'interprete Python digitando python nella shell di un terminale
  • Appare >>> Questo vuol dire che il terminale è pronto a ricevere comandi Possiamo ora inserire qualsiasi istruzione del linguaggio e vedere immediatamente l'output: L'istruzione print stampa a video il risultato di un'espressione Interprete Python - Notebook I Notebook sono documenti che contengono celle. Le celle possono essere o celle di codice (e.g. in linguaggio Python) o elementi di testo formattato (paragrafi, equazioni, figure, link, eсc.). Un altro modo abbastanza comune per eseguire comandi Python è usare un Jupiter notebook service come Un notebook è in pratica uno script Python che viene eseguito nel browser senza bisogno di installare niente sul proprio PC. Le istruzioni possono essere raggruppate in “celle". La cella è l'unità minima di esecuzione di un notebook Interprete Python - Kernel Un kernel di notebook è un "motore di calcolo" che esegue il codice contenuto in un documento Notebook. Quando si apre un documento a 0 a = 10 print (a) Notebook, il kernel associato viene o avviato automaticamente. Quando il notebook viene eseguito (cella per cella o con il menu Cell -> Run All), il kernel esegue il calcolo e produce i risultati. Che cos'è l'elaborazione del linguaggio naturale? Introduzione all'Elaborazione del Linguaggio Naturale L'obiettivo dell'elaborazione del linguaggio naturale è "far sì che i computer svolgano compiti utili che coinvolgono il linguaggio umano", come consentire la comunicazione uomo-macchina o migliorare la comunicazione tra esseri umani. Cosa distingue l'elaborazione del linguaggio dall'elaborazione dei dati? Introduzione all'Elaborazione del Linguaggio Naturale Consideriamo i programmi di elaborazione testi. Tra le loro funzionalità, questo tipo di programmi è anche in grado di:
  • Contare il numero totale di byte in un file di testo;
  • Contare il numero di righe, parole e caratteri in un file di testo. Quando il programma conta il numero di righe, parole e caratteri in un file di testo, è necessario sapere cosa si intende per riga, parola e carattere. Chiamiamo sistemi di elaborazione del linguaggio naturale i programmi che utilizzano questo tipo di conoscenza per funzionare. Conversione da voce a testo e da testo a voce Un agente conversazionale che interagisce tramite la voce deve essere in grado di riconoscere le parole dal segnale audio e di generare un segnale audio da una sequenza di parole. Queste attività sono denominate:
  • Riconoscimento vocale
  • Sintesi vocale Esempi Richiedono conoscenze di fonetica, fonologia e morfologia. Pipeline NLP Eseguire operazioni complesse nell'ambito dell'elaborazione del linguaggio naturale significa solitamente creare una pipeline. Una pipeline è un insieme di software che lavorano insieme per raggiungere un obiettivo generale (ad esempio, la comprensione di un testo). Ogni componente si occupa di un singolo sotto-compito (ad esempio il riconoscimento dei token) e potrebbe aver bisogno dell'output di un altro strumento nella pipeline. Normalizzazione del testo Normalizzare un testo significa convertirlo in una forma standard più comoda. La normalizzazione può includere (a seconda della lingua):
  • Tokenizzazione: separazione delle parole dal testo continuo (ad esempio, New York -> New-York, Rock'n'Roll -> Rock-'-n--Roll)
  • Lemmatizzazione: è l'operazione che consiste nel determinare che due parole hanno la stessa radice nonostante la loro superficie (ad esempio, sang e sings sono forme del verbo sing - sing è chiamato lemma)
  • Stemming: si riferisce a una versione più semplice della lemmatizzazione in cui si eliminano principalmente i suffissi dalla fine di una parola (ad esempio sings -> sing)

Normalizzazione del testo (continua)

  • La segmentazione delle frasi si riferisce all'operazione di suddivisione di un testo in singole frasi, utilizzando indicatori quali punti o punti esclamativi. Tagging delle parti del discorso Il tagging delle parti del discorso (POS) è il processo di contrassegnare una parola in un testo come corrispondente a una particolare parte del discorso, in base sia alla sua definizione che al suo contesto. Una forma semplificata di questo processo consiste comunemente nell'identificazione delle parole come nomi, verbi, aggettivi, avverbi, ecc. Riconoscimento delle entità denominate Il riconoscimento delle entità denominate (NER) è il processo di individuazione e classificazione entità denominate menzionate in un testo in categorie predefinite. Le categorie tipiche sono: Nomi di persone, Organizzazioni, Luoghi, Codici medici, Espressioni temporali, Quantità Risoluzione della coreferenza La risoluzione dei coreferenti è l'attività che consiste nell'individuare tutte le espressioni che fanno riferimento alla stessa entità in un testo. Collegamento delle entità Il collegamento delle entità è l'attività che consiste nell'assegnare un'identità univoca alle entità menzionate nel testo. Disambiguazione del significato delle parole La disambiguazione del significato delle parole (WSD) è il problema di identificare quale significato di una parola viene utilizzato in una frase. Analisi del sentiment L'analisi del sentiment è una tecnica di elaborazione del linguaggio naturale utilizzata per determinare se un testo è positivo, negativo o neutro. Estrazione di informazioni L'estrazione di informazioni (IE) è l'attività di estrazione automatica di informazioni strutturate (tipicamente sotto forma di triple) dal testo. Machine reading Un machine reader è uno strumento in grado di trasformare un testo in linguaggio naturale in conoscenza strutturata formale, in modo che quest'ultima possa essere interpretata dalle macchine.