Nel 1977 Don Woods era uno studente della Stanford University quando sentì parlare per la prima volta di Adventure da un altro studente che vi si era imbattuto a più riprese, fra cui anche nei computer del sistema dello Stanford Medical Center. Come avesse fatto il gioco di Crowther ad arrivare dal suo datore di lavoro di allora (le BBN Technologies di Boston) fino alla California del nord è destinato a restare un mistero. Sappiamo però che Woods ne restò sufficientemente affascinato da procurarsene una copia e installarla sul minicomputer PDP-10 dello Stanford Artificial Intelligence Laboratory (SAIL), dove -da vero hacker quale era- passava la maggior parte del suo tempo.
Dopo averne esplorato le (limitate) profondità di quella versione, Woods maturò l'idea di riprenderne lo sviluppo da dove Crowther l'aveva lasciato e di finire il gioco. Purtroppo però aveva a disposizione solo l'eseguibile e non il codice sorgente in FORTRAN.
Quello che segue è una degli aneddoti più leggendari legati al mondo degli hacker, così divertente da meritarsi di essere ripetuto anche qui.
Il programma di Crowther (come potete verificare voi stessi, se lo desiderate) contenveva un solo indizio sulla sua origine: le istruzioni all'interno del gioco recitano nell'inimitabile prosa stringata di Crowther: "ERRORI, SUGGERIMENTI, LAMENTELE A CROWTHER." Evidentemente Crowther non si era mai neppure immaginato che il suo programma (tanto più nel stato incompleto in cui l'aveva lasciato) potesse uscire dal ristretto cerchio degli hacker della BBN, che ovviamente non potevano non sapere chi fosse e come contattare quel "CROWTHER". A complicare ulteriormente le cose c'era il fatto che Crowther, all'epoca in cui Woods scoprì Adventure, aveva già lasciato la BBN e stava lavorando per la Xerox in California (che sia stato proprio lui a portare Adventure sulla costa occidentale?).
La soluzione di Woods fu quella di inviare una mail a crowther@xxx, dove "xxx" stava per ogni singolo dominio di internet esistente a quell'epoca. Con quell'idea, oltre a essersi meritato sul campo il titolo di primo spammer della storia, Woods riuscì a rintracciare Crowther alla Xerox e ad assicurarsi il suo permesso di completare il gioco e (cosa ancora più importante!) il suo prezioso codice sorgente.
In quei giorni internet era un luogo ben più piccolo di oggi...
Quando scoprì Adventure, Woods doveva ancora compiere 23 anni, ma si era già assicurato un posto nella storia degli hacker co-creando il linguaggio di programmazione satirico chiamato INTERCAL, uno dei più bizzarri ed elaborati esempi di humor degli hacker.
In Hackers, Steven Levy dà molta importanza al presunto contrasto fra la cultura degli hacker della East Coast e della West Coast:
"La prima differenza risiede nel luogo: un vecchio centro congressi semicircolare, realizzato in cemento, vetro e legno di sequoia, adagiato sulle colline che guardano il campus della Stanford. Dentro l'edificio gli hacker lavoravano dietro ai sessantaquattro terminali sparpagliati per i vari uffici. Ben lontani dall'ambiente claustrofobico della Tech Square del MIT. Niente ascensori, niente assordante sibilio dell'aria condizionata. Lo stile rilassato non vi fece mai diffondere fino in fondo l'acredine (certo, talvolta, costruttiva) del MIT: le urla delle lezioni del Tech Model Railroad Club (TMRC), le guerre di religione fra studenti e hacker. Al posto dell'immaginario che pervadeva la Tech Square, fatto di battaglie e di fantascientifici duelli spaziali, quello della Stanford era costruito intorno alle delicate leggende di elfi, hobbit e stregoni di cui parlava J.R.R. Tolkien nella trilogia della Terra di Mezzo. Le stanze del laboratorio di intelligenza artificiale avevano il nome di luoghi della Terra di Mezzo e la stampante del SAIL era stata modificata per poter stampare tre diversi font elfici."
La mia personale sensazione è che Levy probabilmente enfatizzi troppo la divisione culturale fra i conservatori dai capelli a spazzola che, ammassati dentro al MIT, impazzivano per i libri di Heinlein e i gentili tizi appassionati di Tolkien. Infatti i due gruppi avevano anche molte preferenze in comune in fatto di hardware (sistemi DEC PDP), di sistemi operativi (TOPS-10), di linguaggi di programmazione (niente BASIC, please!), e -più in generale- di come "dovessero" essere usati i computer; questo li avvicinava fra loro molto più di quanto i due gruppi non assomigliassero invece ai populisti della People’s Computer Company.
Nonostante questo ritengo che possiamo trovare delle differenze nell'approccio che Crowther e Woods avevano con la programmazione; differenze che non posso essere ricondotte solo alla geografia, quanto piuttosto al periodo storico in cui ognuno di loro ha operato.
Prima di affrontare questo argomento, però, lasciatemi fare un passo indietro per introdurre un po' di background tecnico.
Adventure girava su un PDP-10 con sistema operativo TOPS-10. Come ho già spiegato in precedenza, per almeno 20 anni -dal 1960 al 1980- le macchine della DEC sono state indiscutibilmente le favorite degli hacker. Sia le macchine, che la compagnia che le faceva, erano profondamente innovative: abbastanza grandi da riuscire a restare al passo con i tempi, ma anche abbastanza piccole da essere flessibili. Ma (cosa ancora più importante) la DEC non solo comprendeva gli ideali degli hacker, ma li abbracciava anche, usando strutture di ricerca assolutamente all'avanguardia (come i laboratori del MIT e della Stanford) per mettere a punto e addirittura per sviluppare sia il software che l'hardware, arrivando talvolta ad assumere gli esponenti migliori e più competenti di quel mondo. Il divario con un colosso borioso e serioso come l'IBM difficilmente poteva essere più ampio. Nel frattempo il TOPS-10 divenne amato al pari dell'hardware su cui girava, essendo stato sviluppato e rifinito dalla DEC dagli anni '60, senza interruzioni e con l'assistenza attiva della community degli hacker. Finché non fu rimpiazzato da Unix e dal successore della stessa DEC (il sistema operativo TOPS-20), cosa che all'inizio del 1977 era già iniziata lentamente ad accadere, il TOPS-10 era per definizione il sistema operativo degli hacker.
Adventure fu scritto in FORTRAN (Formula Translating System), un linguaggio di programmazione che era già vecchio quando Crowther e Woods lo usarono. Esso fu infatti il primo significativo linguaggio di programmazione ad alto livello mai creato, essendo stato introdotto dall'IBM sui suoi sistemi mainframe alla fine degli anni '50. La versione usata da Crowther e Woods rispettava il così detto "standard FORTRAN IV", che risaliva al 1965. Nonostante l'avversione degli hacker per il BASIC, il FORTRAN IV non era poi tanto meglio, considerato che -se si voleva davvero ottenere qualche risultato- esso richiedeva ancora i numeri di linea e un copioso uso delle odiate "GOTO statement". Di certo era particolarmente inadatto a scrivere un'avventura testuale, non prevedendo praticamente nessuna capacità di immagazzinamento o manipolazione del testo. Fu proprio per questo motivo che Crowther decise di mettere tutto il testo del gioco in un file esterno: in quel modo era semplicemente più facile da gestire. Ironicamente il FORTRAN 77 (una significativa espansione del linguaggio, che introduceva le "string variables" e tantissimi altri miglioramenti) fu pubblicato lo stesso anno in cui Woods completò Adventure, ormai troppo tardi per essere utilizzato nel progetto.
Ma allora, perché usare il FORTRAN? Beh, oltre al FORTRAN e al linguaggio assembly (in cui sarebbe stato noiosissimo implementare un programma come Adventure), a quei tempi i normali linguaggi di programmazione per il TOPS-10 includevono solo il denigrato BASIC e l'ancora più disprezzato COBOL (un linguaggio rigidamente inflessibile, progettato per il "batch processing" non interattivo - per esempio per la fatturazione o per altre ripetitive mansioni di calcolo, del tutto prive di interesse agli occhi degli hacker). Con uno sfoggio di un copioso livore, o di un singolare umorismo, Edsger Dijkstra sul COBOL ha fatto un dichiarazione del tutto simile a quella che aveva fatto sul BASIC: "L'uso di COBOL storpia la mente e quindi il suo insegnamento dovrebbe essere considerato reato."
La scelta non poteva che cadere sul FORTRAN.
Crowther e Wood avranno anche lavorato con il medesimo linguaggio di programmazione, ma le differenze nel loro stile di programmazione sono immense. Il codice sorgente originale di Crowther è di per sé un "maze of twisty little passages", un enorme piatto di "spaghetti code" commentato solo in modo sporadico e breve. È certamente efficiente, ma altrettano certamente non è né leggibile, né mantenibile se non da Crowther.
La versione finale di Adventure scritta da Woods è, all'opposto, un modello di chiarezza: commentata frequentemente e con dovizia di particolari, nonché strutturata nel modo più pulito e logico che i limitati strumenti di FORTRAN IV gli consentivono. Considerate le limitazioni a cui doveva sottostare Woods, possiamo affermare che il suo codice sia una vera gioia da leggere. Anzi, la sua chiarezza potrebbe aiutarci a spiegare perché Adventure sia stato così rapidamente e così frequentemente converitto per altri linguaggi e altre piattaforme: il codice di Woods è fatto in modo tale che una conversione si rivela quasi un mero esercizio meccanico.
Non è ovviamente mia intenzione confrontare un programma completo con uno incompleto, perché significherebbe fare un torto a Crowther; del resto è improbabile che, mentre lo scriveva, il codice di Woods fosse pulito e leggibile come invece ci appare nella sua versione pubblicata. Tuttavia credo che ci siano comunque alcune considerazioni da fare in merito.
In questa differenza di stile scorgiamo almeno in parte una differenza di personalità; del resto Crowther aveva fama di essere un programmatore brillante ma solitario, e non credo che fosse il tipo di persona interessata a spiegare agli altri ciò che stava facendo o a coccolare coloro che avessero voluto seguire le sue orme.
Senza dimenticare poi che Crowther e Woods appartengono a due diverse generazioni di hacker. Crowther si è formato negli anni '60, quando le regole di un programazione "corretta" erano ancora in gran parte da scrivere e tutta l'enfasi del mestiere era rivolta a ottenere ciò che si desiderava, in qualunque modo il primitivo hardware del tempo potesse essere convinto a farlo. Woods invece si è formato negli anni '70, quando l'importanza della struttura, della leggibilità e della manutenibilità del codice erano ormai chiare e gli scienziati del computer stavano iniziando a gettare le basi di quelle regole di buona programmazione che -con qualche aggiunta- ancora oggi seguiamo.
A seguire qualche osservazione tratta giocando la versione completata di Adventure.
Se desiderate giocare alla versione completa di Adventure, sappiate che è possibile farlo in italiano grazie all'ottima traduzione di Giovanni Riccardi, basata sull’adattamento di Adventure per Inform realizzato da Graham Nelson (Advent 961209).
Gli screenshot del gioco che trovate in questa serie di articoli e i paragrafi citati provengono tutti da questa traduzione.
The Digital Antiquarian è un blog, scritto da Jimmy Maher, che si occupa di storia e di cultura del videogioco partendo dall'analisi di singoli videogiochi. OldGamesItalia è lieta di presentarvi la traduzione italiana, autorizzata dall'autore!
Se anche voi apprezzerete questo interessantissimo blog, non mancate di visitare la pagina ufficiale (in lingua inglese) e di sostenerlo tramite Patreon!
Articoli precedenti:
- Sulle tracce di The Oregon Trail
- In difesa del BASIC
- A Caccia del Wumpus
- L'Avventura di Crowther
- TOPS-10 in a Box
Il sito di OldGamesItalia è attualmente "in letargo". Nuovi contenuti saranno aggiunti con minore regolarità e con possibili lunghe pause tra un articolo e l'altro.
Il forum rimane attivo, ma meno legato al sito, e gli aggiornamenti riguarderanno principalmente le sezioni di IF Italia e della versione italiana del Digital Antiquarian e del CRPG Addict.
Grazie a chi ci è stato vicino nei vent'anni di attività "regolare" di OldGamesItalia, a chi ha collaborato o a chi ci ha soltanto consultati per scoprire il mondo del retrogaming. Speriamo di avere presto nuove energie per riprendere un discorso che non vogliamo davvero interrompere.
Grazie, OGI. Arrivederci!
Chi siamo | Contattaci | Policy | Manifesto