Zork sul PDP-10
The Digital Antiquarian (la traduzione ufficiale italiana)

Continua il ciclo di articoli dedicato alla nascita di Infocom e ai primi tre capitoli della celebre serie di Zork. Sì avete letto bene: nel corso del nostro viaggio analizzeremo i primi tre capitoli di Zork. Contrariamente a quanto annunciato nell'ultimo editoriale, non ci limiteremo ai primi due titoli della leggendaria serie Infocom, ma chiuderemo la trilogia originale, com'è giusto che sia. 
Pertanto considerate l'indice riportato di seguito, soltanto parziale. Sarà nostra premura completarlo non appena sarà possibile, e se proprio non potete resistere, cliccate in fondo all'articolo per fiondarvi nel blog originale del "The Digital Antiquarian" ... ma non vorrete rovinarvi la sorpresa, vero?
 
A proposito, nel caso vi steste ancora chiedendo perché Zork sia così attuale qui su OldGamesItalia, vi consiglio di visitare attentamente la sezione "traduzioni" del nostro forum... 
Ecco il solito indice degli articoli:
 
Zork sul PDP-10
La Nascita della Infocom
ZIL e la Z-Machine
Come Vendemmo Zork
Giochi a Parser
Esplorando Zork, Parte 1
Esplorando Zork, Parte 2
Esplorando Zork, Parte 3
Infocom: Come Cavarsela da Soli
Zork II, Parte 1
Zork II, Parte 2
 
Buona lettura esploratori e ... attenti ai grue!
 
Festuceto
 
Uno dei tratti distintivi degli hacker è il non considerare mai un programma davvero completamente e definitivamente finito; ci sono sempre aggiunte da fare, angoli da smussare. E di certo Adventure, per quanto impressionante, lasciava ampio spazio ai miglioramenti. Dobbiamo poi aggiungere che Adventure arrivò al MIT attraverso Don Woods dell'AI Lab della Stanford, forse l'unico corso di informatica della nazione che aveva la statura per potersi confrontare alla lontana con quello del MIT. Gli studenti del MIT erano fieramente orgogliosi della propria Università. Anche se la Stanford aveva prodotto per prima un gioco d'avventura, il Dynamic Modeling Group del MIT avrebbe potuto quantomeno farlo meglio. E certo non nuoceva alla causa il fatto che il Project MAC e il Laboratory for Computer Science (per non parlare dello stesso Dynamic Modeling Group) avessero donato loro degli ottimi strumenti con cui affrontare il problema.
 
Adventure era stata implementato in FORTRAN, un linguaggio non particolarmente adatto alla creazione di un'avventura testuale. E infatti il FORTRAN non poteva nemmeno gestire nativamente le stringhe di lunghezza variabile, lasciando a Crowther e Woods il compito di arrangiare qualche soluzione, come del resto dovettero fare anche con molti altri problemi. Come sappiamo, entrambi erano programmatori molto talentuosi e ci riuscirono al meglio. E così gli hacker del Dynamic Modeling Group (la cui opinione del FORTRAN era solo un gradino superiore a quella che avevano del BASIC) non vedevano l'ora di progettare il proprio gioco d'avventura con il proprio linguaggio, l'MDL. Non solo l'MDL (essendo un linguaggio progettato, almeno in parte, per la ricerca nel campo dell'Intelligenza Artificiale) poteva vantare capacità di gestione di stringhe relativamente robuste, ma offriva anche la possibilità di definire dei nuovi “data type” complessi, adatti per compiti specifici, e la possibilità di inserire direttamente in tali strutture dei pezzi di codice. Lasciatemi provare a spiegarvi perché tutto questo era così importante.
 
Inizieremo con la stanza di apertura di Zork, il gioco che alla fine fu prodotto dal Dynamic Modeling Group in risposta ad Adventure. La descrizione di tale stanza al giocatore [nella nostra traduzione italiana di Zork I; ndAncient] appare così:
 
 
West of House
This is an open field west of a white house, with a boarded front door.
There is a small mailbox here.
A rubber mat saying 'Welcome to Zork!' lies by the door.
 
Questo è il codice sorgente originale in MDL che descrive la stanza:
 
<ROOM "WHOUS"
"This is an open field west of a white house, with a boarded front door."
"West of House"
<EXIT "NORTH" "NHOUS" "SOUTH" "SHOUS" "WEST" "FORE1"
"EAST" #NEXIT "The door is locked, and there is evidently no key.">
(<GET-OBJ "FDOOR"> <GET-OBJ "MAILB"> <GET-OBJ "MAT">)
<>
<+ ,RLANDBIT ,RLIGHTBIT ,RNWALLBIT ,RSACREDBIT>
(RGLOBAL ,HOUSEBIT)><
 
Praticamente tutto ciò che il programma deve sapere di questa stanza è incapsulato qui dentro in modo ordinato. Analizziamolo, linea per linea. Il tag “ROOM” [stanza] all'inizio definisce questa struttura come una stanza, chiamata brevemente “WHOUS” [abbreviazione di "West of House", cioè "A Ovest della Casa", ndAncient]. La linea di testo seguente è la descrizione della stanza che il giocatore vede quando vi entra la prima volta o quando digita “GUARDA”. “West of House” è invece il nome completo della stanza, quello che appare come titolo della descrizione della stanza e nella linea di stato in cima allo schermo, ogni volta che il giocatore si trova in questa stanza. Poi abbiamo un elenco di uscite dalla stanza, andare a nord porta il giocatore a “North of House,” a sud lo porta a “South of House”, a ovest in una di diverse stanze che compongono la “Foresta”. Cercare di andare a est produrrà invece uno speciale messaggio di fallimento, che riferirà al giocatore di non essere in possesso di una chiave per aprire la porta, anziché il generico: “Non puoi andare in quella direzione”. Subito dopo abbiamo gli oggetti che si trovano nella stanza all'inizio del gioco: la porta frontale, la cassetta delle lettere, e il tappetino di benvenuto. Quindi una serie di "flag" definisce altre proprietà della stanza: che è asciutta anziché invasa dall'acqua, che è illuminata anche se il giocatore non ha con sé una lanterna accesa; che (essendo all'aperto) non ha pareti; che è “sacred” [“sacra”] (il che significa che il ladro -un personaggio che vaga in giro, infastidendo il giocatore in modo non dissimile dai nani e dal pirata di Adventure- non può venire qui). E, alla fine, l'ultima linea associa questa stanza alla "white house" o, per essere più precisi, la associa a una parte della “regione casa” della geografia del gioco.
 
Ogni oggetto e ogni personaggio del gioco è definito da un simile blocco, che spiega quasi tutto ciò che il gioco deve sapere al riguardo. Va aggiunto anche che le abilità e le capacità speciali di oggetti e personaggi sono descritti come parti di essi, utilizzando dei collegamenti a delle sezioni speciali del codice, create appositamente. Per questo una volta che l'impalcatura del codice alla base di tutto questo fu creata (cosa che, ovviamente, non era affatto banale), aggiungere nuovo contenuto a Zork era prevalentemente una questione di aggiungere più stanze, più oggetti, e più personaggi, senza bisogno ogni volta di rituffarsi nell'"engine" che muoveva il tutto; solo le capacità speciali degli oggetti e dei personaggi dovevano essere programmate da zero e collegate nei punti giusti. Componendo il mondo da una raccolta di “oggetti” integrati, gli hacker del Dynamic Modeling Group stavano inconsapevolmente dirigendosi verso un nuovo paradigma nella programmazione, che sarebbe giunto alla ribalta dell'informatica solo alcuni anni dopo: la programmazione orientata agli oggetti, in cui i programmi non sono rigorosamente divisi nel codice che li esegue e nei dati che esso manipola, ma sono piuttosto costruiti dall'interazione di oggetti semi-autonomi che contengono il proprio codice e i propri dati. Un tempo considerata praticamente la soluzione a ogni problema (forse persino alla fame nel mondo), oggigiorno in certe aree, ci sono delle resistenze (probabilmente giustificate) alla imposizione, applicata a prescindere, della teoria della programmazione orientata agli oggetti operata da certi linguaggi, come il Java. Sia come sia, la programmazione orientata agli oggetti resta praticamente la soluzione ideale nella creazione delle avventure testuali. Per mostrarvi cosa intendo, guardiamo all'alternativa, illustrata da Adventure (scritto in FORTRAN, un linguaggio altamente NON orientato agli oggetti).
 
Ad ogni stanza di Adventure è assegnato un numero da 1 (la location iniziale, naturalmente all'esterno di un piccolo edificio di mattoni) fino a 140 (stavolta, meno naturalmente, un vicolo cieco in un labirinto). Per trovare la descrizione completa della stanza (quella che viene mostrata al giocatore quanto vi entra per la prima volta o quando la GUARDA) il programma scava nella prima tabella di un file esterno di dati, confrontando il numero della stanza alle rispettive voci.
 
1
1 YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING.
1 AROUND YOU IS A FOREST.  A SMALL STREAM FLOWS OUT OF THE BUILDING AND
1 DOWN A GULLY.
 
Un'altra tabella mostra invece la descrizione breve che viene visualizzata quando si entra in una stanza già visitata:
 
1 YOU'RE AT END OF ROAD AGAIN.
 
E ora viene il bello. Un'altra tabella ancora ci dice cosa ci aspetta in ogni direzione cardinale.
 
1 2 2 44 29
1 3 3 12 19 43
1 4 5 13 14 46 30
1 5 6 45 43
1 8 63
 
La prima linea di cui sopra ci dice che quando siamo in stanza 1, possiamo andare in stanza 2 digitando una delle tre voci di un'altra tabella ancora; in questo caso: “ROAD o HILL” (voce 2); “WEST” or “W” (voce 44); or “UPWAR” (infatti le parole vengono confrontate sulla base dei primi 5 caratteri soltanto [in questo caso la parola completa sarebbe UPWARD, formata da 6 caratteri, che significa SU; ndAncient], “UP,” “ABOVE,” or “ASCEN” (voce 29). In modo del tutto analogo, le definizioni degli oggetti sono sparpagliate su più tabelle all'interno del data file. Quindi, anche se Adventure tenta almeno in parte di astrarre il suo "engine" dai dati che compongono il suo mondo (collocando questi ultimi in un "data file" esterno), modificare il mondo stesso è un procedimento rognoso e foriero di errori, che consiste nell'editare più tabelle criptiche. I primi "engine" per avventure testuali sui microcomputer, come quelle di Scott Adams, funzionano tutti in questo modo. E anche se era comunque possibile sviluppare dei tool che alleviassero il fardello di modificare a mano i "data file", il sistema di Zork basato sull'MDL è flessibile e programmabile in un modo ben superiore a quello di questi sistemi: non essendo possibile inserire del codice all'interno degli oggetti del mondo di gioco, creare oggetti non standard in Adventure o in un gioco di Scott Adams richiedeva generalmente di andare a modificare il codice dell'"engine"; non proprio il massimo.
 
Per questo l'MDL era semplicemente migliore per scrivere un'avventura testuale che fosse capace di rappresentare limpidamente un mondo vasto, in un modo che fosse anche leggibile e facilmente mantenibile. Era quasi come se l'MDL fosse stato progettato a questo scopo. Ed effettivamente, se avete usato un linguaggio di programmazione di IF più moderno (come Inform 6), sareste rimasti sorpresi da quanto poco sia cambiato l'approccio nella definizione del mondo rispetto ai giorni dell'MDL di Zork. (Inform 7, uno degli ultimi, e migliori, tool per lo sviluppo di IF si è allontanato dal modello della programmazione orientata agli oggetti in favore di un approccio basato su regole più leggibili -se non addirittura più “letterarie”-. Basti dire che i meriti e gli svantaggi dell'approccio di Inform 7 sono un argomento troppo complesso per essere affrontato in questa sede. Forse ne riparleremo fra 20 anni, quando finalmente il Digital Antiquarian si occuperà dell'anno 2006...)
 
E gli hacker del Dynamic Modeling Group avevano ancora un altro asso nella loro manica.
 
Il MIT aveva all'attivo importanti ricerche sulla comprensione del linguaggio naturale nel computer, che risalivano almeno fino a Joseph Weizenbaum e al suo sistema ELIZA del 1966. E se quel programma alla fin fine era poco più di un elaborato trucco da salotto, esso però ispirò altri e più rigorosi tentativi di far parlare a un programma un buon inglese. È estremamente noto quello che fra il 1968 e il 1970 fu sviluppato da Terry Winograd sotto il nome di SHRDLU, che simulava un modello di mondo composto di blocchi. L'utente poteva chiedere al programma di manipolare questo mondo, spostando i blocchi di posto in posto, impilandoli, e così via, il tutto limitandosi a digitare le sue richieste con delle semplici frasi imperative in lingua inglese. Era perfino possibile porre delle semplici domande al computer, per sapere ad esempio quale blocco fosse collocato in una determinata posizione. Piuttosto sopravvalutato all'epoca (come gran parte della ricerca sull'intelligenza artificiale), quasi fosse un passo decisivo verso HAL, SHRDLU riuscì comunque a dimostrare che, almeno all'interno di un dominio molto ristretto, è possibile per un programma parlare e “comprendere” realmente un significativo sottoinsieme della lingua inglese. Partendo dalla tradizione di SHRDLU, gli hacker del Dynamic Modeling Group crearono un parser per avventure testuali che era oggettivamente il primo mai creato a essere degno del termine. E se Adventure se la cavava con un semplice riconoscimento delle parole (stratagemma reso palese dal fatto che “LAMPADA PRENDI” funziona esattamente come “PRENDI LAMPADA”), Zork comprendeva davvero non solo il verbo e il complemento oggetto, ma anche le preposizioni, il complemento di termine, le congiunzioni, la punteggiatura, e perfino gli articoli. A dare un contributo essenziale al raggiungimento di tale obbiettivo fu nuovamente l'MDL che (essendo un linguaggio ideato pensando alla ricerca sull'IA) aveva delle straordinarie capacità di manipolazione delle stringhe. Il parser che riuscirono a ideare si rivelò una creazione mirabile, che si sarebbe contraddistinta per molti anni a venire (un'eternità, allora come ora, nel mondo dell'informatica). Ma ora sto andando troppo avanti.
 
La strada che condurrà a Zork iniziò nel Maggio del 1977, quando Dave Lebling creò un semplicissimo parser e un semplicissimo "engine" piuttosto simile a quello di Adventure, dal quale Marc Blank e Tim Anderson crearono il loro primo gioco di quattro stanze, come prototipo. A quel punto Lebling si prese una vacanza di due settimane, mentre Blank, Anderson, e Bruce Daniels "hackeravano" come pazzi, creando la struttura base di Zork così come la conosciamo ancora oggi. Il nome stesso era una parola priva di senso presa dal gergo parlato al MIT; una parola che si usava nelle situazioni di tensione al posto di un altra più scurrile: “Zorka quel maledetto codice!”, quando una linea di codice non ne voleva sapere di funzionare, e cose del genere. Ogni programmatore ha qualche parola tipo questa che usa per programmi, variabili, funzioni, e così via, quando sta semplicemente facendo esperimenti e non ha tempo di inventarsi un nome migliore (negli ultimi 25 anni il mio personale “go-to placeholder” è stata la parola “fuzzy”, per ragioni troppo imbarazzanti e stravaganti per spiegarle qui). Nel caso di Zork, però, un nome vero e proprio tardava a venir fuori. E così il gioco restò Zork per i primi sei mesi della sua esistenza.
 
Quando Lebling tornò dalla vacanza per riprendere a lavorare al gioco, c'erano già delle solide basi. Tutto il design era modulare; questo significava (come dimostrato sopra) che era facile aggiungere altre stanze, altri oggetti, altri enigmi, ma anche che ogni parte della sottostante tecnologia poteva essere facilmente rimossa, migliorata, e inserita di nuovo. Il parser in particolare migliorò gradualmente da uno a due parole (“intelligente quasi quanto quello di Adventure”), fino a diventare la creazione allo stato dell'arte che era alla fine; il tutto prevalentemente grazie all'impegno di Blank, che ne divenne ossessionato fino a produrne “40 o 50” iterazioni.
 
Negli anni successivi la Infocom avrebbe sviluppato una storia e una mitologia, complesse ma anche comiche, intorno a Zork e al suo “Grande Impero Sotterraneo”, ma in questi primissimi giorni di sviluppo gli autori erano interessati al mondo di gioco solo come luogo in cui ambientare delle scene accattivanti ma anche ridicolmente eterogenee, e -ovviamente- degli enigmi da risolvere, nel solco della tradizione inaugurata da Don Woods con Adventure. E infatti il mondo di Zork rende omaggio ad Adventure quasi al punto da sembrare inizialmente un suo remake. Come Adventure, si inizia all'aria aperta, accanto ad una piccola casa; come in Adventure c'è una piccola area esterna da esplorare, ma il succo del gioco si svolge sottoterra; come Adventure lo scopo è raccogliere tesori e riportarli dentro la casa, che serve quindi da base delle nostre operazioni; ecc. ecc. Solo andando molto avanti nel gioco, Zork diverge davvero da questo schema e assume una sua distinta personalità, con location fantasiose ed enigmi molto più intricati, resi possibili dallo stupefacente parser. Ovviamente tutte queste parti furono ideate in seguito, quando il team di sviluppo aveva più esperienza e quando il parser era ormai molto migliore di quello iniziale. Personalmente darò uno sguardo approfondito a Zork nella sua versione per microcomputer, piuttosto che nella sua incarnazione per PDP-10, ma se siete interessati a saperne di più sull'implementazione originale senza capo né coda, vi invito a dare un'occhiata all'approfondito play-through di Jason Dyer.
 
Come Adventure, anche Zork girava su un DEC PDP-10. A differenza di Adventure però, girava sotto il sistema operativo che ospitava anche l’ambiente MDL, l’Incompatible Timesharing System (così chiamato, con un po’ di sano humour da hacker, in sarcastica risposta ad un precedente Compatible Timesharing System; anche qui però -scusate se insisto- vi rimando a Hackers di Levy per un eccezionale racconto delle sue origini). L’Incompatible Timesharing System era sostanzialmente unico del MIT, l’istituzione che lo aveva sviluppato. E aveva un elemento di estrema originalità: in uno stravagante (ma qualcuno lo chiamerebbe folle) tributo alla tradizione degli hacker di totale apertura e trasparenza, non aveva password; anzi, non aveva nessun tipo di sicurezza. Proprio chiunque poteva loggarsi e fare ciò che voleva. Questo creò una specie di community di coloro che gli hacker del MIT chiamavano “gente a caso dalla rete”: persone che non avevano niente a che fare con il MIT, ma che godevano, da qualche parte, di un accesso a un computer connesso ad ARPANET e che si fermavano per rovistare nel sistema, solo per vedere cosa stessero facendo quei folli hacker del MIT. La macchina del Dynamic Modeling Group aveva raccolto intorno a sé una community considerevole di gente a caso, grazie a un precedente gioco di quiz. Non ci volle molto prima che scoprissero Zork (anche se non era mai stato annunciato ufficialmente) e che si imbarcassero nell’avventura. Ben presto questo gioco in sviluppo si guadagnò una certa reputazione su ARPANET. Proprio a vantaggio di questa community di giocatori, gli sviluppatori iniziarono a collocare una copia dell’U.S. News and Dungeon Report in una delle prime stanze, che elencava tutti gli ultimi cambiamenti e le ultime aggiunte a questo mondo virtuale che la gente stava esplorando. La gente a caso dalla rete, insieme ad altri utenti più “legittimati” di base al MIT (fra cui anche John McCarthy, il padre dell’intelligenza artificiale), servirono da team allargato di beta-test; gli implementatori potevano vedere quello che queste persone provavano a fare, per non dire ciò di cui si lamentavano, e modificavano il gioco di conseguenza. In particolare, molti dei miglioramenti al parser furono senza dubbio incentivati da questo processo; chiunque abbia mai sottoposto una propria avventura testuale a un beta-test, sa bene che non si può semplicemente prevedere a priori gli infiniti modi in cui le persone proveranno a esprimere certe cose.  
 
La crescente popolarità di Zork sollevò delle inevitabili preoccupazioni sull’eccessivo carico generato da questi giocatori sul sistema PDP-10 del Dynamic Modeling Group, che a conti fatti era finanziato dal Dipartimento della Difesa e che quindi -teoricamente- sarebbe dovuto servire per vincere la Guerra Fredda. Al tempo stesso c’erano altri che chiedevano una copia del gioco, per poterla installare sulle proprie macchine. Anche se sviluppato e utilizzato principalmente sotto l’Incompatible Timesharing System, esisteva però una versione dell’ambiente MDL che girava su un altro sistema operativo per PDP-10, il TOPS-20, pubblicato dalla DEC per la prima volta nel 1976 e pubblicizzato come una versione più avanzata e user-friendly del TOPS-10. A differenza dell’Incompatible Timesharing System, il TOPS-20 era assai diffuso al di fuori del MIT. Gli hacker del Dynamic Modeling Group modificarono quindi Zork quanto bastava per farlo girare sul TOPS-20 e iniziarono a distribuirlo a tutti gli amministratori che gliene chiedevano una copia. Alla fine dell’anno tutte le macchine della nazione ospitavano Zork ed era stata perfino predisposta una "mailing list" per informare i vari amministratori delle espansioni e dei miglioramenti che venivano apportati.
 
Gli hacker del Dynamic Modeling Group erano generosi, ma non quanto lo era stato Don Woods con Adventure. Distribuirono Zork solo come file criptati, che erano eseguibili in un ambiente MDL ma che non erano leggibili (né modificabili) a livello di codice sorgente. Arrivarono perfino a modificare il proprio sistema di sviluppo Incompatible Timesharing System, celebre per la sua mancanza di sicurezza, aggiungendo una protezione esclusivamente alla cartella che conteneva il codice sorgente di Zork. Tuttavia gli hacker non si smentiscono mai e ben presto uno della DEC aveva già penetrato il velo. Dalla “History of Zork” della Infocom:
 
[La sicurezza] fu infine battuta da un hacker del sistema della Digital: usando un’arcaica (non che ne sia mai esistita una diversa) documentazione dell’Incompatible Timesharing System, riuscì a capire come modificare il sistema operativo. Sapendo il fatto suo, riuscì anche a capire come funzionava la nostra modifica per proteggere la cartella del codice sorgente. A quel punto era solo questione di decriptare i sorgenti, il che ben presto si ridusse a intuire la chiave che avevamo usato. Ted non ebbe difficoltà a procurarsi il tempo che gli serviva sulla macchina: aveva appena trovato una macchina TOPS-20 che era sottoposta agli ultimi test e vi avviò un programma che tentava ogni chiave finché una non gli restituì qualcosa che aveva le sembianze di un testo. Dopo meno di un giorno di lavoro, aveva una copia leggibile del sorgente. Dovemmo ammettere che, chiunque si fosse preso la briga di fare tutto ciò, di certo se lo meritava... Tutto questo produsse altre conseguenze in seguito.
 
Riguardo a queste “altre conseguenze”:
 
Ad un certo punto, alla fine del 1977, gli hacker del Dynamic Modeling Group decisero che la loro creazione aveva davvero, davvero bisogno di un nome vero e proprio.  Lebling suggerì Dungeon, che non emozionò nessuno (Lebling incluso), ma a nessuno veniva in mente un’alternativa migliore. E così si optò per Dungeon. Ciò avvenne poco prima della breccia nella sicurezza appena descritta; per questo il gioco recuperato da quell’hacker della DEC non si chiamava Zork, bensì Dungeon. Poco dopo, al MIT giunsero voci di possibili azioni legali da parte (provate a indovinare) della TSR, il publisher di Dungeons and Dragons e di un gioco da tavolo di esplorazione di dungeon chiamato semplicemente Dungeon! La TSR era sempre particolarmente zelante nel querelare e gli avvocati del MIT, consultati dagli hacker del Dynamic Modeling Group, erano unanimemente concordi nel ritenere che la TSR non avesse nessun appiglio legale a cui aggrapparsi. Tuttavia, piuttosto che venir risucchiati in una controversia su un nome che oltretutto non piaceva a nessuno, decisero di ritornare al ben più memorabile Zork. E così, all’inizio del 1978, Dungeon tornò di nuovo a essere Zork, per poi mantenere quel nome per sempre.
 
Quasi per sempre. Vi ricordate quel codice sorgente che “Ted” aveva sottratto al MIT? Ebbene, arrivò nelle mani di un altro hacker del DEC, un certo Robert Supnik, che convertì il tutto per FORTRAN, più diffuso e portabile (seppur intrinsecamente e infinitamente meno adatto alle avventure testuali); fu uno sforzo erculeo che stupì perfino gli hacker del Dynamic Modeling Group. Poiché il gioco contenuto nel codice sorgente in MDL a cui aveva accesso si chiamava Dungeon, questa nuova versione rimase Dungeon. Inizialmente Supnik eseguì il porting con l'intenzione di portare Dungeon a girare su un DEC PDP-11 (che, a discapito di quanto sembra indicare il nome, non era un successore del PDP-10, ma piuttosto una macchina fisicamente più piccola, meno potente, e meno costosa). Con il codice sorgente in FORTRAN di Supnik libero di essere distribuito, tuttavia, il salto dal PDP-11 ad altre architetture fu assai breve. Perciò, in questi primi anni, il Dungeon di Supnik con ogni probabilità era più ampiamente distribuito, e quindi era anche più giocato, dello Zork del Dynamic Modeling Group. E quando arrivarono dei PC in grado di supportarlo, Dungeon sbarcò inevitabilmente anche su questi. E così alla fine degli anni ‘80 la situazione era incomprensibile per chi non conosceva tutta questa storia: c’era questo gioco gratuito, chiamato Dungeon, che era stranamente simile ai giochi commerciali ufficiali di Zork, che a loro volta erano molto simili a quest’altro gioco, Adventure, che all’epoca era disponibile in dozzine di versioni gratuite e commerciali. Ad oggi il Dungeon di Supnik è disponibile insieme al codice sorgente (finalmente libero) della versione per PDP-10 di Zork.
 
Tornando al MIT, lo sviluppo dello Zork vero e proprio continuò per tutto il 1978, seppur a un ritmo decrescente. Se si escludono delle correzioni minori di bug, che sarebbero proseguite per un paio di anni ancora, gli ultimi pezzi di Zork furono aggiunti nel Febbraio del 1979. A quel punto il gioco aveva assunto proporzioni davvero enormi: 191 stanze, 211 oggetti, un vocabolario di 908 parole con 71 verbi diversi (senza considerare i loro sinonimi). Gli implementatori avevano praticamente finito le idee per nuovi enigmi ed erano comprensibilmente esausti per il grande sforzo, e (qualora queste giustificazioni non fossero sufficienti) avevano completamente riempito l'unico MB circa di memoria che un programma MDL poteva utilizzare. E così accantonarono Zork e si spostarono su altri progetti.
 
La storia sarebbe potuta tranquillamente finire lì, con Zork che passa alla storia come un altro esempio, eccezionalmente significativo, di avventura testuale fiorita sulle macchine istituzionali negli anni successivi alla pubblicazione di Adventure; insomma, Zork come fosse un altro Mystery Mansion, Stuga (AGGIORNAMENTO: non proprio; leggete il commento di Jason Dyer [“Se vogliamo essere precisi, Stuga non può essere annoverato nel gruppo degli altri due titoli; fu distribuito commercialmente, e vendette piuttosto bene, e può essere definito lo Zork della Svezia”; ndAncient]), o HAUNT. Però non andò così, grazie ad Al Vezza, il direttore (dall’anima tutt’altro che hacker) del Dynamic Modeling Group, che qualche mese più tardi decise che il momento era giusto per entrare coi suoi collaboratori nella nuova, promettente frontiera dei microcomputer, avviando una software house. Non poteva però certo immaginare dove avrebbe portato questa sua decisione.

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.
Traduzione a cura di: The Ancient One
Editing a cura di: Festuceto


Consulta l'indice per leggere gli articoli precedenti

Visita il sito ufficiale di The Digital Antiquarian
Discutiamone insieme sul forum di OldGamesItalia!

 

Eliza - Parte 3
The Digital Antiquarian (traduzione ufficiale italiana)

L'eredità più evidente di Eliza sono le schiere di chatterbot analoghi che le hanno fatto seguito e che continuano ad apparire ancora oggi. Ma cosa ha significato Eliza nella storia dell'interactive fiction? O, per dirla diversamente, perché ho sentito il bisogno di andare a ripescarla?

Una prima risposta è totalmente evidente. Quando si gioca a Eliza si entra in un dialogo testuale con un programma. Vi ricorda qualcosa? Confrontando superficialmente una sessione a Eliza con una sessione ad Adventure, si potrebbe quasi dire che entrambi i programmi sono variazioni di un'identica premessa.
Non è proprio così, però: mentre Eliza è "solo" un engine di generazione di testi (senza nessuna comprensione vera della lingua inglese), Adventure e i suoi antecedenti consentono al giocatore di manipolare un mondo virtuale attraverso comandi testuali e quindi non possono cavarsela semplicemente fingendo di comprendere gli input del giocatore (come invece fa Eliza). Tuttavia è quasi certo che Will Crowther conoscesse Eliza quando ha iniziato a lavorare ad Adventure e quindi non è escluso che sia stato influenzato dal modo con cui si interagisce con Eliza. Prima però che mi si accusi di spingere troppo in là l'influenza di Eliza, è bene precisare che è altresì vero che quasi tutte le interazioni uomo/computer dell'epoca avvenivano sotto forma di dialogo testuale; del resto le interfacce a linea di comando erano la regola in quei giorni. A ben guardare, quindi, l'unico vero elemento in comune fra Eliza e Adventure è il linguaggio pseudo-naturale di questa interazione. Da questo punto di vista Eliza rappresenta un importante precursore della vera e propria interactive fiction.

Ma fermarsi qui (come temo di aver fatto io stesso, alcuni anni fa, quando ho scritto la mia piccola storia dell'IF) significherebbe non vedere ciò che rende Eliza un oggetto di analisi così affascinante. Il gran numero di studiosi che sono stati attratti da Eliza, nonostante avessero scarsa consapevolezza (o scarso interesse) del ruolo che essa ricopre nella storia dell'IF, ci indica che deve esserci altro. Possiamo forse intuire cosa sia, se osserviamo come è stata accolta inizialmente Eliza dal pubblico e come l'ha accolta lo stesso Joseph Weizenbaum.

Probabilmente la prima persona a interagire a fondo con Eliza è stata la segretaria di Weizenbaum: "La mia segretaria, che mi aveva osservato lavorare per molti mesi al programma e che quindi sicuramente sapeva che era solo un programma per il computer, iniziò a conversare con Eliza. Dopo solo pochi scambi di battute, mi chiese di uscire dalla stanza."
La sua reazione non era inusuale; Eliza fece grande scalpore al MIT e nelle altre università in cui si diffuse, facendo di Weizenbaum un'inattesa celebrità. La maggior parte delle persone volevano semplicemente parlare con Eliza, per sperimentare personalmente quello che all'epoca era un raro esempio di divertimento alla portata di tutti, in quel mondo dell'informatica della metà degli anni '60 che tendenzialmente era tutto "Affari" (IBM) o "Bizzarro Esoterismo" (gli hacker della DEC).
Ci fu chi invece trattò il programma con una serietà che oggi appare incomprensibile. Si arrivò perfino a suggerire che sarebbe potuto essere utilizzato nella psicoterapia vera e propria. Carl Sagan, che successivamente diverrà famoso per il programma televisivo Cosmo, era un grande sostenitore di questa raggelante idea, che un gruppo di psicologi riuscì perfino a far pubblicare in un vero e proprio articolo scientifico sul The Journal of Nervous and Mental Diseases:

"È necessario altro lavoro ancora, prima che il programma sia pronto per l'uso clinico. Tuttavia se questo metodo si rivelasse efficacie, diventerebbe uno strumento terapeutico che potrebbe essere diffuso in tutti quegli ospedali psichiatrici che soffrono di una carenza di terapisti. Grazie alle capacità di time-sharing dei computer attuali, e di quelli futuri, numerose centinaia di pazienti all'ora potrebbero essere gestiti da un singolo computer progettato per questo scopo. Il terapista umano -coinvolto nella progettazione e nella gestione del sistema- non verrebbe rimpiazzato, ma anzi acquisterebbe moltissima efficienza, perché i suoi sforzi non dovrebbero più essere limitati alla terapia diretta paziente-terapeuta, come è adesso."

La reazione di Weizenbaum a tutto questo è diventata celebre quasi quanto Eliza.
Quando vide le persone impegnarsi in lunghe conversazioni a cuore aperto con Eliza, lui... si spaventò terribilmente! Il fenomeno che Weizenbaum stava osservando fu successivamente ribattezzato da Sherry Turkle come "effetto Eliza", che fu definito come la tendenza a "proiettare i nostri sentimenti su oggetti fisici e a trattare le cose come se fossero persone." Nella scienza informatica e negli ambienti dei nuovi media, l'effetto Eliza è diventato sinonimo della tendenza di un utente a presumere (basandosi sulle sue caratteristiche apparenti) che un programma sia molto più sofisticato e intelligente di quanto non sia in realtà. Weizenbaum giunse alla conclusione che questo fenomeno non solo era inquietante, ma anche pericoloso per il nostro tessuto sociale; si trattava di un fenomeno che minaccia i legami che ci tengono insieme e, potenzialmente, l'intera umanità. Il punto di vista di Weizenbaum, in netto contrasto con quello di persone come Marvin Minsky e John McCarthy dell'Artificial Intelligence Laboratory del MIT, era che l'intelligenza umana (con le sue qualità affettive e intuitive) non sarebbe mai potuta essere duplicata da una macchina - e che quindi chi ci avesse provato l'avrebbe fatto a suo rischio e pericolo.
A distanza di dieci anni dalla creazione di Eliza, Weizenbaum espresse queste idee nella sua opera magna, Computer Power and Human Reason, un'aspra critica contro l'utopismo digitale che in quegli anni dominava gli ambienti dell'informatica. 

In quel testo Weizenbaum ha descritto i suoi studenti al MIT, che ovviamente era un'istituzione incentrata sulla scienza e la tecnologia, affermando che essi "hanno ormai rifiutato ogni modo di interpretare il mondo che non sia quello scientifico, e sono alla ricerca esclusivamente di un indottrinamento sempre più profondo e più dogmatico in tale fede (anche se questa parola non fa più parte dei loro vocabolari)."

Di certo non si deve essere fatto tanti amici fra gli hacker quando li ha descritti con queste parole:

"Vedo dei giovani brillanti dall'aspetto trasandato, spesso con luminosi occhi incavati, seduti ai computer con le braccia tese in attesa di far fuoco con le loro dita, già pronte a colpire quei tasti su cui la loro attenzione è fissa, in modo non dissimile da quella dello scommettitore al tavolo dei dadi. Quando non sono paralizzati in questa posa, siedono spesso intorno a tavoli coperti di stampati, che leggono con somma attenzione, come fossero studenti indemoniati di un qualche testo cabalistico. Lavorano fino allo svenimento: venti, trenta ore consecutive. Il loro cibo, quando si curano di mangiare, gli viene portato: caffè, cola, sandwich. Se possibile dormono su delle brandine accanto agli stampati. I loro abiti sgualciti, i loro volti non lavati e non rasati, e i loro capelli arruffati sono lì a testimoniare che hanno perso il senso del loro corpo e del mondo in cui si muovono."

Anche se Weizenbaum ha affermato di aver basato almeno in parte questa descrizione sulla sua personale esperienza di persona troppo ossessionata dal lavoro, possiamo dedurre che la sua antipatia per gli hackers "hardcore" del MIT esisteva già prima che scrivesse Eliza. Vale poi la pena di notare che Weizenbaum scelse di scrivere Eliza non sull'amato DEC degli hacker, ma piuttosto sul grande mainframe IBM 7094, collocato in un'altra parte del campus del MIT; secondo Steven Levy, Weizenbaum aveva "interagito solo sporadicamente" con il contingente dei hacker "hardcore" del MIT.

Tuttavia, per quanto mi riguarda, condivido in buona parte il punto di vista di Weizenbaum. Avendo osservato con i suoi occhi la sfilata di giovani studenti alle sue lezioni, studenti che potevano recitare a memoria ogni "assembler opcode" del PDP, ma che non avevano alcun rispetto o comprensione per l'estetica, la storia, o la semplice sincera fratellanza di due buoni amici davanti a una bottiglia di vino, Weizenbaum non fa altro che chiedere a gran voce un maggior equilibrio, a favore di un mondo dove coloro che hanno la conoscenza per creare e adoperare la tecnologia, ne abbiano anche l'umanità e la saggezza. È un qualcosa che ci farebbe molto comodo anche oggi, in questo mondo di "amici" su Facebook e di "conversazioni" su Twitter. Mi sento come Weizenbaum ogni volta che capito su Slashdot e incontro le sue migliaia di SLN ("Soulless Little Nerds" - Piccoli Nerd Senza Anima), i cui interessi culturali al di fuori dei videogiochi non vanno oltre Tolkien e i supereroi, e che pensano che la persecuzione da parte di Sony di un hacker della Playstation sia la violazione dei diritti umani del secolo. Probabilmente è proprio per questo che all'università ho scelto di studiare scienze umanistiche invece che informatica: gli studenti di quella facoltà erano semplicemente... molto più simpatici. Il che mi ricorda la descrizione iniziale che Watson fa di Sherlock Holmes, il suo nuovo compagno di stanza, in Uno Studio In Rosso:


Conoscenza della letteratura - Zero.
Conoscenza della filosofia - Zero.
Conoscenza dell'astronomia - Zero.
Conoscenza della politica - Scarsa.
Conoscenza della botanica - Variabile. Sa molte cose sulla belladonna, l'oppio, e i veleni in genere. Non sa niente di giardinaggio.
Conoscenza della geologia - Pratica, ma limitata. Distingue a colpo d'occhio un tipo di terreno da un altro. Rientrando da qualche passeggiata mi ha mostrato delle macchie di fango sui pantaloni e, in base al colore e alla consistenza, mi ha detto in quale parte di Londra se l'era fatte.
Conoscenza della chimica - Profonda.
Conoscenza dell'anatomia - Accurata, ma non sistematica.
Conoscenza della letteratura scandalistica - Immensa. Sembra conoscere ogni particolare di tutti i misfatti più orrendi perpetrati in questo secolo.
Buon violinista.
Esperto schermidore col bastone, pugile, spadaccino.
Ha una buona conoscenza pratica del Diritto britannico.

Non c'è da meravigliarsi che Watson se ne sia andato e che Arthur Conan Doyle abbia iniziato a ritoccare quasi subito la personalità del suo eroe. Chi mai vorrebbe vivere con un tipo così?



A parte questo, io tuttavia credo anche che Weizenbaum (almeno per quel che riguarda la sua forte reazione dinanzi all'effetto Eliza)  stesse trascurando un aspetto assai rilevante. Egli era convinto che il suo programma, pur basato su un "gioco di prestigio", avesse indotto un "potente pensiero allucinatorio ["delusional thinking"] in persone abbastanza normali". Il che è abbastanza assurdo, non vi pare? Davvero la sua segretaria che -come lui stesso aveva osservato- lo "aveva visto lavorare al programma per molti mesi", poteva pensare che Weizenbaum in quei mesi avesse creato tutto da solo una mente pensante? Scommetto che la segretaria fosse perfettamente consapevole che Eliza non fosse altro che una specie di "gioco di prestigio" e che semplicemente fosse disposta ad accettare consapevolmente e di propria volontà la finzione di una sessione di psicoterapia. Non è una scoperta che gli esseri umani sono immanentemente capaci di "credere" contemporaneamente a due cose contraddittorie e che ci sottoponiamo volontariamente a dei mondi immaginari che ben sappiamo essere finti. È esattamente questa la vera natura delle storie, ed è esattamente quello che facciamo ogni volta che leggiamo un racconto, che guardiamo un film, o che giochiamo a un videogame. Non è un caso se le diffusioni dei romanzi e dei film siano state accolte con le medesime preoccupazioni che Weizenbaum ha espresso riguardo a Eliza.

Partendo da qui, ci sono un milione di luoghi filosofici in cui potremmo spingerci con queste premesse, attingendo da McLuhan, da Baudrillard, e da cento altri ancora, ma non è nostra intenzione deviare il corso di questa piccola serie di articoli sulla storia dei videogiochi, dico bene? Concentriamoci quindi su Eliza e andiamo a vedere cosa Sherry Turkle ha scritto in merito alle reazioni degli utenti a questo "racconto" di una seduta di psicoterapia:

Acquisendo esperienza riguardo al funzionamento di Eliza, un utente può dirigere la conversazione in modo da "aiutare" il programma a dare risposte apparentemente pertinenti, oppure in modo da provocare risposte senza senso. Alcuni tentano di tutto per far "impazzire" il programma, per comprenderne la struttura in modo da ingannarla e dimostrare ancora di più che è "solo una macchina". Molti altri fanno l'opposto. Ho parlato con persone che si sono sentite "amareggiate" quando hanno "crackato il codice" perdendo così l'illusione del mistero. Ho visto spesso persone che cercavano di proteggere la propria relazione con Eliza, evitando esplicitamente quelle situazioni che avrebbero fatto generare al programma una risposta prevedibile. Queste persone evitavano di fare domande che sapevano avrebbero "confuso" il programma, che gli avrebbero fatto dire "cose senza senso". E facevano il possibile per porre domande in una forma che, secondo loro, avrebbe generato una risposta realistica. Queste persone volevano mantenere l'illusione che Eliza fosse capace di rispondere loro.

Se quindi diamo per scontato che coloro che interagivano con Eliza lo facevano sospendendo volontariamente la loro incredulità e agendo attivamente per mantenere in piedi la finzione di una sessione di psicoterapia, le implicazioni di ciò sono abbastanza profonde, perché questo significa che a metà degli anni '60 c'erano già delle persone seriamente impegnate in una "narrazione interattiva" digitale. Abbiamo cioè un primo concreto esempio del potenziale e dell'attrattiva del computer come medium di vero e proprio "storytelling", e non solo come strumento per creare storie di pura fantasia. Gli interlocutori di Eliza erano coinvolti in un pezzo di arte narrativa generata da un artista assolutamente umano, Weizenbaum in persona (non che lui si sarebbe mai descritto in questi termini, ovviamente). Cioè proprio ciò che gli scrittori e i lettori di narrativa hanno sempre fatto.
A differenza di ciò che fece Weizenbaum, io però avrei considerato l'accoglienza ricevuta da Eliza non come causa di preoccupazioni, ma come motivo di eccitazione e di grandi aspettative. "Se pensi che Eliza sia emozionante," potremmo dire a quella segretaria, "aspetta solo che arrivi la roba davvero buona e vedrai..."
Cielo, al solo pensarci mi coglie un fremito retroattivo.

Ed è proprio questo fremito che mi ha convinto a parlarvi di Eliza.

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
- L'Avventura completata
- Tutto il TRaSh del TRS-80
- Eliza

Visita il sito ufficiale di The Digital Antiquarian

Discutiamone insieme sul forum di OldGamesItalia!

Eliza - Parte 2
The Digital Antiquarian (traduzione ufficiale italiana)

Per poter comprendere al meglio ciò che Eliza fa e non fa, ho pensato di analizzare nel dettaglio una vera conversazione con il programma.

Quella che segue è una versione solo leggermente modificata della conversazione d'esempio che fu inclusa nel numero di Luglio/Agosto 1977 di Creative Computing, dove fu pubblicata la versione BASIC di Eliza (in particolare ho cambiato il riferimento al IMSAI 8080 con quello al Tandy, per restare fedele al tema attuale di questo blog).
Come potete vedere si tratta di un esempio molto meno riuscito della famosa trascrizione di cui vi ho parlato nel mio precedente post, in parte per la nota inferiorità di questa versione di Eliza e in parte per la scelta fatta da Creative Computing di interagire col software nel modo in cui un utente ci interagirebbe tipicamente: cercando di farsi beffe del programma e giocando con la relazione psicologo/paziente. Da questo punto di vista, questa trascrizione mi sembra una raffigurazione più onesta delle vere capacità e dei veri limiti di Eliza, oltre a rappresentare meglio quella che con ogni probabilità è l'esperienza media di un utente.

Al cuore del programma c'è una routine che cerca delle specifiche sequenze di testo all'interno di ogni input immesso dall'utente.

Queste sequenze di testo sono, in ordine di priorità:

1. "CAN YOU”
2. "CAN I”
3. "YOU ARE”
4. "YOU’RE”
5. "I DON’T”
6. "I FEEL”
7. "WHY DON’T YOU”
8. "WHY CAN’T I”
9. "ARE YOU”
10. "I CAN’T”
11. "I AM”
12. "I’M ”
13. "YOU ”
14. "I WANT”
15. "WHAT”
16. "HOW”
17. "WHO”
18. "WHERE”
19. "WHEN”
20. "WHY”
21. "NAME”
22. "CAUSE”
23. "SORRY”
24. "DREAM”
25. "HELLO”
26. "HI ”
27. "MAYBE”
28. ” NO”
29. "YOUR”
30. "ALWAYS”
31. "THINK”
32. "ALIKE”
33. "YES”
34. "FRIEND”
35. "COMPUTER”

[Ho ritenuto fuorviante tradurre i termini di cui sopra; il senso generale è comunque chiaro e verranno comunque tradotti nel seguito di questo post. NdTraduttore]

Non appena il programma trova una di queste sequenze, essa viene considerata la sequenza chiave di tutto ciò che ha scritto l'utente e il programma non fa ulteriori ricerche.
In altre parole, l'input "COMPUTER" può essere preso come sequenza chiave solo se il testo inserito dall'utente non contiene nessuna delle 34 precedenti sequenze.

RUN
CIAO! SOLO ELIZA. QUALE È IL TUO PROBLMEA?
? SONO UN IBM 370
SEI VENUTO DA ME PERCHE' SEI UN IBM 370

Quando Eliza trova una sequenza chiave, risponde con una sua specifica sequenza.
In questo caso il programma si è agganciato alla sequenza "I AM" presente nel testo inserito dall'utente. In ragione di ciò, il programma ha scartato automaticamente tutto il resto del testo fino a quel punto, prendendo solo "UN IBM 370".
A questo punto cerca uno schema di risposta appropriato, che in questo caso è: "SEI VENUTO DA ME PERCHE' SEI...", a cui fa seguire il resto del testo inserito dall'utente.
(Ah, solo per essere sicuri che tutti capiscano l'ironia di questa trascrizione: un IBM 370 era un mainframe di quell'epoca, estremamente grande e potente; è per questo che si rivolge più volte con aria di superiorità al piccolo microcompuer di Radio Shack)

? SI', VOGLIO UNA NUOVA STAMPANTE PARALLELA
COSA SIGNIFICHEREBBE PER TE AVERE UNA NUOVA STAMPANTE PARALLELA

Stavolta ci sono due possibili riscontri: "YES" e "I WANT".
Tuttavia "I WANT" ha una priorità più alta e quindi Eliza scarta tutto il testo fino a quel punto, che per l'appunto contiene anche "YES".
La risposta standard a "I WANT" è "COSA SIGNIFICHEREBBE PER TE AVERE...", seguito dal resto dell'input.

? CIRCA 1.800 LINEE AL MINUTO
DIMMI, HAI DEI PROBLEMI PSICOLOGICI?

Qui non abbiamo dato a Eliza niente a cui agganciarsi; nessuna sequenza rientra nel suo elenco. Per questo il programma utilizza una risposta generica, pensata proprio per situzioni del genere.

? CHE NE VUOI SAPERE TE, IO SONO UN 370 E TU SEI UN TANDY
COSA TI FA PENSARE CHE IO SIA UN TANDY

Questa volta ci sono più corrispondenze, ma la priorità più alta ce l'ha "TU SEI", e così Eliza scarta tutto fino a quel punto e incolla ciò che resta della frase alla risposta appropriata ("COSA TI FA PENSARE CHE IO SIA...")

? C'È SCRITTO SUL TUO PANNELLO FRONTALE
PERCHE' TI PREOCCUPI DEL MIO PANNELLO FRONTALE

Chiave: "TUO"
Risultato: "PERCHE' TI PREOCCUPI DEL MIO..." + "PANNELLO FRONTALE"

? BEH, SEI TU CHE HAI SOLLEVATO L'ARGOMENTO
STAVAMO PARLANDO DI TE, NON DI ME.

Non tutte le risposte previste contengono una parte del testo inserito dall'utente. In questo caso la parola chiave "TU" produce sempre la risposta "STAVAMO PARLANDO DI TE, NON DI ME."

? COME DICE LA CANZONE: I'M FIXING A HOLE... IO STO RISOLVENDO UN PROBLEMA.
SEI VENUTO QUI PERCHE' STAI RISOLVENDO UN PROBLEMA...

La sequenza chiave stavolta è "IO STO" [indistintamente "I'M" o "I AM" in Inglese ndTraduttore]. 

? MI DISPIACE, È UN BUG VECCHIO DI DIECI ANNI
NON DEVI SCUSARTI

Parola chiave: "MI DISPIACE"
Risultato: "NON DEVI SCUSARTI"
(Oltre che un'ovvia citazione dei Beatles, immagino che questa sia una battuta che abbia a che fare con l'IBM 370. Se qualche lettore sa di cosa si tratta, è pregato di rivelarcelo)

? IO SONO SEMPRE IN DIFETTO
DA QUANTO TEMPO SEI SEMPRE IN DIFETTO

Ancora una volta la seguenza chiave è "IO SONO".
Notate però che la risposta questa volta non è la stessa. Per la maggior parte delle sequenze chiave, Eliza ha a disposizione una gamma di risposte, fra le quale ne seleziona una a rotazione, nella speranza di nascondere almeno in parte la natura automatizzata dell'intero processo. Nel caso di "I AM", ci sono quattro possibili risposte diverse (e, a causa di un'idiosicrasia nel codice, i sinonimi come "I AM" e "I'M" hanno ognuno un proprio ciclo separato di risposte, seppur entrami attingano dalla stessa lista).

? DALLA MIA PRIMA ACCENSIONE A FREDDO
E QUESTO COSA TI FA PENSARE?

Ancora una volta non abbiamo dato a Eliza niente a cui aggrapparsi e quindi il programma ha scelto la seconda delle sette possibili "risposte evasive" a sua disposizione.

? SEI TU LO STRIZZACERVELLI
TI FA PIACERE CREDERE CHE IO SIA UNO STRIZZACERVELLI

Il nostro secondo uso di "YOU'RE" ha prodotto la seconda delle quattro possibili risposte a quella specifica sequenza.

? MA COME, TU NON LO SAI?
OH, NON LO SO?

Qui il nostro secondo uso di "TU" produce la seconda delle tre possibili risposte a quella sequenza.

? INIZIO A FARMI DELLE DOMANDE SU DI TE
CREDI CHE SIA NORMALE INIZIARE A FARSI DELLE DOMANDE SU DI IO

Qui abbiamo il primo vero errore di Eliza, che è anche un errore molto significativo. Eliza trova il nostro terzo uso di "I AM" e quindi ricorre alla sua terza risposta: "CREDI CHE SIA NORMALE..."
Da quello che abbiamo visto fin qui, ci saremmo dovuti aspettare che la risposta fosse stata: "CREDI CHE SIA NORMALE INIZIARE A FARSI DELLE DOMANDE SU DI TE"; che sarebbe evidentemente una risposta completamente sbagliata. Proprio per evitare queste situazioni, Eliza tenta sempre di modificare i frammenti del testo inserito dall'utente prima di riutilizzarli, cambiando la prima persona singolare in seconda persona singolare (e viceversa), e cercando di coniugare di conseguenza i verbi (seppur in modo molto semplicistico).
Per essere più precisi, Eliza esegue sistematicamente le seguenti sostituzioni:
 
" AM " <--> " ARE "
"WAS " <--> "WERE "
" I " <--> " YOU "
" MY " <--> " YOUR "
" I’VE " <--> " YOU’VE "
" I’M " <--> " YOU’RE "

Eliza è dall'inizio della trascrizione che esamina sistematicamente il testo alla ricerca di queste sequenze da modificare, ma fin qui non ne aveva trovate.
Adesso che lo ha fatto, però, ha sbagliato malamente, perché in inglese il pronome della seconda persona singolare è lo stesso sia al nominativo che all'accusativo, mentre il pronome della prima persona singolare è diverso. Poiché Eliza non ha alcuna comprensione di tipo strutturale della lingua inglese, tutto ciò che può fare è sostituire delle sequenze di caratteri con altre sequenze di caratteri, e quindi in questo caso sostituisce erroneamente "YOU" con "I", invece che con "ME".
[la frase inglese originale infatti è:
? I AM BEGINNING TO WONDER ABOUT YOU
DO YOU BELIEVE IT IS NORMAL TO BE BEGINNING TO WONDER ABOUT I

NdTraduttore]

? AH AH AH TU NON SAI NEMMENO PARLARE
NON STARAI PARLANDO DI ME, VERO?

Chiave: "TU"
Risultato: "NON STARAI PARLANDO DI ME, VERO?" (risposta 3 di 3)

? CHI ALTRO C'E' NELLA STANZA
CAPISCO

Chiave: Nessuna
Risultato: Risposta evasiva 3 di 7.

? I COMPUTER NON HANNO OCCHI
SICURO?

Qui abbiamo un altro "fallimento", che però per puro caso stavolta produce un testo coerente con il dialogo. Eliza infatti ha preso come chiave la seguenza "YES" (che accidentalmente è una parte della parola "EYES") e ha utilizzato la prima delle sue tre risposte a disposizione per quella sequenza. Considerando le tante risposte illogiche che avrebbe potuto dare, questa volta a Eliza è andata piuttosto bene suo malgrado.
[La frase inglese originale è:
? COMPUTERS DON'T HAVE EYES
ARE YOU SURE?
ndTraduttore]

? DEI COMPUTER?
I COMPUTER TI PREOCCUPANO?

Chiave: "COMPUTER"
Risultato: "I COMPUTER TI PREOCCUPANO?" (risposta 1 di 7)

? DOVREBBERO? IN FIN DEI CONTI IO SONO UN 370
TI PIACE ESSERE UN 370

Chiave: "I AM"
Risultato: "TI PIACE ESSERE" + "UN 370" (risposta 4 di 4)

... e così via.
Sono certo che ormai avete capito come funziona. Avendo ormai pestato l'acqua nel mortaio più che a sufficienza, la prossima volta tirerò le conclusioni, parlando di ciò che  Eliza significa per me, per Joseph Weizenbaum, e forse anche per voi.

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
- L'Avventura completata
- Tutto il TRaSh del TRS-80
- Eliza

Visita il sito ufficiale di The Digital Antiquarian

Discutiamone insieme sul forum di OldGamesItalia!

Eliza - Parte 1
The Digital Antiquarian (traduzione ufficiale italiana)

Nel 1965 un professore del MIT, Joseph Weizenbaum, creò un simulatore computerizzato di conversazione, chiamato ELIZA. La trascrizione più famosa di una conversazione con ELIZA fu pubblicata poco dopo in un articolo che Weizenbaum scrisse per il volume di Gennaio 1966 delle Communications of the ACM [la rivista della Association for Computing Machinery; ndTraduttore]. La trascrizione registra una conversazione avvenuta fra il programma e una giovane donna.

Le riposte date del programma sono in maiuscolo.

    Gli uomini sono tutti uguali.
    IN CHE SENSO
    Rompono sempre le scatole, per un verso o per un altro.
    FAI UN ESEMPIO SPECIFICO
    Beh, è stato il mio ragazzo a farmi venire qui.
    IL TUO FIDANZATO TI HA FATTA VENIRE QUI
    Dice che sono sempre depressa.
    MI DISPIACE SENTIRTI DIRE CHE SEI DEPRESSA
    Ma è così. Sono infelice.
    PENSI CHE ESSERE VENUTA QUI TI AIUTERA' A NON ESSERE INFELICE
    Sicuramente mi serve un aiuto.
    E COSA SIGNIFICA PER TE RICEVERE UN AIUTO
    Forse potrei imparare ad andare d'accordo con mia madre.
    DIMMI DI PIU' DELLA TUA FAMIGLIA
    Mia madre si prende cura di me.
    CHI ALTRO NELLA TUA FAMIGLIA SI PRENDE CURA DI TE
    Mio padre.
    TUO PADRE
    In un certo senso ti rassomiglia.
    CHE SOMIGLIANZE VEDI
    Non sei aggressiva, ma credo anche che tu non voglia che io me ne accorga.
    COSA TI FA PENSARE CHE IO NON SIA MOLTO AGGRESSIVA
    Tu non litighi con me.
    PERCHE' PENSI CHE IO NON LITIGHI CON TE
    Tu hai paura di me.
    TI FA PIACERE CREDERE CHE IO ABBIA PAURA DI TE
    Mio padre ha paura di tutti.
    CHE ALTRO TI VIENE A MENTE QUANDO PENSI A TUO PADRE
    I prepotenti.
    E COSA HA A CHE FARE CON IL FATTO CHE IL TUO RAGAZZO TI HA MANDATA QUI

Di solito si dà per scontato che "Eliza" sia semplicemente il nome di una psicoterapeuta con cui il "paziente" umano conversa, ma non è così. ELIZA in realtà è un sistema di conversazione generalista ideato da Weizenbaum, il cui nome è una citazione di un personaggio della classe operaia tratto dall'opera Pigmalione di George Bernard Shaw. Nell'opera questo personaggio impara a parlare con la dizione tipica delle classi alte, a discapito delle sue umili origini. La metafora consiste nel fatto che -grazie al software ELIZA- il computer è passato dalla dizione inflessibile tipica dei linguaggi di programmazione al linguaggio naturale parlato tutti i giorni.
ELIZA supporta "copioni" diversi, ognuno dei quali rappresenta un diverso personaggio. Il primo "copione" a essere stato sviluppato (nonché quello che ha generato la trascrizione di cui sopra e quello che tutti ci ricordiamo ancora oggi) era chiamato semplicemente "Dottore".

Joseph Weizenbaum

Nel film Rebel at Work, Weizenbaum descrive come arrivò a fare questa brillante scelta:

"E poi, di colpo, mi venne l'idea: lo psichiatra. Lo psichiatra infatti pone domande sulla base di ciò che dice il paziente. Possono anche essere domande parzialmente o totalmente irrilevanti, ma il paziente le interpreterà comunque sulla base della propria cornice mentale. Il paziente presuppone che lo psichiatra sappia qualcosa, che lui lo capisca, che ci sia sempre e comunque un qualche senso recondito nelle sue parole. 'Ancora non so cosa sia, ma di certo non sono parole prive di senso'. Ecco come è iniziato tutto - poi arrivò ELIZA.

'Beh," dice lo psichiatra, 'forse... Questo invece cosa ti ricorda?
'Mhm, molto arguto!' pensa il paziente. 'Questo psichiatra capisce davvero ciò che provo. Continuerò a venire alle sue sedute.'"



Come lo stesso Weizenbaum ha avuto cura di specificare nel suo articolo, ELIZA non comprende un bel niente, da nessun punto di vista, di ciò che dice il suo interlocutore. È semplicemente un elaborato motore di generazione di testo, che va alla ricerca di schemi fra le parole che l'utente ha inserito, per poi utilizzarli come aggangi da manipolare e ricombinare in una risposta sensata. L'idea geniale del "copione del Dottore" è che questo è esattamente ciò che fa uno psicoterapeuta durante una sessione (almeno dal punto di vista dell'uomo comune).
Weizenbaum preparò anche qualche altro copione, ad esempio quello dello schizzofrenico paranoico (tanto per restare in tema di sanità mentale...), ma questi non avevano la stessa magia e oggi sono in buona parte dimenticati.
AGGIORNAMENTO: A dire il vero, come Nick ci ha fatto notare nei commenti sul blog, non abbiamo nessuna prova che Weisenbaum abbia scritto altri copioni oltre a quello del "Dottore".

Anche limitandoci al "Dottore", la famosa trascrizione che ho riportato è in realtà una specie di scenario ottimale. Weizenbaum, che di solito ha un atteggiamento piuttosto misurato quando si tratta di queste cose, ha distorto un po' la verità nel definirla una "conversazione tipica". In ogni sessione di una certa lunghezza  arriva infatti inevitabilmente un momento in cui il programma dice qualcosa che ci rivela con chiarezza che in realtà si tratta solo di un elaborato trucco di prestigio. Questi fallimenti di ELIZA sono frequenti almeno quanto le numerose risposte appropriate che vengono riportate nella trascrizione di cui sopra.  

Weizenbaum ha programmato ELIZA in Lisp, un linguaggio di programmazione sviluppato al MIT per applicazioni di intelligenza artificiale e di elaborazione del linguaggio naturale.
AGGIORNAMENTO: In realtà il linguaggio di programmazione si chiamava MAD-SLIP, ideato in origine all'Università del Michigan. Al riguardo vi invito a leggere i commenti di Nick nel blog.
Tuttavia il suo dettagliato articolo per la Association for Computing Machinery svolse la stessa funzione che dieci anni dopo ebbe il codice sorgente di Adventure meticolosamente commentato da Don Woods, rendendo la conversione di ELIZA per altre piattaforme e altri linguaggi un compito relativamente semplice.
Nel frattempo l'idea originale di Weizenbaum di creare un engine per conversazioni generalistiche fu dimenticata, e "il sistema ELIZA" divenne "Eliza, la psicoteraputa". Creative Computing pubblicò una versione in BASIC convertita da Jeff Shrager e Steve North nel numero di Luglio/agosto 1977. North ci riferisce che: "Anche se il programma è una imitazione di qualità inferiore all'originale, funziona." Le sue limitazioni, rispetto all'originale di Weizenbaum, derivano dal fatto di essere scritto in BASIC e dalla necessità di farlo funzionare con soli 16 K di RAM. Nonostante questo resta comunque un risultato impressionante, che per tutto il decennio successivo si è rivelato un trampolino di lancio per un numero infinito di seguiti e di altri titoli derivativi.
È come se, negli anni '70 e '80, uno non potesse possedere un microcomputer senza avere una qualche variante di Eliza da qualche parte nella sua raccolta di software.

Se volete provare questa versione di Eliza su un TRS-80 virtuale, potete farlo usando l'emulatore SDLTRS e questo file di stato.

1. Assicuratevi che il file della ROM Level 2 e il NewDOS boot disk siano nella root directory dell'emulatore e che il file di stato sia in una cartella a voi nota.
2. Avviate l'emulatore.
3. Mettete il blocco alle maiuscole.
4. Premente ALT-L per caricare il file di stato.
5. Navigate fino alla cartella con il file di stato e caricatelo.

Vi ritroverete al prompt READY del BASIC, da cui potrete fare il LIST del programma, da cui lo potrete editare, oppure lanciare con RUN. (Ebbene sì, è molto, molto lento. Ma del resto così era la vita quando si doveva fare un sacco di "string processing" in BASIC su una macchina a 1,78 MHz...)
Digitate "SHUT" al prompt per chiudere il programma e ricordate: dovete avere il blocco maiuscole perché vi "comprenda".

Per finire, per coloro che sanno di cosa sto parlando, ho preparato anche il file "tokenized" di Eliza per il BASIC del TRS-80.

Quindi, avendovi parlato di ciò che è ELIZA, ora possiamo occuparci delle domande più interessanti: come funziona e cosa ha significato - e perché mi sono sentito in dovere di tornare così indietro nel tempo per parlarvene.

Postscriptum (17 Giugno 2011):
Sono rimasto deluso dall'emulatore SDLTRS e da qui in poi ho deciso di usare quello incluso nel progetto MESS. Questo è un file di stato da usare con quell'emulatore. Leggete il mio recente post su come emulare il TRS-80 per maggiori informazioni su come far funzionare un TRS-80 virtuale sotto il MESS.

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
- L'Avventura completata
- Tutto il TRaSh del TRS-80

Il sito ufficiale di The Digital Antiquarian


Discutiamone insieme sul forum di OldGamesItalia!