La rete internet

Se stiamo lavorando su un computer e il nostro vicino di stanza ha un altro computer, normalmente non possiamo usare o accedere a quel computer attraverso il vostro, perché i due computer sono separati e sostanzialmente “chiusi” l’uno all’altro. Una rete è, al contrario, proprio un meccanismo tecnico che mette in collegamento computer fisicamente separati. Lo fa attraverso una linea di collegamento che deve essere riconosciuta (attraverso una porta di i/o) da entrambi i computer (è necessario anche un software che gestisca la porta e lo scambio dei dati, naturalmente).

In questo modo è possibile, se i computer sono adeguatamente programmati e abilitati, condividere risorse (dati, documenti, ma anche potenza di calcolo: memoria, processori) fra computer diversi. Inoltre in una rete possono essere connessi non solo computer, ma anche periferiche (stampanti, plotter, scanner) da condividere fra più computer.

Reti e mainframe

In effetti, le prime reti non nascono con l’obiettivo di condividere la potenza di più calcolatori, ma, al contrario, per suddividere la potenza di un calcolatore potente e costoso in modo che possa essere usata da più terminali. I terminali sono punti di accesso indipendenti ad un computer. Le strutture di questo tipo sono chiamate mainframe: potenti computer che dividevano le proprie risorse su più terminali (composti da monitor e tastiera) in un’area geografica limitata. I mainframe erano comuni nelle grandi aziende informatiche dalla fine degli anni ’50 agli anni ’70.

L’abbattimento dei costi di produzione dei computer ha fatto poi sì che si trovasse conveniente passare da una rete con un potente computer centrale con molti punti di accesso, a reti in cui molti computer relativamente potenti si collegavano fra loro per condividere risorse.

I mainframe hanno alcuni vantaggi e alcuni svantaggi rispetto alla reti di computer:

  1. Sono più intolleranti ai guasti
  2. Costano di più
  3. Sono meno scalabili di una rete di computer

I vantaggi invece sono almeno:

  1. Minori costi di assistenza quelli di assistenza (troppi computer da tenere in considerazione nelle reti con più di 50 elementi)
  2. Maggiore sicurezza rispetto alle reti di computer.

Estensione delle reti

Le reti di computer possono avere diverse estensioni e riguardare diversi ambiti. Esistono le reti di personali (PAN)
Le reti locali di computer (LAN). Spesso queste reti riguardano un edificio o alcuni edifici con estensione di qualche chilometro al massimo (es, Area di ricerca). I collegamenti sono creati con cavi dedicati e usano porte specifiche, come la porta ethernet, installata su quasi ogni computer. La porta è una specie di apertura di comunicazione verso un canale privilegiato nel quale passano dati da e verso altri computer.

Esistono reti basate su altre tecnologie, come le WLAN, che invece di usare i cavi usano collegamenti radio, senza fili.

Le reti possono via via estendersi oltre i confini limitati di un’area definita. Si dà vita così alle MAN o alle reti geografiche (WAN).

Cablaggio delle reti

Le reti si possono distinguere oltre che per estensione anche per il tipo di cablaggio (cioè di collegamento fisico fra i computer o le aree dove risiedono i computer).
Diversi tipi di collegamento fisico danno vita a reti di velocità e affidabilità differente. Spesso le reti fanno uso, in tratti differenti, di diversi tipi di cablaggio o di collegamento.

  • Fibra ottica
  • Rete elettrica
  • Reti wireless
  • Reti satellitari
  • Doppino telefonico
    • modem
    • ISDN
    • ADSL
  • Cavi coassiali

Instradamento dei messaggi: commutazione di circuito e commutazione di pacchetto

Sebbene spesso le reti a grande diffusione come la rete internet utilizzino in parte le linee telefoniche, vi è una grande differenza nel modo di funzionare della comunicazione all’interno delle reti telefoniche e nelle reti di computer. Le reti telefoniche infatti prevedono che un circuito di connessione fra due terminali (i due telefoni) sia permanentemente occupato e dedicato a quella comunicazione. La comunicazione è rara, ma quando accade è costante. In quel caso i due circuiti sono connessi e occupati uno con l’altro, nessuno può accedere a quel canale. Questo tipo di connessione si basa sulla cosiddetta commutazione di circuito, che significa che quel circuito è occupato permanentemente (è commutato) da una sola connessione (infatti se chiamate trovate occupato).

La commutazione di circuito è il primo tipo di rete (nasce con il telegrafo), ma non è adatta, come abbiamo già anticipato, alle reti di computer. Infatti, se tratti di connessione (pezzi di circuito) fossero permanentemente connessi fra di loro e non consentissero il passaggio di altri dati, avremmo ben presto una rete bloccata fra computer che magari scambiano fra loro pochi dati in maniera non continua, ma impulsiva. Per tutto il tempo, però, la linea rimarrebbe comunque occupata, sebbene senza trasmettere niente.

Questo problema ha fatto nascere la cosiddetta commutazione di pacchetto, in cui il circuito non è mai dedicato a due specifici punti della rete, ma, a turno, trasporta informazioni attraverso vari circuiti. Queste informazioni ottengono ciascuna solo poco tempo a disposizione, ma lo ottengono ciclicamente. Questo modo di instradare i messaggi comporta che le informazioni vengono divise in pacchetti in origine, prima di essere inviate, e i pacchetti ricomposti sul computer finale una volta giunte a destinazione, per riformare il messaggio originario. Ecco perché la comunicazione di questo tipo si chiama a commutazione di pacchetto: pacchetti di informazioni viaggiano per la rete attraverso circuiti differenti, avendo in comune solo la destinazione e portando con sé le istruzioni per ricombinarsi con gli altri pacchetti.

Tipo di instradamento del messaggio e forma delle reti (dei circuiti) sono strettamente collegati.

La commutazione di pacchetto deve infatti la sua origine ai primi lavori sulla topologia delle reti di comunicazione svolte alla Rand Corporation da Paul Baran, e alle ricerche di Donald Davies al National Physical Laboratory.

(rete centralizzata, rete decentralizzata, rete distribuita)

Larry Roberts (ARPANET) collegò fra loro questi due filoni di ricerca per utilizzarli nelle reti di calcolatori.

Internet

La rete internet non è altro che una rete che collega computer sparsi in tutto il mondo attraverso collegamenti che sfruttano sia tecnologie dedicate (alcune dorsali di comunicazione, che tecnologie non dedicate, come le reti telefoniche locali). In questo modo i confini della rete sono virtualmente infiniti.

L’origine della ricerca scientifica su Internet prende l’impulso da una serie di situazioni internazionali. Nel 1957 l’URSS manda in orbita il primo satellite, lo Sputnik. Questo crea uno shock nel mondo occidentale. Gli Stati Uniti reagiscono affidando nuovi fondi per la ricerca aerospaziale all’ARPA, sotto la guida del pentagono (1958). L’ARPA ebbe la missione di stimolare la ricerca; ridurre le tensioni fra le armi (settori della difesa), e fu perciò osteggiata dalle gerarchie militari. Ben presto infatti queste ricerche vennero trasferite alla NASA, e all’ARPA dovettero trovare un nuovo filone di ricerche, che fu individuato nella nascente scienza dei calcolatori.

All’interno dell’ARPA vennero chiamate molte persone che non avevano alcun ruolo nelle gerarchie militari, ma che provenivano dalla ricerca. Uno era lo psicologo J.C.R. Licklider, che al MIT si era interessato di interfacce uomo-macchina, e che scrisse “Man-Computer symbiosis” nel 1960. Predisse in anticipo la nascita di comunità intellettuali (non solo lavorative) nelle allora ancora inesistenti e future reti di computer.

Il fatto che i computer siano connessi in rete non significa che basti aprire il file-system e, assieme al vostro disco rigido, trovare i dischi rigidi di tutti gli altri computer. Ci sono limitazioni, per ragioni di privacy e di sicurezza, al tipo di accesso che si può fare degli altri computer e dei dati in essi contenuti.

Nel 1969, in seguito anche ai lavori di Baran e Davies sulla commutazione di pacchetto e sul tipo di rete, entra in azione ARPANET, primo progetto di rete di computer (con soli 4 nodi), a cui ne seguirono diversi altri.

Le reti di computer, fra cui Internet, sono regolate da un insieme di protocolli di comunicazione, ciascuno dei quali consente un tipo di accesso alla rete.

Cosa sono i protocolli

I protocolli sono regole condivise che consentono lo scambio di informazioni e la regolazione di questo scambio. Non descriveremo i protocolli tecnici, mi interessa che ne capiate il ruolo, piuttosto. Il fatto che esiste un collegamento fisico fra i computer non significa che sia sempre possibile fare tutto: cosa si può fare dipende dai protocolli usati.

Si possono usare diversi protocolli per comunicare fra computer. Dipende dai programmi che si usano. Sono i software infatti a gestire comunicazioni e protocolli.

Nel 1970 fu approvato il primo di questi protocolli, NCP, il primo di questi protocolli, in seguito (1983) sostituito da un insieme di due protocolli alternativi, TCP e IP (ora noti come TCP/IP e ancora in uso su Internet.

Nel 1973 era già in uso il protocollo che serviva a inviare email (SMTP, ideato da Jon Postel) a dispetto del fatto che ci fossero solo 15 nodi operativi in ARPANET.
Quando si usa l’e-mail, si sta in realtà usando un programma che gestisce un archivio di comunicazioni memorizzate da qualche parte su un disco rigido, e le spedisce e riceve usando un protocollo specifico.

E’ intuitivo che il protocollo usato per le mail non sia lo stesso che si usa quando si visitano le pagine web. Il programma che si usa per accedere alle pagine web usa un protocollo diverso, in maniera normalmente trasparente. Difficilmente capita di riflettere sui protocolli usati da Explorer e da Outlook (o da Firefox e Eudora, o altri programmi)!

Anche quando si fa file-sharing, si sta in realtà usando un protocollo diverso. Tutti questi protocolli convivono ed esistono grazie a questo ambiente più ampio che è la rete internet.

Quella parte che ne usiamo ogni giorno è solo una piccola parte di quello che è possibile fare.

All’inizio degli anni 80 i militari si appoggiano sempre più ad ARPANET per le loro esigenze di comunicazione, ma poiché ARPANET oltre a siti militari, collega istituti di ricerca e aziende (nel frattempo i nodi sono diventati 200), i militari desiderano una rete tutta per loro e ARPANET si divide in due, ARPANET (dedicata alla ricerca) e Milnet (dedicata a scopi militari).

Nel corso degli anni 80, seguendo programmi di ricerca in parte indipendenti, furono create nuove reti locali di computer. Progressivamente usarono tutte TCP/IP.

NFC si assunse l’onere di costruire un collegamento diretto fra i 5 maggiori centri di supercalcolo a 56 Kbps, chiamata NSFnet (1986). In seguito altre università costruirono altre dorsali e il numero di host decuplicò (10.000). Il backbone NSFnet dovette essere aggiornato a una rete T1 da 1,544 Mbps. Gli host (dispositivi collegati alla rete) divennero più di 100mila nel 1988, anche in Europa.

Tutte le reti ormai passavano per la più efficiente NSFnet. DARPA si rivolse ad altri interessi, e così nel 1989 si stacca la spina ad Arpanet. I siti vengono trasferiti su NSFnet o altre reti regionali

All’inizio degli anni 90 le reti erano molto diffuse in ambito universitario. Vi erano soprattuttto utenti esperti, programmi a linea di comando, con sigle e indirizzi numerici (prima del DNS, Domain Name System, inventato da Postel, Mockapetris e Partridge per semplificare il sistema di indirizzi numerici)
Con l’aumento esponenziale degli utenti, nacque l’esigenza di trovare un nuovo modo di interfacciarsi con le reti e reperire le risorse.
Nel 1989 nasce Archie, programma per il recupero di contenuti di archivi FTP.
Wide Area Information Server (WAIS), sistema di information retrieval basato su specifici programmi client. Nel 1991: Gopher, interfaccia universale alle risorse di rete orientato al contenuto e non alla localizzazione, architettura client-server.

E proprio nel 1991 (soffocando di fatto nella culla sia Archie che Gopher) si pubblicano le specifiche tecniche dei linguaggi e dei protocolli alla base del WWW, il World Wide Web.

Specifici protocolli usati su internet hanno anzianità diverse. Ogni protocollo viene associato a un qualche programma che lo gestisce e ve ne consente l’uso. Alcuni protocolli hanno avuto successo e altri no. Quasi tutti sono ancora in uso, anche se sono usati da pochissime persone.

Quello di cui ci occuperemo di più è senz’altro quell’invenzione nota come World Wide Web, o web, o WWW.

Il World Wide Web

Le caratteristiche del WWW sono state definite nel 1991 da Tim Berners Lee e Robert Cailleau, che sono due fisici che all’epoca lavoravano al CERN di Ginevra, e consistono di un insieme di tecnologie coordinate fra loro, con lo scopo almeno di chiarato di condividere i documenti presenti al CERN su diversi computer con OS diversi, che non potevano parlarsi fra di loro, e creare così un sistema di gestione documentale, all’epoca un grave problema al CERN.

Il WWW fu rifiutato più volte dai capi di Tim Berners-Lee, che, esasperato, nel 1990 ne pubblico il codice aperto su un newsgroup. Fu così che varie altre persone crearono dei server per altre piattaforme (portarono il server…) e il sistema acquistò subito grande interesse nella comunità dei fisici e dei ricercatori. I suo componenti, nel dettaglio, sono i seguenti:

Un protocollo di rete (tcp/ip)

Un protocollo di comunicazione che si appoggia su TCP/IP e serve allo scambio di un certo tipo di file, chiamato HTTP, HyperTextual Transfer Protocol
Un linguaggio per la creazione di un formato di documenti ipertestuali, HTML (Hypertextual Markyup Language)
Un programma che gestisce l’archiviazione e l’invio in rete dei documenti HTML, e che risiede sui computer remoti connessi in internet e che contengono i siti: server
Un programma client, cioè che risiede sui computer di coloro che vogliono accedere a questi documenti html. E’ il browser, programma sfogliatore.

Un insieme di regole che definiscono indirizzi univoci per ogni risorsa esistente in ogni server di tutti i computer del mondo: l’URL, Universal Resource Locator.
Tutte queste cose devono essere installate e funzionanti sui computer collegati in rete per consentire un corretto funzionamento.

La logica di funzionamento è dunque la seguente:

  • Un browser (client) sul vostro computer richiede una risorsa (documento html); fisicamente lo si richiede digitando un indirizzo nella barra degli indirizzi. Questo indirizzo è l’URL del documento.
  • Il sistema consente il recupero dell’indirizzo fisico associato a quell’URL, e che è univoco.
  • Quell’indirizzo è gestito da un programma (server) che recupera il file archiviato e lo trasmette al browser.
  • Il browser riceve il codice del documento e gli altri file ad esso collegati (immagini, stili, video…) e li assembla in una pagina resa visivamente a monitor.

URL e DNS

Gli indirizzi che si digitano nella barra degli indirizzi del browser (URL) hanno forma alfanumerica. Ma in realtà sono scritti come stringhe di quattro numeri di massimo tre cifre separati da un punto (ad esempio: 128.12.12.1). Un server che ha un ruolo specifico (DNS) traduce il nostro indirizzo alfabetico in undirizzo numerico, e ci instrada verso il server, che potrebbe risiedere in Alabama o in India, per quel che ne sappiamo. Il server riceve la richiesta e restituisce i file.

Sulla carta è semplice. Naturalmente perché questa cosa si sia potuta realizzare sono state necessarie innovazioni tecniche di altissimo livello. Alcune hardware, alcune software.

Noi non entreremo nel dettaglio di questo meccanismo. Ma a questo semplice livello deve essere chiaro.

Entreremo semmai nello specifico della costruzione dei singoli documenti che affollano il web. Le pagine HTML, una delle componenti inventate da Berners-Lee.

In questo momento diciamo che l’html è un linguaggio, cioè un codice, che definisce un formato di documento.

Il formato è uno dei tanti possibili per archiviare informazioni, dati, e poi presentarli. Ma ha, come tutti i formati, caratteristiche uniche. In particolare, la caratteristica principale è che può contenere collegamenti ipertestuali. Cioè punti speciali che consentono di richiedere altri documenti presenti nel WWW, in maniera semplice e intuitiva. In questo modo, una pagina può contenere collegamenti a qualunque altra risorsa sul WWW, in maniera semplice, specificando l’URL di quella risorsa.

Prima dell’HTML questo non era possibile. Gli ipertesti già esistevano, ma i documenti potevano riferirsi solo ad altri documenti presenti sullo stesso computer. Mancava uno standard di riferimento che consentisse di riferirsi a qualunque altra risorsa presente online.

Con il WWW, gli url e l’html, invece, si possono collegare (linkare) risorse presenti ovunque (purché stiano dentro il WWW. Cioè su un qualche server, che ne definisca l’indirizzo). L’altra caratteristica interessante dell’HTML è che consente di riferirsi non solo ad altri documenti html, ma a qualunque tipo di documento archiviato sul server.

Perciò può linkare a file DOC, RTF; TXT, a immagini di vario tipo, a file audio e video.

Queste caratteristiche fanno del web un ambiente ideale per contenere qualsiasi tipo di cosa per consultazione e riferimento immediato. Ne fa insomma un ambiente di archiviazione; di consultazione. Ma Html consente anche una facile scrittura (è un linguaggio semplice). Inoltre è a codice aperto. Chiunque può costruire programmi che scrivano HTML (e chiunque può costruire browser, cioè programmi che li leggano). Le caratteristiche dei server, inoltre, fanno sì che chi consulta una pagina possa anche, se l’opportunità è prevista, intervenire, lasciare un commento, inviare una mail (e usare così altri protocolli)… Insomma, ciò che colpisce del web è che è un ambiente che unisce in un unico tessuto documenti e informazioni a livello mondiale, ne consente la consultazione, consente ai visitatori di partecipare (in modi diversi) e di lasciare tracce della loro visita.

E’ un ambiente di pubblicazione ma anche di scambio. Un nuovo medium di presentazione e un grande archivio. Qualcosa che non è obiettivamente possibile con nessun altro medium precedente.

  1. Attraverso il telefono è possibile interagire con un altro parlante, ma non si conserva traccia delle comunicazioni. Non è possibile inoltre scambiarsi documenti.
  2. Attraverso il fax è possibile scambiare copie di documenti solo cartacei, ma la comunicazione è ridotta, senza alcuna possibilità di interazione in tempo reale. L’archiviazione è possibile.
  3. Con la radio, è possibile solo ascoltare, quando lo decide l’emittente, e non è disponibile un archivio delle trasmissioni.
  4. Con la tv, allo stesso modo, si può fruire della comunicazione solo quando lo decide l’emittente. L’interazione è limitatissima (al cambiar canale e al telefonare in studio quando la trasmissione lo prevede). Il linguaggio è composto da un misto di audio e immagini in movimento. Nessuna archiviazione. Le videocassette hanno trovato applicazione proprio come surrogati della funzione di archiviazione di contenuti interessanti, ma si tratta di una soluzione non ideale (bisogna decidere prima che il programma interessa, acquistare la videocassetta, la qualità si deteriora con l’uso, eccetera).
  5. Con il cinema, lo spettatore è vincolato rispetto al come e al quando della fruizione, che viene deciso dall’esercente e dal produttore. Non c’è un archivio cui attingere quando se ne ha bisogno (non a caso sono nate le cineteche e le videoteche). Non possiamo intervenire, commentare, modificare il testo. Ciò che caratterizza il cinema è comunque una maggiore qualità tecnica della fruizione, grazie a dispositivi di grande qualità e molto costosi, possibili fino a poco tempo fa solo con economie di scala.
  6. Con la stampa (quotidiani, riviste e libri) si ha a disposizione un’archiviazione infinita, ma nessuna possibilità di interazione (per quanto sia possibile annotare il testo, ma solo la propria versione del testo), e solo materiali cartecei. La multimedialità si limita alla combinazione di testo e immagini.

Il web offre contemporaneamente:

  1. un archivio eternamente disponibile;
  2. materiali/codici/linguaggi di ogni tipo;
  3. interazione da parte dell’utente;
  4. possibilità di accesso alla pubblicazione/produzione autonoma da parte di chiunque, cosa che con tutti gli altri media è particolarmente onerosa (i vincoli d’accesso sono molto più alti).
  5. oltre alla produzione autonoma, è anche possibile commentare e persino modificare alcuni testi prodotti da altri.

Questo porta inevitabilmente ad una rivoluzione nel modo di intendere le comunicazioni mediate. Non tutte positive o negative: è semplicemente un nuovo modo, una nuova possibilità che viene offerta dalla nuova tecnologia. Il modo in cui la usiamo influenza, com’è logico, anche il modo in cui usiamo gli altri media.

Cos’è un computer


Premessa

Questo testo presenta concetti informatici con un linguaggio volutamente semplificato. Lo scopo di questo testo è quello di condividere una conoscenza di base di tali concetti e della relativa terminologia con studenti che non abbiano alcuna precedente formazione di tipo tecnico. Il testo è stato prodotto per consentire un allineamento terminologico per gli studenti di Scienze della Comunicazione e può risultare ovvio, e talvolta approssimato per studenti di informatica, e non è adatto in generale ad un pubblico specialistico.

Il computer

Un computer o elaboratore elettronico è un oggetto che consente di manipolare rappresentazioni astratte di dati. Consente di svolgere operazioni su quei dati attraverso alcune funzioni rese disponibili da alcuni programmi.

Hardware e software

Un computer è costituito dall’insieme dell’hardware e del software che servono a svolgere queste manipolazioni sui dati. L’hardware è la parte fisica (dura: la memoria, le schede, il processore, i dispositivi di input/output, ecc.), mentre il software è la parte logica (i programmi, i dati).

Componenti hardware del computer:

Di seguito viene schematizzata la struttura dell’hardware di un computer:

  • Dispositivi di input: strumenti che consentono all’operatore di inviare comandi, istruzioni e dati al computer; oggi sono principalmente la tastiera, il mouse. In passato si utilizzavano dispositivi dispositivi a schede perforate. In futuro si diffonderanno probabilmente sempre di più dispositivi più evoluti, già in parte disponibili sul mercato, come i touch-screen, i dispositivi vocali, o gli strumenti di rilevazione dei movimenti corporei attraverso raggi infrarossi.
  • Dispositivi di output: sono strumenti che presentano all’operatore l’effetto delle delle manipolazioni sui dati compiute dal computer. Essi possono presentare dati in maniera transitoria attraverso ad esempio monitoro o altoparlanti, o in maniera permanente, come attraverso una stampante.
  • Microprocessore o CPU, l’elemento che svolge le manipolazioni, il “cervello” del computer, la componente fisica che svolge i calcoli e che decide le potenzialità del computer stesso.
  • Memoria volatile (RAM): è un dispositivo di memoria temporanea, che viene usata per svolgere le manipolazioni, mantenere in esecuzione i programmi e i dati. E’ un altro elemento decisivo per valutare la potenza di un computer. Normalmente un aumento di RAM corrisponde a una maggior capacità e velocità di operazione del computer.
  • Memoria di archiviazione: hard disk, flash disk, cd-rom: serve a memorizzare stati finiti dei dati (documenti) e software permanenti. I dispositivi di archiviazione possono essere permanenti o non permanenti.

Nota sui dispositivi di archiviazione permanenti e non permanenti

E’ da notare che ai dispositivi di archiviazione permanenti (come il disco rigido) si possono aggiungere, collegandoli al computer attraverso altri dispositivi di input/output (come le porte usb o firewire) memorie di archiviazione non permanenti o rimuovibili, come dischetti, cd.rom, memorie flash.

I dispositivi rimuovibili si dividono grosso modo in riscrivibili e non riscrivibili e possono essere usate per trasportare dati da un computer all’altro. Ovviamente, necessari se il computer non è collegato ad una rete. Ma di reti parleremo più avanti.

Il software

Tutto questo hardware non può funzionare senza un sistema di istruzioni logiche, rappresentate in un formato congeniale alla macchina, che dica come effettuare le manipolazioni sui dati e come gestire le rappresentazioni in input e in output.

Questo sistema di istruzioni logiche è il software del computer. Ci sono vari tipi di software, ma qui vogliamo sottolinearne in particolare due: i sistemi operativi e i programmi dedicati a funzioni specifiche.

Tipi di software:

  1. Sistemi operativi: senza questi software l’hardware non può funzionare, l’utente non può operare. E’ un’interfaccia fra utente e hardware, consente l’utilizzo di funzionalità, l’esplorazione dei dati e alcune manipolazioni di base. Ad un livello avanzato consente la modifica delle impostazioni del sistema. E’ una specie di ambiente che prepara il terreno per i programmi.
    1. windows
    2. Mac osx
    3. Linux
    4. OS2
    5. Ecc…
  2. Programmi dedicati a funzioni specifiche sono strumenti immateriali che servono a compiere operazioni su altri documenti. Solitamente le funzioni che offrono sono divise in categorie specifiche: ad esempio, programmi di videoscrittura, di grafica, di calcolo, giochi, ecc. Sono gli oggetti logici che consentono anche ad utenti non esperti di compiere operazioni sui dati, e dunque di trarre beneficio dal computer.

I dati

I software operano su dati. I dati sono rappresentazioni di informazioni statiche, che vengono memorizzate in un formato conveniente. Hanno la medesima natura logica dei software, cioè sono rappresentati attraverso un codice simile. A differenza dei software, che possono eseguire operazioni, normalmente i dati sono statici. Sono piuttosto l’oggetto su cui vengono eseguite le operazioni.

I dati vengono organizzati in documenti o file. Si possono pensare come a insiemi di documenti in uno schedario. Infatti questa è la metafora usata dai più diffusi sistemi operativi. La metafora è imperfetta, perché i file elettronici possono essere modificati e manipolati a piacere, mentre quelli cartacei no. Senza i file di dati la maggior parte dei programmi sarebbe inutile, senza i programmi i file di dati non sarebbero altro che rappresentazioni statiche di informazioni.

Importanza dei programmi

Spesso si comprano i computer per la disponibilità o meno di alcuni programmi. I programmi sono specifici dei sistemi operativi. Un programma che “gira” su un sistema operativo non gira normalmente su un altro. Esistono programmi che girano su più sistemi operativi (come Word o Photoshop), ma è bene precisare che in quel caso non si tratta dello stesso programma che gira su sistemi operativi differenti, bensì due versioni equivalenti di quel programma preparate appositamente per i diversi sistemi operativi. L’azienda produttrice deve dunque mantenere due o più versioni dello stesso programma per i diversi sistemi operativi. Lo fa se ne ricava un vantaggio commerciale, che dipende sia dall’entità della diffusione, sia dalla tipologia di tale diffusione, di un certo sistema operativo. Esistono ad esempio sistemi operativi minoritari, ma che sono usati da pochi utenti molto professionalizzati o da aziende di uno specifico settore, che per l’azienda produttrice del software può costituire una nicchia profittevole anche se di dimensioni limitate.

Programmi e interfacce

Un programma è costituito da un nucleo profondo di codice che è deputato a compiere le elaborazioni, scritto in qualche linguaggio sconosciuto ai più e dal nome esoterico (ad esempio, C++, Delphi, Cobol, ecc). I programmi moderni però prevedono anche una parte di codice che curi la presentazione e la raccolta di dati attraverso un qualche dispositivo di input/output (spesso limitati a monitor, stampante, tastiera, mouse o dispositivo di puntamento). Questa parte del software non compie le operazioni principali, ma gestisce la cosiddetta interfaccia. Le persone operano con i software interagendo con la loro interfaccia.

Sebbene per l’utente la distinzione sia trasparente (un utente ha l’impressione che sia l’interfaccia, i tastini sullo schermo, a compiere le operazioni) va detto che l’interfaccia è solo un tramite. Un ambiente di comunicazione fra un utente che usa un certo linguaggio e conosce certe convenzioni e il programma che svolge certe elaborazioni sui dati in un modo del tutto incomprensibile all’uomo (almeno all’uomo comune…), secondo un linguaggio fatto di numeri manipolati a velocità altissima.

L’interfaccia è il programma (per l’utente)

L’interfaccia per l’utente è il programma, anche se a rigor di termini questo non è appropriato. Un medesimo programma può avere interfacce diverse. Le interfacce moderne si chiamano interfacce grafiche, abbreviate in GUI, perché vengono presentate su monitor attraverso metafore e convenzioni pittografiche. Non è sempre stato così. Le interfacce erano in passato espresse come righe di testo, o come dispositivi che esaminavano schede perforate, o come pannelli con leve e bottoni fisici. Le interfacce si sono evolute negli anni di pari passo con la diffusione dei computere ad un pubblico di massa.

Per alcune ragioni, le interfacce grafiche sono considerate più user friendly delle interfacce a linea di comando, perché sono in genere più facilmente comprensibili (e anche più seduttive) delle altre. Oggigiorno molta parte dello sviluppo di un software è dedicato al miglioramento o allo sviluppo delle interfacce, più che delle funzionalità, che in molti casi si equivalgono fra software diversi. Questo è un argomento che naturalmente riguarda da vicino i “comunicatori” e che riprenderemo. L’interfaccia è infatti il luogo in cui si comunica con l’utente, sia le funzionalità, che altri attributi (come il senso di modernità, di ordine, di attrattività, di piacevolezza: attributi emotivi che accompagnano ogni esperienza umana).

I software sono codice

I software sono realizzati attraverso un codice noto come “linguaggio di programmazione”. I programmatori scrivono il codice e lo testano. Esistono molti linguaggi di programmazione, che hanno sintassi e vocabolario diversi. I linguaggi di programmazione sono studiati per facilitare la programmazione: sono una mediazione fra il linguaggio della macchina e quello dell’uomo. Esistono diversi tipi di linguaggi di programmazione. In generale, però i programmi possono essere interpretati o compilati. Nel caso dei linguaggi interpretati, il programma è disponibile e viene elaborato da un software che si chiama interprete e che ricostruisce al volo le istruzioni. Nel caso dei software compilati, il codice non è disponibile (si trasforma in una sequenza incomprensibile di 0 e 1) e non è possibile modificarlo facilmente. I programmi commerciali sono per lo più precompilati per ragioni di velocità di esecuzione (e perché non è necessario possedere un programma interprete).

Anche dei programmi precompilati può comunque essere reso disponibile il codice. Che siano precompilati o interpretati (vedremo in seguito vari esempi), i linguaggi che rendono disponibile il codice (detto codice sorgente) a tutti sono a codice libero o aperto (open source). Il codice aperto consente di imparare com’è fatto il programma, modificarlo, migliorarlo, correggere errori.

Licenza

Una questione diversa è quella della licenza, cioè cosa il produttore consente che una terza parte possa fare con il codice, anche aperto. La licenza di modificare il software non equivale alla libertà di redistribuirlo.

Nel mondo open source ci sono stati nel tempo vari modi di affrontare la questione, che hanno dato vita ad una terminologia spesso confusa o sovrapposta.

Open source

Il movimento Open Source promuove il codice aperto, condiviso con gli utilizzatori, che possono collaborare a migliorarlo. Si associa al movimento dell’Open Content, che richiede contenuti in formati aperti e disponibili a tutti, con l’obiettivo di garantire e migliorare la condivisione della conoscenza.

Free software

Questo movimento, che ha tratti in comune ma anche specifiche differenze con il movimento Open Source, rivendica le 4 libertà fondamentali del software:

  1. Libertà di eseguire il programma per qualsiasi scopo (chiamata “libertà 0”)
  2. Libertà di studiare il programma e modificarlo (“libertà 1”)
  3. Libertà di copiare il programma in modo da aiutare il prossimo (“libertà 2”)
  4. Libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio (“libertà 3”)

La differenza fra Open Source e Free Software è essenzialmente una differenza di visione del mondo. Per il movimento Open Source il codice aperto è un vantaggio pratico, porta a software migliori, più test, più possibilità di identificare errori e di ricevere contributi innovativi da sviluppatori che volontariamente partecipano in tutto il mondo

Per il movimento del Free Software, lanciato da Richard Stallmann, semplicemente il software deve essere libero per ragioni sociali. E’ un diritto di tutti avere, copiare, modificare, eseguire il codice. Secondo Stallmann è il software proprietario ad essere un problema, perché limita la libertà individuale e la circolazione della conoscenza. E il software libero è la soluzione a questo problema.

Il movimento Open Source non necessariamente garantisce le 4 libertà del software. Il fatto che il codice sia aperto, non significa che a chiunque sia garantito eseguirlo o copiarlo, o distribuirlo.

Vendibilità dei programmi

La questione, in entrambi i casi, non ha a che fare con la commerciabilità del codice. In entrambi i casi i movimenti non sono contrari alla vendita di software. Anzi, la GNU foundation, che si occupa della diffusione del software libero, sostiene che è cosa buona e giusta vendere software libero, purché con una licenza che garantisca le 4 libertà fondamentali viste sopra. La licenza più diffusa usata dalla GNU Foundation è la General Public License (GPL), nota come GPL GNU.

La GPL GNU consente anche di rivendere software libero, ma impedisce di porre limiti sulla ridistribuzione o apertura e modifica del codice. Chi lo ha comprato, ad esempio, ne può ridistribuire liberamente il codice, senza alcuna limitazione, lo può copiare, lo può modificare.

Copyleft

Stallmann è anche il diffusore del concetto di “copyleft” (anche se non ne è l’autore). Il copyleft è un gioco di parole e un ribaltamento concettuale sull’espressione “copyright”. L’idea di “permesso d’autore” consiste nel dare a chiunque il permesso di eseguire il programma, copiare il programma, modificare il programma, e distribuirne versioni modificate, ma senza dare il permesso di aggiungere restrizioni. In tal modo, le libertà essenziali che definiscono il “free software” (software libero) sono garantite a chiunque ne abbia una copia, e diventano diritti inalienabili.

Sostengono i partecipanti al movimento del Free Software:

Essendo uno dei requisiti fondamentali la disponibilità del codice sorgente, comunemente si ritiene che il software open source sia sinonimo di software libero, ma in realtà questa affermazione non è vera.

Il software open source è un software che rispetta alcune convenzioni di distribuzione (per esempio il codice sorgente potrebbe essere disponibile, ma potrebbe esserne vietata la redistribuzione o la modifica e quindi software distribuito sotto tale licenza non può essere software libero) e una licenza è “ufficialmente” open source a discrezione dell’Open Source Initiative (OSI): se una licenza segue le linee guida dell’OSI, allora tale licenza può essere dichiarata licenza open source, ma le direttive potrebbero cambiare nel tempo.

Una licenza invece è libera (o meglio, una versione di una licenza è libera) se e solo se rispetta le quattro libertà fondamentali. Pertanto se una versione di una licenza è libera, allora lo sarà per sempre. Naturalmente è sempre complesso, almeno per un cittadino “normale” (non esperto di leggi), stabilire se una licenza è libera o meno perché entrano in gioco i termini legali utilizzati nella stessa. Il progetto GNU si occupa tra l’altro anche di indicare se una licenza è libera o meno e se è compatibile con le licenze GNU o meno.

Inoltre il software libero non deve essere confuso con il software freeware, che è distribuibile gratuitamente ma che non è né software libero né open source, e con il software di pubblico dominio, che non è soggetto a nessuna licenza d’uso e quindi può essere riemesso da chiunque sotto qualsiasi altra licenza.”

Cosa è meglio?

La discussione se sia meglio un software aperto o chiuso dipende sostanzialmente dal punto di vista che si adotta nella vicenda, e nel fatto di sposare o meno una posizione o una visione o l’altra. Forse è illusorio pensare che vi sia una risposta valida in tutte le occasioni.

Dal punto di vista strettamente pratico ci sono circostanze in cui software migliori sembrano venire da situazioni chiuse, altri da situazioni aperte. Si tratta di modelli diversi, che si adattano diversamente a condizioni diverse. Il web, ad esempio, è un esempio eclatante di progetto totalmente open source, ed è uno dei più clamorosi casi di successo. Anche se il cosiddetto modello di business non è chiaro, non era nemmeno previsto, e tuttora crea qualche problema di visione in molte aziende (tema su cui torneremo).

D’altra parte, sono in molti a trovare più comodi da usare i sistemi operativi proprietari (Mac osx e Windows) rispetto a linux. Va anche detto che la stabilità dei sistemi linux sta alla base del Mac osx. Come si vede, la libera circolazione di idee e prodotti consente in generale di innescare meccanismi virtuosi, indipendentemente dalle capacità di sfruttamento economico, che è un discorso, ormai dovrebbe essere chiaro, distinto, anche se, nel mondo in cui viviamo, inevitabilmente rilevante.

Non è raro ormai che prodotti open vengano personalizzati da aziende e ricommercializzati in versione migliorata. Alcuni di questi benefici possono poi comunque essere restituiti alla comunità open. Il rapporto fra open source/free software, qualità obiettiva dei prodotto e politiche di sfruttamento commerciale è insomma più sfaccettata di come talvolta la si vorrebbe dipingere.

Versioni del software

I software seguono una linea evolutiva, maturano attraverso versioni successive. Le versioni successive non cambiano il nome del software ma ne aggiungono un numero, il cosiddetto numero di versione. Questo è insolito negli altri tipi di prodotto. Ad esempio, non avremo la Punto 3.1.1 (anche se ci sono esempi di automobili con un numero di versione, che però non corrisponde effettivamente alla versione dell’auto, ma segnala piuttosto un’idea di novità rispetto ad un modello di successo in più versioni, come la Yaris 2).
Non abbiamo la chitarra 2.0. O Il televisore mivar 4.1. L’abitudine di numerare in maniera progressiva i software nasce dall’esigenza dei programmatori di tener traccia delle modifiche successive. La prima versione di solito è la 0.1. Il numero principale indica miglioramenti maggiori. I numeri dopo il punto indicano miglioramenti piccoli e progressivi, o anche solo correzioni di errori.

Bachi e altri animali

Gli errori dei software si chiamano bachi. E’ virtualmente impossibile produrre un software senza bachi, perché è impossibile considerare in maniera esaustiva tutte le situazioni. Però è possibile ridurre il bachi ad un numero molto basso.
Il termine baco (bug) ha un’origine curiosa. Quando i calcolatori erano grandi come stanze e funzionavano a valvole invece che a microprocessori di silicio, uno dei primi calcolatori sembrava non funzionare a dovere. Per trovare l’errore i tecnici dovettero smontare tutto e trovarono una piccola farfalla inflata in una valvola, che aveva provocato l’errore.

Portabilità

E’ raro che lo stesso programma giri su più sistemi operativi (talvolta si dice “su più piattaforme”). Il fatto che i programmi non girino su più piattaforme è un problema di portabilità. Un certo programma non può essere “portato” su piattaforme diverse senza modifiche sostanziali al codice per rispettare le convenzioni della nuova piattaforma. Questo vale indipendentemente dalle capacità della piattaforma, che sono normalmente teoricamente equivalenti. Cambia l’architettura, l’orientamento dei diversi sistemi operativi e le capacità degli hardware, ma in teoria tutti i computer possono fare le stesse cose. I programmi vanno però adattati e spesso riscritti per le varie piattaforme. Il problema della portabilità è un problema centrale nel mondo dell’informatica e soprattutto nel mercato dell’informatica.

Interoperabilità

Versioni diverse per diversi OS dello stesso programma non sono portabili: sono versioni diverse, spesso versioni “portate”. In quel caso, il problema è vedere se sono portabili i documenti che producono. Ad esempio, il problema che si pone è quello di valutare se un file prodotto da una versione di Word per Windows può essere trasportata, attraverso un sistema di archiviazione (ad esempio una chiavetta USB) su un altro computer ed essere correttamente manipolata da una versione di Word per Mac OsX. Talvolta anche i file prodotti da versioni diverse dello stesso programma sullo stesso sistema operativo non sono compatibili.

In questo caso si ha un problema di interoperabilità. Cioè versioni diverse di un software, o software diversi, non riescono a interpretare e lavorare sui dati prodotti da altri software.

Documenti di dati e formati

I dati prodotti dai software si chiamano file o documenti di dati. Il problema dell’interoperabilità (l’interpretazione di documenti di dati prodotti da sw diversi) è determinato da diversi fattori. Il principale riguarda il formato di quei dati.

Il formato di un file o di un documento è legato a specifiche logiche che definiscono in quale modo e secondo quali convenzioni i dati e altre informazioni sui dati vengono memorizzate nel documento stesso. Quello dei formati è un argomento molto importante anche per il web, per cui lo riprenderemo in seguito.

Nota: Ovviamente questa è una semplificazione. Esistono programmi che non archiviano dati, ma consentono solo il loro passaggio da un luogo a un altro, anche senza archiviazione. In particolare sono così i programmi che gestiscono le comunicazioni di rete.