3. Hackerdom

In questa parte dell'articolo, vedremo brevemente la situazione del panorama informatico, a partire dal primo elaboratore elettronico. Torneremo piuttosto indietro nel tempo, per dare un quadro che illustri l'evoluzione del mondo dei computer, e della comunità più "caratteristica" che si è sviluppata al suo interno: il fenomeno generalmente indicato con il termine hackerdom [ESR01].

3.1. The Real Programmers

Gli studi sulla possibilità di costruire qualcosa di simile ad un computer (ovvero una macchina automatica per il calcolo numerico) risalgono addirittura al 1600. In quell'epoca, infatti, furono realizzati dai matematici Blaise Pascal e Wilhelm von Leibniz dei dispositivi di calcolo meccanico, che potremmo paragonare ad una moderna calcolatrice tascabile.

Il primo calcolatore elettronico fu costruito nel 1943, e, triste a dirsi, fu progettato per scopi bellici. Si trattava del Colossus, realizzato in gran segreto dal governo britannico, ed utilizzato per decriptare le comunicazioni radio dei Tedeschi (Figura 1). Il Colossus era così segreto che, pubblicamente, non se ne seppe nulla fino al 1970.

Figura 1. Una delle poche foto del Colossus

Subito dopo, gli Americani iniziarono la realizzazione di un altro elaboratore elettronico, l'ENIAC (Electronic Numerical Integrator and Computer), destinato al calcolo delle tabelle di tiro per l'artiglieria pesante.

Dal lavoro per la realizzazione di queste macchine fu possibile intuire l'utilità che il computer avrebbe potuto assumere, anche per scopi (fortunatamente) non bellici. Per questo, negli anni successivi alla II Guerra Mondiale, l'indagine sulla realizzazione di nuovi elaboratori elettronici si trasferì nelle università degli Stati Uniti, dove il lavoro di molti ricercatori (uno tra tutti: il matematico e fisico John von Neumann) portò a definire le basi dei moderni elaboratori. Da questo momento, i progressi furono molto rapidi.

Il periodo finora illustrato va dal 1943 al 1961. Gli elaboratori dell'epoca erano poco più di un ammasso intricato di cavi, grande quanto una stanza. In quel periodo fu inventato il computer come lo conosciamo oggi, fu creato il concetto di networking, fu diffuso l'interesse per gli elaboratori elettronici, e fu eletta l'università come fulcro della ricerca informatica.

I ricercatori che allora lavoravano nel campo dei computer sono oggi indicati come "the Real Programmers". La loro figura è ancora oggi avvolta nel mito: si trattava di persone in grado di programmare una macchina saldando delle valvole o dei transistor, o in grado di ragionare direttamente in codice binario (come nel caso leggendario di Seymour Cray [ESR01]). Sebbene non fosse molto numeroso, il gruppo delle persone che lavoravano in questo ambiente iniziava a mostrare i tratti di una comunità, formata da ricercatori appassionati della nuova scienza informatica, e caratterizzata da propri stili, detti, linguaggi --- insomma, era individuabile un vero e proprio folklore (per esempio, risalgono a quest'epoca alcune delle leggi di Murphy, o alcuni divertissement ancora oggi conosciuti tra i programmatori, come quello sulle "Blinkenlights"[1]). E questo concetto di "comunità" si rafforzerà nel periodo successivo: quando, insieme ai ricercatori, anche gli studenti delle università avranno accesso ai computer.

3.2. Nascono gli hacker

Nel 1961, il MIT (Massachusetts Institute of Technology) acquistò un nuovo computer. Si trattava di un DEC PDP-1, un elaboratore dotato di 4 Kilobyte di memoria, dal costo di $120000 (Figura 2).

Figura 2. Un DEC PDP-1

A differenza degli altri computer in commercio, il PDP-1 possedeva un monitor CRT dalla risoluzione di 512x512 pixel. Inutile dire che alcuni degli studenti del MIT furono subito attratti da questa macchina, e, in breve tempo, iniziarono a programmarla per potervi giocare a battaglie spaziali. Era nato il primo videogame.

L'arrivo del PDP-1 sancisce una svolta importante: per la prima volta, un computer riscuote un notevole interesse tra gli studenti dell'università, oltre che tra i "ricercatori" più classici. In breve tempo, essi iniziarono a creare nuovi programmi, ricercare nuove soluzioni, e accentuare i tratti di una comunità che già si erano visti nei periodi precedenti. E, proprio in questo periodo, gli appassionati del settore informatico iniziarono a chiamarsi tra loro hacker.

Questo gruppo di hacker andrà a formare il MIT Artificial Intelligence Laboratory (MIT AI Lab), che conserverà un ruolo primario nel settore della ricerca fino agli anni '80. E intanto, in altre università, nascevano delle comunità di hacker che, sebbene lontane, risultavano tra loro simili.

3.3. ARPAnet

Nel 1969, le università degli Stati Uniti ebbero accesso ad ARPAnet. Si trattava di una rete di comunicazione dati ad alta velocità (almeno per l'epoca), progettata (ancora una volta per scopi bellici) dalla Advanced Research Projects Agency (ARPA) del Dipartimento della Difesa degli Stati Uniti. ARPAnet rappresentò il nucleo sul quale, col tempo, crebbe l'odierna Internet.

Grazie ad ARPAnet, centinaia di università e centri di ricerca furono connessi tra loro. Era nata la possibilità di scambiare informazioni e risorse in modo rapido ed efficace: da questo momento, la velocità nei progressi del settore informatico (e non solo) aumentò sensibilmente. Oltre al MIT AI Lab, altre università acquistarono un ruolo di primo piano nel campo della ricerca, come nel caso del SAIL (Stanford University's Artificial Intelligence Laboratory) e della Carnegie-Mellon University (CMU) .

Un ruolo importante fu inoltre assunto dallo XEROX PARC (Palo Alto Research Center), nei cui laboratori furono inventati, con un anticipo sorprendente, una serie di sistemi e dispositivi oggi indispensabili per l'informatica: per esempio, la stampante laser, il primo modello di Personal Computer, il concetto di rete locale LAN (Local Area Network), la prima interfaccia utente basata sul sistema mouse - finestre - icone. E queste invenzioni furono così sorprendenti che, all'epoca, vennero spesso ignorate, o giudicate delle semplici bizzarrie dalla stessa XEROX... Ma non così da altre società, che più tardi baseranno il loro business proprio su queste idee [ESR01].

Si può facilmente notare come tutti questi progressi nella tecnologia informatica siano strettamente legati alla crescita della comunità hacker: la tecnologia favoriva lo sviluppo della comunità, e la comunità stessa dava il suo enorme contributo allo sviluppo della tecnologia.

ARPAnet, infatti, permise ai diversi gruppi di hacker, sparsi principalmente nelle diverse università, di venire in contatto tra loro, e di usufruire delle risorse della rete. Così la comunità degli crebbe, aumentò la propria coesione ed il proprio folklore (the Jargon File, per esempio, nacque nel 1973[2]), e divenne una specie di tribù unita attraverso il network [ESR01]. I laboratori delle università attirarono un gran numero di menti, che iniziarono a lavorare ed a produrre innovazione. E proprio in questo periodo (nel 1971) iniziò a lavorare nel MIT AI Lab una persona che ben presto diventerà molto importante: Richard Stallman [RMS98].

3.4. La nascita di Unix

Sempre nel periodo intorno al 1969 si può registrare la nascita di due invenzioni destinate a cambiare il corso dell'informatica: nei laboratori di ricerca della Bell (Bell Labs), Ken Thompson inventò il sistema operativo Unix, e Dennis Ritchie inventò il linguaggio di programmazione[3] C.

Prima della nascita di Unix e del C, i diversi modelli di elaboratore presenti sul mercato erano (come oggi, d'altronde) completamente diversi ed incompatibili tra loro. E purtroppo gli stessi sistemi operativi (che controllano l'hardware degli elaboratori) erano strettamente legati alla macchina su cui funzionavano, e per questo erano essi stessi diversi ed incompatibili tra loro. Questo era un grave problema per gli utenti e per i programmatori, i quali, ogni volta che avevano a che fare con un nuovo tipo di computer, si trovavano di fronte ad una cosa completamente aliena --- ed erano costretti a reimparare tutto da capo, con un grande spreco di tempo e fatica. Nei periodi precedenti erano state intraprese diverse sperimentazioni e ricerche, che avevano portato a nuove idee nel campo della struttura e delle funzionalità dei sistemi operativi --- ma i problemi legati alla dipendenza dall'hardware e all'incompatibilità non erano mai stati affrontati.

Unix nacque con lo scopo di racchiudere in qualche modo le innovazioni apportate fino a quel momento, ma anche con lo scopo di creare un nuovo sistema operativo che fosse portabile: ovvero, che potesse funzionare con minimi cambiamenti, e senza differenze visibili per l'utente ed il programmatore, su un gran numero di piattaforme hardware. E questi traguardi furono raggiunti grazie alla flessibilità di Unix, e grazie al fatto che esso era stato scritto utilizzando il linguaggio C (che, a sua volta, era nato per essere facilmente portabile sulle più diverse piattaforme hardware). Già nel 1974, il sistema Unix funzionava su un gran numero di elaboratori assai diversi tra loro.

Figura 3. Ken Thompson e Dennis Ritchie, i padri di Unix e del C

Unix portava con sè lo UUCP (Unix to Unix Copy Protocol): si tratta di un sistema di trasferimento dei file molto semplice e leggero, usato ancora oggi, che, proprio grazie alla sua flessibilità, può essere impiegato per inviare e ricevere dati tramite semplici linee telefoniche, o in presenza di collegamenti limitati. Grazie ad Unix, un gran numero di elaboratori non ancora connessi ad ARPAnet potè avere il proprio network, ed il numero di hacker dotati di una connessione di rete aumentò enormemente. Attraverso UUCP e le linee telefoniche, si sviluppò un intero sistema di posta elettronica e di newsgroup (Usenet) parallelo ad ARPAnet [ESR01].

Durante tutti gli anni '70 il sistema Unix si diffuse sempre più velocemente. In particolare, gli hacker dell'università di Berkeley ebbero un ruolo fondamentale nello studio e nella ricerca, inizialmente collaborando con la Bell, e poi creando un proprio pacchetto software basato su Unix. Questo pacchetto venne commercializzato con il nome di Berkeley Software Distribution (BSD), ed ebbe un grande successo.

Si apriva quindi un nuovo orizzonte per la ricerca e lo sviluppo: la possibilità di produrre innovazione, senza essere legati ad una particolare piattaforma hardware, e senza la necessità di sopportare drastici cambiamenti con l'avanzamento della tecnologia. Proprio per questi motivi Unix fu scelto dall'ente che creò ARPAnet (che da ARPA aveva cambiato nome in DARPA, Defense Advanced Research Projects Agency) come il sistema operativo ideale per gestire i propri computer ed il proprio lavoro. Il DARPA finanziò il lavoro del team BSD, e grazie a tali investimenti la loro versione di Unix potè migliorare enormemente. In particolare, BSD fu il primo sistema operativo a supportare i protocolli di rete della famiglia TCP/IP, il cuore della moderna Internet [KUS99].

Note

[1]

Si tratta della parodia di un cartello di avviso, scritto in un curioso incrocio tra lingua inglese e tedesca:

[ACHTUNG!!! Das machine is nicht fur gefingerpoken und mittengrabben. Ist easy schnappen der springenwerk, blowenfusen und corkenpoppen mit spitzensparken. Ist nicht fur gewerken by das dummkopfen. Das rubbernecken sightseeren keepen hands in das pockets. Relaxen und vatch das blinkenlights!!!]

[2]

"The Jargon FIle" è una sorta di guida al linguaggio, alla cultura ed al folklore hacker, che illustra, con uno stile piuttosto antropologico, gli usi, gli stili e le caratteristiche del movimento. Questo documento è ancora oggi mantentuto ed aggiornato, e si può trovare su http://www.tuxedo.org/jargon.

[3]

Un linguaggio di programmazione è, come dice il nome stesso, un particolare di linguaggio destinato a descrivere il funzionamento di un programma, con un formalismo più o meno simile alla lingua umana. La parte di un programma che calcola il quadrato q di un numero n, per esempio, potrebbe essere scritta come:

        q = n * n
       

Questa riga, espressa in un ipotetico linguaggio di programmazione facilmente comprensibile dall'uomo, fa parte del codice sorgente del programma. Essa viene poi "tradotta" in un linguaggio comprensibile dal computer, mediante appositi programmi (detti compilatori). Il risultato di questa traduzione è qualcosa di questo tipo:

       ...101101010011010111001100101010101...
       

Questo codice incomprensibile non è altro che il programma finale, che può essere eseguito dall'elaboratore.