Ken Thompson: L'architetto silenzioso di tutto
Quando i Bell Labs si ritirarono dal progetto Multics nel 1969, Ken Thompson si ritrovò con un minicomputer PDP-7 obsoleto in un angolo e senza alcun mandato ufficiale. Lo usò comunque per costruire un sistema operativo. Unix oggi gira, in qualche forma discendente, su quasi ogni server, telefono e dispositivo integrato del pianeta. Dennis Ritchie, il collaboratore più stretto di Thompson e lui stesso una figura importante, disse di quella prima versione che "la maggior parte delle idee, e gran parte del lavoro, del resto, erano sue".
Aritmetica in binario
Kenneth Lane Thompson è nato il 4 febbraio 1943 a New Orleans, in Louisiana. Il suo resoconto della propria infanzia è tipicamente privo di fronzoli: "Sono sempre stato affascinato dalla logica e persino alle elementari lavoravo su problemi di aritmetica in binario, cose del genere. Solo perché ero affascinato". Quell'ultima clausola definisce l'uomo nella sua totalità: un appetito intellettuale senza alcuno scopo strumentale associato.
Ha conseguito una laurea nel 1965 e un master nel 1966, entrambi in ingegneria elettrica e informatica, presso l'Università della California, Berkeley, dove il suo relatore di tesi fu il teorico della codifica Elwyn Berlekamp. I Bell Laboratories lo assunsero nel 1966 nel Computing Sciences Research Center a Murray Hill, nel New Jersey.
Unix
Tra il 1967 e il 1969 Thompson lavorò a Multics, l'ambizioso progetto congiunto di timesharing tra Bell Labs, MIT e General Electric. Multics era enorme, lento e in ritardo; i Bell Labs si ritirarono. Ciò che Thompson ne trasse fu la convinzione che le idee fossero giuste ma l'esecuzione fosse sbagliata.
La storia delle origini è ben documentata e leggermente assurda. Voleva continuare a giocare a Space Travel, un gioco che aveva scritto, e voleva un ambiente decente in cui lavorare. Su un PDP-7 scartato, con risorse minime e senza supporto istituzionale, costruì il nucleo di un sistema operativo: un file system gerarchico, processi, file di dispositivo trattati come file ordinari, un interprete a riga di comando separato dal kernel e pipe per concatenare i programmi. Ognuno di questi è oggi così standard che occorre uno sforzo per vederli come scelte.
La filosofia di progettazione era la compressione. Piuttosto che un sistema che anticipasse ogni esigenza, Unix offriva un piccolo numero di primitive componibili e lasciava che gli utenti assemblassero ciò che volevano. Nel 1973 esistevano più di venti installazioni. Per scrivere più facilmente le parti non legate al kernel, Thompson creò il linguaggio di programmazione B, derivato dal BCPL, che Ritchie sviluppò poi in C: il linguaggio in cui è ancora scritta la maggior parte del software infrastrutturale mondiale.
Venti domande, otto minuti di orologio e un percentile misurato su tutti quelli che l’hanno fatto. Senza registrazione.
Fai il test del QI →Piccoli strumenti, radici profonde
L'altro lavoro di Thompson ha la stessa firma: un'idea compatta che si rivela portante. Ha implementato le espressioni regolari negli editor QED ed ed e ha ideato la costruzione di Thompson, l'algoritmo per convertire un'espressione regolare in un automa a stati finiti. Quasi ogni motore di espressioni regolari in uso oggi è un discendente di quella notazione.
Ha costruito un programma di scacchi nel 1971, poi con Joseph Condon ha costruito Belle, una macchina per scacchi specializzata che ha dominato gli scacchi al computer nella sua epoca, e in seguito ha generato le basi di dati dei finali complete per finali di quattro, cinque e sei pezzi: soluzioni esaustive per intere classi di posizioni scacchistiche, un corpo di lavoro che ha cambiato permanentemente la teoria del finale.
Nel 1992, con Rob Pike, ha progettato UTF-8, la codifica di caratteri che permette a un flusso di byte di trasportare qualsiasi scrittura sulla Terra pur rimanendo compatibile con ASCII. Oggi rappresenta oltre il 90 per cento del web. È stato anche fondamentale per Plan 9, il sistema operativo distribuito che i Bell Labs costruirono a metà degli anni '80 per spingere le idee di Unix oltre quanto Unix stesso potesse fare.
La sua conferenza Turing del 1983, "Riflessioni sulla fiducia", descriveva un compilatore che inserisce una backdoor nei programmi che compila, e anche nelle versioni future di se stesso, in modo che il codice dannoso non appaia da nessuna parte in nessuna fonte leggibile da chiunque. L'hack di Thompson è un documento fondamentale della sicurezza informatica; il codice sorgente è stato annotato e pubblicato nel 2023.
Google e Go
Thompson si è ritirato dai Bell Labs alla fine del 2000 ed è entrato in Google nel 2006, dove con Rob Pike e Robert Griesemer ha progettato il linguaggio di programmazione Go. Il suo resoconto della motivazione è schietto: "Ci siamo riuniti in tre e abbiamo deciso che odiavamo C++", un linguaggio che ha definito "un ammasso di idee che si escludono a vicenda". Go è stato costruito sulla regola che tutti e tre i progettisti dovevano essere convinti di ogni funzionalità, il che è una disciplina per mantenere un linguaggio piccolo.
Gli onori si sono accumulati costantemente: elezione alla National Academy of Engineering nel 1980, premio IEEE Emanuel R. Piore nel 1982, premio ACM Turing con Ritchie nel 1983, National Academy of Sciences nel 1985, medaglia IEEE Richard W. Hamming nel 1990, premio Computer Pioneer nel 1994, una borsa di studio del Computer History Museum nel 1997, National Medal of Technology nel 1998, il premio inaugurale Tsutomu Kanai nel 1999 e il premio del Giappone per l'informazione e le comunicazioni nel 2011.
Perché Ken è definito un genio
La citazione del Turing Award dell'ACM fa un'affermazione insolitamente precisa, e vale la pena citarla perché localizza la qualità con esattezza: "Il successo del sistema UNIX deriva dalla sua selezione di buon gusto di alcune idee chiave e dalla loro elegante implementazione... Il genio del sistema Unix è la sua struttura, che permette ai programmatori di poggiare sul lavoro degli altri".
Il gusto è la parola operativa. Il talento di Thompson è sottrattivo: una capacità di identificare il più piccolo insieme di concetti che genererà il più ampio spazio di comportamento utile, e poi rifiutare tutto il resto. Le pipe sono l'esempio canonico: un meccanismo banale per collegare l'output di un programma all'input di un altro, che trasforma una collezione di piccoli strumenti in un sistema combinatorio. Le espressioni regolari, UTF-8 e Go mostrano tutti lo stesso schema di progettazione minima sufficiente. Viene regolarmente citato tra i più grandi programmatori mai esistiti, e il giudizio proviene da persone che scrivono codice per vivere piuttosto che da comitati di premiazione.
Il caso contrario è più debole rispetto alla maggior parte degli elenchi, ma esiste. Unix è stato collaborativo: Ritchie, Brian Kernighan, Douglas McIlroy, che propose le pipe, e altri lo hanno modellato profondamente, e il premio Turing è stato condiviso. Molte idee di Unix sono state adattate da Multics piuttosto che inventate di sana pianta. Thompson non ha prodotto alcun risultato teorico nell'informatica e la sua influenza risiede interamente negli artefatti e nel giudizio progettuale. Se ciò costituisca genio o un mestiere straordinariamente ben sviluppato è una domanda lecita. La risposta più onesta è che nel software i due sono difficili da separare e il mestiere di Thompson si è dimostrato più consequenziale delle teorie di quasi tutti gli altri.
Eredità
Linux, macOS, Android, iOS e il software che esegue praticamente ogni server Internet discendono dalle decisioni che Thompson ha preso da solo su una macchina scartata nel 1969. La sua codifica di caratteri trasporta quasi tutto il testo scritto online. Il suo algoritmo di espressione regolare si trova all'interno di ogni editor di testo. Ha registrato una lunga storia orale per il Computer History Museum nel 2024 e ha trascorso i suoi ultimi anni, dopo aver abbandonato i prodotti Apple, eseguendo il sistema operativo Raspberry Pi.
.jpg)