









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
Dall’enciclopedia Treccani: informatica Scienza che studia l’elaborazione delle informazioni e le sue applicazioni; più precisamente l’i. si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione.
Tipologia: Appunti
1 / 15
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!










Dall’enciclopedia Treccani: informatica Scienza che studia l’elaborazione delle informazioni e le sue applicazioni; più precisamente l’i. si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione. Il termine i. deriva dal fr. informatique (composto di INFORMATion e automatIQUE, «informazione automatica») e fu coniato da P. Dreyfus nel
“L’informatica non riguarda i computer più di quanto l’astronomia non riguardi i telescopi”. Questa frase, attribuita allo scienziato e pioniere dell’informatica Edsger W. Dijkstra, suggerisce^1 che l’informatica non sia “la scienza dei computer” (come farebbe invece supporre il suo nome in inglese, computer science ), ma piuttosto una scienza che ha il computer come strumento principe per portare avanti la propria ricerca.
Potremmo dire, in prima approssimazione, che l’informatica studia la codifica di procedure per risolvere problemi in modo automatico. Inizialmente questi problemi erano essenzialmente di natura matematica, ma la diffusione dei computer – anche e soprattutto per uso personale da parte di non addetti ai lavori – ha ampliato le categorie di problemi di interesse per gli informatici.
Alcuni esempi di problemi: a. Come trovare il massimo comun divisore di due numeri b. Come decifrare i messaggi in codice dei servizi segreti di un paese “nemico” c. Come trovare velocemente un nome in un elenco lunghissimo d. Come rendere un’immagine fotografica più nitida e. Come realizzare l’animazione di un’astronave che si muove sullo schermo f. Come riconoscere nel DNA di una persona sequenze “critiche” g. Come stabilire qual è la pagina Web più interessante su un certo argomento h. Come scegliere quali post mostrare sulla bacheca di Facebook di una persona i. Come impedire a malintenzionati di rubare informazioni sensibili spedite in rete
...come si vede alcuni di questi problemi esistevano già da prima dell’esistenza dei computer, mentre alcuni sono stati, potremmo dire, “creati” dalla diffusione dei computer e soprattutto di Internet. Può forse sembrare strano (o poco politically correct ) che in questo elenco sia incluso un problema “di guerra” (quello al secondo punto), ma è un dato storico che molti avanzamenti nel campo dell’informatica durante il XX secolo sono stati dovuti proprio alle necessità militari.
Torniamo alla definizione di informatica:
(^1) L’attribuzione è incerta, ma è plausibile – Dijkstra ha fatto molte affermazioni sulla stessa linea, come “Non devo necessariamente perder tempo con un computer solo perché sono un informatico”.
“...l’i. si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione.” Le “informazioni” che vengono “trattate” in modo automatico sono quelle che caratterizzano i problemi da risolvere. La risoluzione di un problema può essere vista infatti come la trasformazione di una informazione (dato in ingresso) in un’altra (risultato).
Un problema è infatti solitamente caratterizzato da dei dati di partenza (in informatica parliamo di input , in inglese ingresso, inserimento) e dalla descrizione delle caratteristiche che un risultato ( output , in inglese produzione, uscita, risultato) deve avere per essere corretto o desiderabile. Ad esempio, riprendendo alcuni degli elenchi sopra: a. Dati: due numeri A e B. Risultato: il numero più grande X tale per cui sia A che B sono divisibili (senza resto) per X b. Dato: un messaggio in codice. Risultato: il messaggio originale scritto dai servizi segreti c. Dati: un elenco lunghissimo di nomi, un nome da cercare. Risultato: la posizione nell’elenco a cui si trova il nome cercato, oppure l’indicazione che il nome non è in elenco ...e così via.
Abbiamo detto: “l’informatica si occupa di studiare la codifica di procedure per risolvere problemi in modo automatico”. Cosa significa? Significa che
Una procedura con queste caratteristiche viene definita algoritmo , dal nome del matematico arabo al-Khwarizmi, del IX secolo, il primo a scrivere un trattato su come codificare procedure di questo tipo per risolvere problemi matematici (...il che dimostra che l’oggetto di studio dell’informatica è nato molto prima dei computer!).
Naturalmente cosa sia un’istruzione, e cosa significhi che non è ambigua, dipende moltissimo da chi deve eseguire l’algoritmo! Una ricetta che due chef condividono, ad esempio, potrebbe essere non ambigua per loro ma esserlo per un principiante. L’istruzione “fai un soffritto di cipolla” è non ambigua per me, ma estremamente ambigua per mio marito! E le istruzioni per montare i mobili dell’IKEA? Chi le ha scritte sicuramente pensava che non fossero ambigue, ma molti di noi potrebbero dissentire...
Charles Babbage (1792 – 1871), inglese, fu una figura eminente del suo tempo. Gli fu assegnata la cattedra di Matematica a Cambridge nel 1828, La stessa che fu di Isaac Newton e più recentemente di Stephen Hawking. Lasciò tuttavia la cattedra nel 1839 per dedicarsi a tempo pieno alle sue idee di inventore. Fu membro delle più importanti società scientifiche inglesi ed europee, e amico di Charles Darwin e Pierre Simon de Laplace.
Tra gli anni 1820 e 1830 Babbage concepisce e in parte realizza un dispositivo noto come Difference Engine, un dispositivo meccanico in grado di eseguire alcuni tipi di operazioni aritmetiche, anche su numeri molto grandi. Babbage ottiene anche cospicui finanziamenti pubblici per la realizzazione della sua invenzione, che tuttavia non vede mai completamente la luce. A parte i problemi tecnici, la ragione è che, a partire dai primi anni 30, Babbage si dedica ad una nuova invenzione: una macchina in grado di calcolare funzioni arbitrariamente complesse su un numero qualsiasi (ma comunque limitato) di variabili: l’Analytical Engine
Da subito, Babbage concepisce l’idea di controllare il funzionamento dello Analytical Engine attraverso schede perforate: l’intuizione gli deriva dal telaio di Jacquard (ricordiamo che il telaio meccanico è uno dei protagonisti della prima rivoluzione industriale, nella seconda metà del ‘700, e che Jacquard introdurre il suo telaio proprio all’inizio dell’800). Babbage incomincia a chiedere finanziamenti per realizzare questa sua nuova invenzione, ma senza molto successo, visti i soldi già spesi e gli scarsi risultati ottenuti con il progetto precedente. Incomincia allora a cercare fuori dall’Inghilterra quell’interesse per le sue idee che non era stato in grado di sollevare in patria, e nell’agosto del 1840 viene invitato a Torino, a tenere una serie di conferenze al “Secondo congresso degli Scienziati Italiani” patrocinato da re Carlo Alberto di Savoia. Babbage lascerà poi alcuni suoi disegni alla città, che sono conservati all’Accademia delle Scienze di Torino
Nel partecipare al congresso, l’intenzione di Babbage è di sollevare l’interesse di Giovanni Plana, astronomo torinese, professore dell’Università di Torino, tra gli scienziati più noti e influenti a livello europeo in quel periodo (Plana fu tra l’altro il fondatore dell’Osservatorio Astronomico di Torino). Babbage spera che Plana voglia scrivere e pubblicare un resoconto delle sue conferenze, incarico che però Plana affida ad un suo allora sconosciuto allievo, Luigi Federico (conte di) Menabrea (1809-1906), ingegnere del genio militare. (Menabrea diverrà poi generale di Garibaldi, ministro del regno e primo ministro dal 1867 al
Menabrea scrive un articolo che riassume le idee dell’Analytical Engine, e l’articolo viene pubblicato, in francese, nell’ottobre del 1842 sul n. 82 della rivista della Bibliothèque Universelle de Genève. All’inizio del 1843, Ada Augusta Byron King (1815-1852), contessa di Lovelace (e figlia del poeta George Byron), su consiglio di Charles Wheatstone – amico di famiglia e co-inventore del telegrafo – traduce il lavoro di Menabrea per il Taylor's Scientific Memoirs, una rivista inglese specializzata nella pubblicazione di articoli scientifici e resoconti di congressi esteri. Ada Lovelace invia la traduzione a Babbage, il quale la esorta ad aggiungere note di chiarimento (che alla fine risulteranno più lunghe dell’articolo originale) al lavoro di Menabrea.
L’articolo di Menabrea, tradotto e corredato delle ampie note di Ada viene pubblicato nel settembre del 1843, ed è tradizione considerarlo il primo articolo scientifico nella storia dell’informatica. Copia dell’originale è stata battuta all’asta da Christie’s nel 2013 per 170.000 $.
L’articolo descrive molti aspetti simili all’architettura dei moderni computer e alla loro programmazione quasi cento anni prima che queste idee fossero “riscoperte”, nel XX secolo. Con un po’ di esagerazione, è ormai tradizione considerare Charles Babbage l’inventore del primo computer moderno, e Ada Lovelace la prima programmatrice della storia dell’informatica. Sfortunatamente, le idee di Babbage e di Ada Lovelace passarono sostanzialmente sotto silenzio, e furono poi dimenticate per lungo tempo...
Nel 1854 l’inglese George Boole (1815-1864) pubblica un lavoro scientifico dal titolo: An Investigation of the Laws of Thought, on Which Are Founded the Mathematical Theories of Logic and Probabilities
Qui vengono illustrati i principi dell’algebra di Boole, il fondamento matematico su cui si basano tutti i calcolatori digitali moderni. Se l’algebra che si studia a scuola si occupa dei numeri decimali, descrivendo le operazioni che esistono fra di essi e le loro proprietà, l’algebra booleana si occupa dei “valori di verità” (che sono solo due: vero e falso, solitamente rappresentati dai numeri 1 e 0) e descrive le operazioni fra di essi. Ad esempio: se una frase “bla bla” è VERA e ci metto davanti un NON, come diventa? Se una frase “bla bla” è VERA, e un altra frase “bli bli” è FALSA, l’affermazione “bla bla E bli bli” è vera o è falsa? E l’affermazione “bla bla OPPURE bli bli”?
Boole introduce delle operazioni matematiche (NOT, OR, AND) che agiscono sui valori di verità, e ne descrive il comportamento e le proprietà.
Successivamente Mauchly ed Eckert svilupparono, insieme al matematico e fisico John Von Neumann, il progetto di un computer a programma memorizzato , chiamato EDVAC. I computer a programma cablato disponevano, per i risultati intermedi dei calcoli, di una memoria (ossia di una componente in cui un dato poteva essere “scritto”, senza paura che si cancellasse, e successivamente “riletto” quando serviva per un’altra operazione).
L’idea “nuova” era di controllare il funzionamento del circuito non tramite interruttori, bensì inserendo degli opportuni codici nella memoria del computer, quella stessa memoria che già veniva usata per conservare i risultati intermedi dei calcoli. In questo modo lo stesso computer poteva essere istruito a eseguire algoritmi completamente diversi semplicemente inserendo nella sua memoria dei codici diversi. Vale la pena notare che questa stessa idea era stata contemporaneamente espressa dallo scienziato inglese Alan Turing di cui parleremo dopo. Per “programmare” il computer (ossia istruirlo su quale algoritmo realizzare, inserendo gli opportuni codici nella sua memoria) si utilizzavano le schede perforate: in base alla posizione dei fori sulla scheda, nella memoria del computer veniva inserito uno 0 o un 1.
Von Neumann descrisse il progetto del EDVAC in un documento intitolato “First draft of a report on the EDVAC” (1945) che rese il progetto famoso in tutto il mondo (...e lo fece passare alla storia col nome “Architettura di Von Neumann”!)
Il primo computer basato su questo progetto, un prototipo, lo Small Scale Experimental Machine (detto Manchester Baby ), fu messo in funzione nel 1948 alla Victoria University of Manchester. L’EDVAC vero e proprio (che quindi non fu il primo computer a programma memorizzato della storia, ma il secondo…) fu costruito effettivamente nel 1949.
Qual è l’idea alla base della cosiddetta architettura di Von Neumann?
Il computer è costituito da una memoria centrale (divisa in due sezioni, una per i dati e una per i programmi, e costituita da una sequenza numerata di caselle dette celle ) e da una central processing unit , unità centrale di calcolo, dove si trovano i circuiti. Anche la CPU è divisa in due parti: l’ unità aritmetico-logica , composta dai circuiti che effettuano i calcoli, e la unità di controllo dove ci sono i circuiti che regolano la lettura dei programmi dalla memoria. In particolare nell’unità di controllo c’è un registro (ossia una piccola unità di memoria collegata direttamente al circuito) chiamato contatore di programma che indica la posizione in memoria centrale della prossima istruzione da eseguire. La memoria centrale e la CPU comunicano tramite un collegamento elettrico chiamato BUS. Per poter eseguire un calcolo l’unità aritmetico logica deve prelevare dalla memoria centrale i dati su cui deve avvenire l’operazione, e successivamente dovrà riscrivere nella memoria centrale il risultato. Le istruzioni che questo agente di calcolo è in grado di capire sono di due tipi:
● Istruzioni aritmetico/logiche, che fanno calcoli. Per fargli eseguire una di queste istruzioni bisogna dirgli dove prendere in memoria i dati e dove scrivere il risultato. Vengono eseguite dall’unità aritmetico-logica. ● Istruzioni di controllo, che istruiscono il computer su quale sia la prossima istruzione da eseguire, modificando il valore nel contatore di programma. Se non diversamente istruito, il computer passerà alla prossima istruzione nella sequenza. Queste istruzioni possono essere condizionali , ossia far dipendere la propria esecuzione dal valore di una cella di memoria.
Il funzionamento del computer è regolato da un “clock” o orologio, che manda un impulso elettrico a intervalli regolari. Ad ogni impulso del clock: ● Viene letta una istruzione dalla parte di memoria riservata ai programmi, quella indicata dal contatore di programma (all’inizio sarà la prima). Il contatore di programma viene poi aumentato di 1, cosicché al prossimo giro si esegua la prossima istruzione. ● Se si tratta di un’istruzione aritmetico-logica: ○ Vengono prelevati dalla memoria centrale i dati indicati dall’istruzione. ○ Viene effettuato il calcolo indicato dall’istruzione. ○ Il risultato del calcolo viene messo nella cella di memoria centrale indicata dall’istruzione ● Se si tratta di un’istruzione di controllo non condizionale: ○ Il contatore di programma viene impostato al valore indicato dall’istruzione ● Se si tratta di un’istruzione di controllo condizionale: ○ Viene prelevato il contenuto della cella di memoria indicata dall’istruzione ○ Viene verificato se il valore è maggiore di 0 ○ Se è così il contatore di programma viene impostato al valore indicato dall’istruzione
La cosa particolare, che rende i computer molto più potenti di una semplice calcolatrice programmabile che esegue calcoli in sequenza, è che esiste un tipo speciale di istruzione che cambia il contenuto del contatore di programma, permettendo di saltare, in base a condizioni verificate sul momento (il risultato di un calcolo, il contenuto di una cella di memoria, l’input di un sensore) ad un punto qualsiasi del programma: più avanti, saltando alcune istruzioni, o anche più indietro, ripetendo parti del programma stesso.
I computer di oggi sono ancora basati su questa architettura.
Come già detto, la II guerra mondiale – e in particolare la necessità di decifrare i messaggi nazisti
Torniamo ad Alan Turing. Parallelamente al suo lavoro a Bletchley Park, Turing lavorò ad un modello astratto di macchina, riprendendo anche in parte il lavoro di Babbage. Turing era interessato, come matematico, a caratterizzare quali funzioni matematiche fossero effettivamente calcolabili in modo automatico. Era naturalmente anche interessato a progettare un calcolatore effettivamente in grado di calcolarle, ma il suo progetto, la “ macchina di Turing ” si rivelò più adatto come modello teorico che come approccio concreto alla progettazione di calcolatori.
La tesi di Church-Turing afferma che se esiste una procedura (algoritmo) che permette ad un umano di calcolare una funzione, allora è possibile programmarlo su una macchina di Turing. Per questa ragione ancor oggi si dice che un agente (o un modello) di calcolo è “ Turing-completo ” per indicare che, essendo in grado di fare gli stessi calcoli di una macchina di Turing, può essere programmato per eseguire qualsivoglia algoritmo che un essere umano sia in grado di descrivere.
L’architettura di Von Neumann è un modello di calcolo “Turing-completo”, dunque ogni computer oggi in uso è in grado di calcolare qualsiasi funzione per la quale sia possibile esprimere un algoritmo. Le macchine della serie Colossus non erano Turing-complete. In effetti, il primo computer Turing-completo della storia fu proprio lo Z3 di Zuse, che quindi può a tutti gli effetti essere considerato l’inventore del computer (anche se non della tipologia di computer da noi utilizzata, che va attribuita a Mauchly, Eckert, Von Neumann e Turing).
I primi computer erano delle macchine gigantesche, che occupavano intere stanze, e venivano “programmati” a schede perforate. Solo chi aveva costruito il computer sapeva come programmarlo (ossia a quali codici corrispondevano quali istruzioni!) e nessun altro avrebbe potuto utilizzarlo (né avrebbe voluto, perché non avrebbe saputo cosa farsene, non essendo in grado di programmarlo).
Inoltre questi computer funzionavano in modo “batch”: si davano tutte le informazioni necessarie per il calcolo una volta per tutte all’inizio, e finché il calcolo non era terminato non c’era modo di interromperlo o di intervenire per modificare qualcosa.
Quando i primi computer iniziarono a diffondersi nei laboratori di ricerca, gli scienziati dovevano prenotare il tempo di utilizzo; magari avevano passato ore a codificare le schede perforate per ottenere il calcolo che desideravano, per poi scoprire che avevano fatto un errore… e magari dover aspettare giorni prima di poter di nuovo riutilizzare il computer.
Senza entrare troppo nei dettagli, possiamo dire che la storia successiva, che ha portato ai personal computer (ossia i computer per uso personale, diffusi nelle case delle persone), è stata caratterizzata da alcuni ingredienti fondamentali: ● La miniaturizzazione dei circuiti , e il miglioramento della loro efficienza nei calcoli, che ha reso possibili macchine sempre più piccole e sempre più veloci. ● L’invenzione (e l’evoluzione) dei linguaggi di programmazione : nessuno più programma inserendo i codici binari specifici di un computer direttamente nella sua memoria. I programmatori descrivono gli algoritmi usando istruzioni ed espressioni più vicine ad una logica “umana”, anche se a base fortemente matematica. I computer sono dotati di programmi speciali, chiamati “compilatori” o “interpreti” a seconda del modo di^2 funzionamento, che traducono le istruzioni dei linguaggi di programmazione nei codici della macchina su cui il programma dovrà girare. ● L’introduzione dei sistemi operativi che ha reso possibile una maggiore interazione con chi utilizzava il computer. Il sistema operativo (OS, operating system ) è un programma che risiede permanentemente nella memoria del computer e interagisce costantemente con l’utente, il quale ha dunque modo di dare comandi senza necessariamente programmare il computer. Questo ha portato alla possibilità di pre-caricare nel computer diversi programmi e permettere ad un utente inesperto di eseguirli, inserendo dati e ricevendo i risultati, senza essere in grado lui stesso di programmare il computer.
Il primissimo personal computer fu costruito dall’Olivetti nel 1965, ed era più simile ad una calcolatrice, con un display molto piccolo in grado di visualizzare un’istruzione alla volta, e un rotolo di carta (come la cassa di un supermercato…) per stampare i risultati.
I personal computer maggiormente diffusi a partire dagli anni ‘70 erano tipicamente caratterizzati da un monitor testuale, dove i risultati delle elaborazioni venivano mostrati agli utenti sotto forma di testo. Gli utenti inserivano i dati tramite una tastiera. Il PC era basato sull’architettura di Von Neumann, quindi aveva una “scheda madre” contenente l’unità centrale di elaborazione e la memoria principale, collegate dal bus. In aggiunta tuttavia doveva avere una memoria “permanente” per far sì che non fosse necessario riprogrammare il computer ogni volta che veniva acceso (la memoria principale si cancella in assenza di corrente elettrica). Questa memoria permanente era ottenuta inizialmente tramite dischi magnetici flessibili (floppy disk) che dovevano essere inseriti negli appositi alloggiamenti perché all’accensione il loro contenuto fosse caricato in memoria centrale. In fondo era l’epoca del vinile, dei 45 giri e degli LP.... i dischi parevano il modo più comune di registrare un’informazione! Ovviamente (sempre ispirati dal mondo musicale) esistevano anche i nastri, ma per i computer erano più scomodi: infatti per trovare un’informazione in un nastro bisogna scorrerlo tutto, mentre la testina di un disco ha più libertà di movimento.
(^2) Un compilatore traduce per intero tutto il programma perché possa essere caricato direttamente nella memoria del computer; una volta che il programma è stato compilato il compilatore non serve più. Un interprete invece risiede nella memoria del computer e traduce ad una ad una le istruzioni del programma mentre si presentano.
poter comunicare (pensiamo ai “protocolli di corte” delle monarchie…). TCP/IP è un protocollo standard a cui si deve aderire per poter far parte di Internet. Internet è una “rete di reti”: aziendali, pubbliche, private, governative, accademiche… al suo interno ciascuna sottorete può usare anche protocolli diversi (anche se ormai la maggior parte delle tecnologie si basa su TCP/IP quindi la maggior parte adotta quello) ma per comunicare con le altre sottoreti deve seguire le “regole” di TCP/IP.
La tecnologia su cui si basa il protocollo TCP/IP risale grosso modo agli anni ‘60 (naturalmente si appoggia su tecnologie precedenti) del XX secolo. Nel 1969 il DARPA (Defense Advanced Research Projects Agency), il centro di ricerca del ministero della difesa statunitense, inaugurò la rete ARPANET, che collegava alcuni centri di ricerca militari e universitari negli USA. Sia negli USA che in Europa, tuttavia, venivano portati avanti progetti paralleli per collegare computer in rete su lunghe distanze. Nel corso degli anni ‘70 gli scienziati del DARPA lavorarono al problema di collegare fra loro più reti diverse, basate su tecnologie e modalità di comunicazione diverse. Il protocollo TCP/IP, che nella sua forma attuale è stato pubblicato nel 1981, è il frutto di queste ricerche.
Nel 1983 la parte militare di ARPANET venne spostata su una rete separata, e ARPANET collegata ad altre reti esistenti negli USA tramite TCP/IP. Questa “rete di reti” prese il nome di Internet, termine nato come abbreviazione di “Internetworking” ossia “collegamento FRA reti”. Nel corso degli anni ‘80 anche le reti europee, asiatiche e australiane si collegarono a poco a poco ad Internet tramite TCP/IP. In Europa il progetto ruotò principalmente intorno al CERN di Ginevra.
Ai suoi albori, la rete internet veniva utilizzata per scambiare dati, cosa che avveniva principalmente in due modi:
Entrambe queste attività avvenivano con un modello client-server (cliente/servitore): il “client” (un software sul computer dell’utente finale) richiede un servizio e il “server” (un
(^3) Un “file” (in inglese significa “archivio”) è un insieme di dati omogeneo identificato da un nome e da una collocazione (nella memoria di un computer, o nel Web), che permette di reperirlo. Possiamo distinguere due categorie macroscopiche di file: i file contenenti dati, e quelli contenenti programmi che il computer può eseguire. Quando un file contiene dati elaborati da un utente tramite un apposito software viene anche chiamato “documento”.
software sul computer che riceve la richiesta) glielo fornisce. I computer che ospitano i server sono di solito computer più potenti, dotati di memorie di maggiore dimensione. Nel caso della mail, gli utenti potevano richiedere due servizi: l’invio del messaggio (il server a cui il mittente fa riferimento riceve il messaggio dal software client e lo invia al server a cui il destinatario fa riferimento) o la ricezione (il server a cui l’utente fa riferimento mette a disposizione del client tutti i messaggi che gli sono pervenuti da quell’utente). Il server fa dunque allo stesso tempo da postino e da ufficio postale. Nel caso del trasferimento file, il software client poteva richiedere di mettere un file nel deposito, di consultare il catalogo del deposito o di prelevare un file. Il software server doveva innanzitutto verificare se quell’utente aveva il permesso di fare quell’operazione. Successivamente o riceveva il file e lo memorizzava nel deposito, inviava al software client il catalogo, oppure inviava il file desiderato, a seconda del tipo di richiesta ricevuta.
Verso la fine degli anni ‘80 stavano cominciando a circolare nei questi “depositi” di file dei documenti che venivano chiamati “ipertestuali”: contenevano infatti al loro interno collegamenti ad altri documenti, permettendo di reperire più facilmente materiali fra loro collegati. Ad esempio un documento contenente un articolo scientifico poteva contenere un collegamento ad un file con i dati dell’esperimento descritto nell’articolo, un altro ad un articolo precedente sullo stesso argomento, etc. Questi collegamenti erano realizzati assegnando a ciascuna “risorsa” (per risorsa si intendeva un file disponibile nel deposito) un codice identificativo. Il software per il trasferimento dei file era in grado tramite il codice di reperire la risorsa collegata, senza che il ricercatore dovesse cercarla “a mano” nel deposito.
Nel 1989 l’ingegnere informatico Tim Berners-Lee ebbe l’idea di sviluppare un programma apposta per leggere in modo grafico i documenti ipertestuali, per seguire i collegamenti al loro interno, e di proporre uno standard per identificare le risorse che tutti potessero utilizzare, in modo da collegare fra loro anche documenti presenti in depositi diversi. Aveva inventato il World Wide Web.
Il World Wide Web (in breve, WWW, W3 o semplicemente Web, che significa ragnatela) nasce infatti come una rete documentale, ipertestuale e multimediale, grazie alla quale è possibile per chi possiede un “deposito di file” (quello che adesso chiameremmo un Web Server: un computer che contiene al suo interno memorizzate le pagine Web e permette a tutti di consultarle) pubblicare documenti (ipertestuali, ossia che contengono collegamenti ad altri documenti, e multimediali, ossia contenenti non solo testo, ma anche immagini, audio, etc) che altri possono leggere con un apposito programma (quello che adesso conosciamo come Web Browser: un software che trasferisce i documenti dal Web Server e li visualizza con la grafica e l’impaginazione stabilite da chi li ha scritti).
Molti erroneamente (e tutti colloquialmente...) confondono i termini “Internet” e “World Wide Web”. Internet indica in realtà la parte tecnologica della rete mentre il World Wide Web è più assimilabile ad un “software” specifico (o meglio, ad un insieme di software) che “gira” su