
















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Dispensa per l'esame di Informatica di base della facoltà di Bologna, del corso di Lettere Moderne. Riassunti dei vari capitoli dei libri con l'aggiunta di storia dei sistemi informatici e spiegazione dei diagrammi di flusso.
Tipologia: Dispense
1 / 24
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!

















Cos’è un computer?
Definizione : Macchina per le elaborazioni di dati rappresentati da caratteri alfanumerici variamente codificati, che vengono sottoposti a procedimenti aritmetici e logici, memorizzati in archivi e resi reperibili e trasmissibili.
Definizione generica: qualsiasi agente (ovvero, quell’entità in grado di agire se istruita appropriatamente, come una persona o una macchina) che sia in grado di fare calcoli e produrre un dato o più dati in uscita (output).
Da computer umani a quelli meccanici
Computer umani usati per: ● Calcolare le coordinate di oggetti extraterrestri ● Per creare tabelle di conversione verso il sistema metrico
Problemi: ● Calcoli da effettuare molto lunghi ● Molti errori
Esempio: Babbage (1822) sviluppa la Macchina Differenziale. L'obiettivo era realizzare una macchina che facesse i compiti dei “computer umani”. La macchina però non era programmabile , ed era in grado di utilizzare solo un numero limitato di operazione di input.
Per risolvere questo problema Babbage (1837) progetta la Macchina Analitica (nessun prototipo, solo disegni del progetto).
Il primo computer digitale programmabile
ENIAC (Electronic Numerical Integrator and Computer): il primo computer interamente digitale, sviluppato negli Stati Uniti d’America. Completamente programmabile attraverso l’uso di cavi e interruttori. Punto fisso nel tempo per tutti gli sviluppatori di computer che sono stati creati.
Programmare o istruire?
Quando si parla di programmare, possiamo dire che parliamo con una persona per istruire sull’esecuzione di specifiche azioni attraverso l’uso di un particolare linguaggio che viene usato come canale di comunicazione.
Si dovrebbe usare gli stessi verbi ( parlare e istruire ), anche quando ci si riferisce ad un computer elettronico.
Scrivere un programma : comunicare ad un computer elettronico utilizzando un linguaggio (in questo caso formale) che sia l’istruttore umano sia il computer stesso possano comprendere. L’idea è quella di trovare un pattern che fornisca una possibile soluzione a un insieme di situazioni che, a livello astratto, sono del tutto omogenee, in modo da riutilizzare la stessa strategia per raggiungere il nostro obiettivo, se questa è stata soddisfacente nel passato.
Pensiero computazionale
Approccio per risolvere problemi, sviluppare sistemi e capire il comportamento umano che riprende i concetti fondamentali della computazione (= calcolo).
Il pensiero computazionale: definisce i processi mentali che coinvolgiamo quando formuliamo un certo problema ed esprimiamo le relative soluzioni usando un linguaggio che un computer può comprendere, conseguentemente, eseguire.
Astrazione: processo di rimozione dei dettagli trascurabili di una situazione in modo da semplificare, per così focalizzare l’attenzione sulle sue caratteristiche principali. (Esempio: come imparare ad andare in bicicletta, quando impari ad andarci non ci pensi più).
Obiettivi del pensiero computazionale: dare nuovamente forma alle astrazione che abbiamo già immagazzinato in passato come conseguenza della nostra esperienza personale - e che, spesso, riutilizziamo inconsciamente.
Essere nuovamente e interamente coscienti di queste astrazioni significa doverle ridefinire usando un linguaggio appropriato per renderle comprensibili a un computer.
Obiettivo principale del pensiero computazionale : è quello di permettere alle persone di pensare come se fossero computer scientist, anche quando bisogna affrontare attività del quotidiano
Grafo: I grafi sono una delle principali strutture dati in informatica e, in generale, del pensiero computazionale.
Un 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 comunicate 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).
❖ FUN FACT: Ada Lovelace, una matematica inglese, partecipò ad una festa organizzata da Babbage (vedi sopra) per presentare la Macchina Differenziale, ne fu così colpita che iniziò una corrispondenza epistolare con lui che durò 27 anni. Fu la traduttrice in inglese del primissimo articolo sulla Macchina Analitica scritto da Luigi Federico Menabrea, e che lei stessa arricchì con un grande numero di annotazioni personali e riflessioni. ➢ Il primo programma: Tra le varie annotazione che Ada aggiunse al testo, c’era anche una descrizione di come usare la Macchina Analitica per calcolare i numeri di Bernoulli. Questo è riconosciuto come il programma della storia dei computer, creato senza avere a disposizione la macchina reale, visto che la Macchina Analitica era soltanto teorica, che di fatto fa Ada la prima programmatrice della storia. ➢ “La Macchina Analitica potrebbe operare su altre cose oltre ai numeri, se si trovassero oggetti le cui relazioni fondamentali possano essere espresse da quella scienza astratta dalle operazioni” ➢ Scienza astratta delle operazioni = Informatica
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.
I diagrammi di flusso sono uno specifico tipo di diagramma che possono essere usati per alcuni algoritmi, che si basa su un limitato uso di oggetti grafici:
Il nostro primo algoritmo
❖ Prendi in input tre stringhe, ovvero due parole e un riferimento bibliografico di un articolo pubblicato, e restituisci: ➢ 2 se entrambe le parole sono contenute nel riferimento bibliografico ➢ 1 se solo una delle parole è contenuta nel riferimento bibliografico ➢ 0 altrimenti ❖ Versione Parziale: Prendi in input due stringhe, una parola e un riferimento bibliografico, e restituisci 1 se la parola è contenuta nel riferimento bibliografico, 0 altrimenti.
Vedi: la biblioteca di Babele
Linguaggio “naturale”
E’ linguaggio comune, esso può essere scritto o orale. Si è evoluto in maniera naturale all’interno di una comunità, ha il vantaggio di essere “molto espressivo” ⇒ può passare da una persona a un'altra tramite: figure retoriche, metafore, ecc.... Gli svantaggi sono: alcune frasi sono intrinsecamente ambigue se non accompagnate da un opportuno contesto.
Formalizzazione di un linguaggio
I linguaggi naturali non sono formali per definizione. Tuttavia molti studi in linguistica cercano di fornire 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:
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): identificano tutti i simboli elementari del linguaggio in considerazione. ❖ Simboli non terminali (specificati tra parentesi angolari): identificano tutti i simboli di una grammatica formale che possono essere sostituiti da una combinazione di simboli terminali e non terminali.
Esempio:
Gerarchia di Chomsky
Chomsky ha proposto una gerarchia per descrivere formalmente le relazioni che possono esistere tra diverse grammatiche in termini dalle loro possibili strutture sintattiche che si possono generare.
Lettere greche usate per indicare una combinazione di simboli terminali e/o non terminali.
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 di un computer elettronico (Basato sul codice binario [Leibniz] una sequenza di 0 e 1).
Prima esemplificazione tecnologica: nel 1945 Vannevar Bush scrive l’articolo “As We May Think”, che contiene una sequenza di visioni tecnologiche che sono state realizzate nei decenni a venire e che tuttora influenzano lo sviluppo di nuove tecnologie.
Il problema: i meccanismi usati per trasmettere e/o revisionare i risultati di una ricerca erano molto vecchi e per niente adatti da facilitarne la divulgazione. Uno dei problemi principali alla consultazione di un qualsiasi materiale, era la sua organizzazione sequenziale e l’ artificialità del meccanismo di indicizzazione dei contenuti. Quando un’informazione viene raccolta in un dispositivo di memorizzazione, essa viene in qualche modo indicizzata alfabeticamente o numericamente, e può essere contenuta soltanto in un posto specifico ; per recuperare un'informazione bisogna seguire determinate regole.
Vannevar Bush suggeriva di usare i “microfilm”, che erano una tecnologia di frontiera in quel periodo. All’interno di essi era possibile salvare un intera copia dell’Enciclopedia britannica.
Bush proponeva il memex.
Memex: avrebbe permesso di salvare tutti i libri, record di dati, e comunicazione di vario genere su dispositivi appropriati, così da accedervi in modo completamente meccanico, flessibile e veloce. Il memex era composto da una scrivania con due schermi al centro per facilitarne la lettura dei documenti memorizzati, accompagnati da una tastiera, un insieme di bottoni e leve, e una plancia su cui posizionare qualunque documento così da essere fotografato e memorizzato nei microfilm utilizzati dalla macchina. I documenti salvati potevano essere visualizzati tramite le leve messe a disposizione dalla macchina.
Quello che era il vantaggio del memex è che avrebbe introdotto la possibilità di percorsi tra le informazioni. In particolare ogni utente avrebbe potuto creare il proprio percorso specifico e memorizzarlo nella macchina con un nome.
Meccanismo per associazioni
Il meccanismo di indicizzazione non è il modo in cui la mente umana solitamente opera. Partendo da una specifica informazione, la mente si sposta istintivamente alla successiva mediante un processo associativo (un’informazione ne richiama un’altra, conformemente a una complicata rete di pensieri.
La nascita degli ipertesti
Ted Nelson, 1960, iniziando a lavorare ad un nuovo progetto (XANADU) con l’obiettivo di creare una rete di computer depositaria dell’intera conoscenza umana e che potesse essere stesa mediante dei collegamenti ipertestuali bidirezionali che permettesse di collegare tra loro idee contenute in diversi documenti.
Douglas Engelbart nello stesso periodo aveva iniziato l’implementazione di un sistema che permetteva per la prima volta la creazione di ipertesti su un computer (oN-Line System - NLS).
Nel 1989, Tim Berners-Lee propone un progetto chiamato World Wide Web. Venne poi accettato.
Il web per Tim era un ipertesto che potesse descrivere una varietà di risorse eterogenee collegabili tra loro mediante l’uso di collegamenti ipertestuali etichettati, in modo da poter specificare la semantica del collegamento come parte esplicita del link.
Primo prototipo
Un’ulteriore semplificazione: soltanto una tipologia di risorse (la pagina Web) e una sola tipologia di collegamento ipertestuale , ovvero il semplice riferimento. Sviluppò una serie di tecnologie che permettessero agli utenti:
● La creazione di documenti ipertestuali ● Di mettere a disposizione i suddetti documenti ipertestuali sul Web. ● Di poterli richiedere mediante l’utilizzo di un opportuno identificativo e di uno specifico protocollo di comunicazione ● Visualizzarli su computer
Identificare le risorse sul Web
Il computer non mostra tutto quello che conosce sui link ipertestuali presenti in quella pagina.
Dentro quel frammento di testo sottolineato e solitamente colorato in blu, che può essere cliccato, c’è nascosto un oggetti invisibile che inizia per “http://”
Quell’oggetto è un URL rappresenta una sorta di nome della pagina web a cui il link ti rimanderà.
Struttura URL ● schema - il protocollo di comunicazione usato per richiedere informazioni sulla risorsa indicata dall’URL.
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.
Protocolli di comunicazione
Protocollo: è un insieme di regole che due entità, parte di un sistema di comunicazione, devono seguire per scambiarsi informazioni.
Per creare un protocollo serve: ● Una sintassi da seguire per costruire i messaggi ● Una semantica che definisce le regole interpretative del messaggio.
Un protocollo di comunicazione prevede anche dei meccanismi per sincronizzare la comunicazione e per correggere e/o gestire eventuali errori che possono intercorrere nello scambio dei messaggi.
Lo usiamo nella vita di tutti i giorni per comunicare con qualcuno, per esempio.
L’HTTP è un protocollo di comunicazione inizialmente sviluppato da Tim Berners Lee per facilitare l’implementazione del web, basato su richiesta-risposta.
Https ⇒ estensione HTTP
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 su cui vengono chieste informazioni riguardo una specifica.
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.
Il metodo più usato nel Web è sicuramente GET , che permette di richiedere informazioni sulla risorsa definita dall’URL specificato. GET viene usato ogni qual volta richiediamo di visitare una specifica web. Altri metodi sono: ● PUT permette di creare sul server web contattato al risorsa specificata dall’URL utilizzato nella richiesta, e di associare le informazione, relative ad essa, incluse nella richiesta effettuata; ● 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.
Tutti i metodi HTTP sono classificabili a seconda che siano conformi o meno a due caratteristiche specifiche, ovvero se sono safe e/o se sono idempotenti.
Safe: un metodo si dice safe quando viene usato solo per recuperare delle informazioni dal server web, senza cambiarne lo stato. Ad esempio GET è un metodo safe mentre PUT no. Idempotenti: un metodo si dice idempotente se molteplici richieste effettuate allo stesso URL hanno lo stesso effetto, sul server web, che effettuare una sola richiesta. Ad esempio POST non è idempotente.
Considerando i messaggi consegnati utilizzando il protocollo HTTP, queste due tipologie di informazioni, ovvero i metadati e i dati, sono contenute in due specifiche sezioni del messaggio, rispettivamente chiamate intestazione (header) e contenuto (payload).
Tutte le risposte specificano un codice di stato che indica se la richiesta è andata a buon fine o se sono intercorsi dei problemi. Le cinque classi di risposta sono:
Mentre i codici nella comunicazione HTTP sono: ● codice 200 (OK) - la richiesta è stata soddisfatta con successo; ● codice 303 (See Other) - la risposta alla richiesta può essere trovato ad un altro url;
Le suite di protocolli TCP/IP è stato lo strumento grazie al quale tutte queste reti sono state poi intercollegate tra loro, permettendo per la prima volta la comunicazione tra computer collegati a reti differenti.
Commutazione di circuito
Pacchetto: unità atomica in informazione , formata solitamente da l’header e il payload. Dimensione massima in termini di informazione che possono contenere: un messaggio viene spezzato in diversi pacchetti, trasmessi sulla rete senza occupare l’intera banda , e instradati dal mittente al destinatario seguendo, potenzialmente, percorsi diversi.
Commutazione di circuito: Nel momento in cui un mittente e un destinatario vogliono attivare una comunicazione, viene stabilito un circuito virtuale unico di comunicazione, ovvero una sequenza finita e sequenziale di nodi riservati che permette la sola comunicazione dal mittente al destinatario usando tutta la banda a disposizione, e che occupa in modo esclusivo i suddetti nodi.
Commutazione di pacchetto: il messaggio viene spezzato in diversi pacchetti, che vengono trasmessi sulla rete senza occupare l’intera banda di un circuito, e vengono instradati dal mittente al destinatario seguendo, potenzialmente, percorsi diversi. Il principale vantaggio di questa tecnica su quella a commutazione di circuito è la sua tolleranza ai guasti.
L’intervento di Al Gore
Nel 1991, Al Gore introduce un atto, l’HPCA, che prevedeva la creazione di un’enorme rete ultraveloce chiamata National Research and Education Network.
Con l’obiettivo di permettere la connessione contemporanea di milioni di computer , non solo appartenenti a enti di ricerca o a industrie ma posseduti da comuni cittadini.
Gerarchia protocolli
Lo scambio di dati tra due computer collegati in rete è realizzata mediante l’uso dei pacchetti. Esiste una gerarchia di incapsulamento dei dati da spedire, definita dalla suite di protocolli Internet TCP/IP, organizzata in quattro livelli.
● strato applicazione : dove vengono creati i dati dell’utente ed è dove i protocolli di alto livello, agiscono. Questo strato permette la connessione tra applicazioni, ad esempio un browser con il server web. ● strato trasporto: è lo strato che permette la comunicazione tra il computer e il mittente e il computer destinatario, che ospitano le due applicazioni usate per la comunicazione a livello applicazione. ● strato di rete : è lo stato che permette la comunicazione tra i vari nodi presenti in internet, e che di fatto permette l’instradamento dei pacchetti dal mittente fino al destinatario passando tra le varie reti di cui internet è composto. ● strato di accesso alla rete : è lo strato che definisce come i vari messaggi/pacchetti devono essere instradati all’interno di una specifica rete locale.
Web: è quel servizio basato sul protocollo HTTP e costruito sopra i protocolli TCP/IP, che permette a due applicazioni presenti su due computer diversi collegati a internet, di comunicare tra loro senza conoscere direttamente la topologia della rete e i meccanismi di instradamento dei messaggi inviati.
Internet Protocol: è il protocollo che regola l’instradamento attraverso i vari modi di Internet dei vari pacchetti IP che, in qualche modo, compongono il messaggio originale.
Due versioni: IPv4 e IPv6.
Pacchetti IP specificano, per ogni pacchetto, l’indirizzo IP del mittente e l’indirizzo IP del destinatario.
Un indirizzo IP può essere statico o dinamico.
Indirizzo IP: è una sequenza di quattro numeri separati da punti, dove ogni numero può assumere un qualsiasi valore tra 0 e 255. Tutti i dispositivi collegati ad Internet sono univocamente identificati da uno specifico indirizzo IP.
Comunicazione senza connessione
I pacchetti IP di un certo messaggio vengono instradati in modo completamente indipendente tra loro, visto che ogni pacchetto contiene esplicitamente l’indirizzo del pc a cui deve essere recapitato. Nello strato di rete , il mittente e il destinatario non devono mettersi d’accordo prima di inviare i dati, ma semplicemente agiscono senza conoscere l’eventuale stato (attivo, non disponibile, etc.) dell’altro.
I pacchetti possano perdersi, non arrivare nell’ordine in cui sono stati mandati o duplicati.
● Bit: l’unità minima di informazione che si può scambiare in una comunicazione e può assumere solo uno di due valori: 0 o 1.
1 Byte = 8 Bit
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.
La teoria dell’informazione si occupa di studiare come quantificare, memorizzare e scambiare informazione; ha tuttora svariate applicazioni pratiche, oltre che aver caratterizzato e veicolato l’invenzione di diverse tecnologie del passato, incluso lo sviluppo di Internet.
Bit e simboli
Ogni carattere, numero, programma, applicazione all’interno di un computer, così come un qualunque messaggio da scambiare in Internet, è codificato come una sequenza di bit che, in qualche modo, vengono poi codificati con la sequenza di caratteri corretta dalla particolare applicazione che riceve e interpreta quell’informazione.
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 a un valore doppio rispetto al precedente, e così via.
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.
Transmission Control Protocol
Sia il riordino dei pacchetti sia lo spezzare il messaggio originale in più pacchetti conformemente con l’MTU della rete, è gestito dalla strato di trasporto.
Il 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 tempo limite.
L’ header di un pacchetto TCP contiene informazioni relative alla comunicazione a livello di 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. In pratica, il mittente che vuole iniziare una comunicazione con un destinatario prima invia un pacchetto TCP di sincronizzazione, con il campo dell’ header SYN impostato ad un numero intero scelto casualmente. Il mittente risponde inviandogli un altro pacchetto con il campo dell’header ACK impostato al numero successivo rispetto a quello ricevuto. Il destinatario risponde corrispondentemente con nuovo pacchetto ACK+1. Da quel momento, il mittente è autorizzato a mandare il messaggio, suddiviso in opportuni pacchetti, al destinatario e conseguentemente a ricevere relativa risposta.
Altri protocolli: ● SMTP: è il principale protocollo di comunicazione dello strato applicativo per spedire le email. ● POP: è uno dei due protocolli usati per ricevere email da un server di posta. Una volta consegnati i messaggi li elimina dal server. ● IMAP: è uno dei due protocolli usati per ricevere email da un server di posta. A differenza del POP se si vuole eliminare messaggi lo deve fare l’utente. ● FTP: è un protocollo che permette il trasferimento di un qualunque file da un computer ad un server e viceversa.