Ljubavno pismo učenju

Treći deo: Zanimljivosti – ljudske priče iza velikih ideja
Ken Thompson – filozofija jednostavnosti i Unix
Ken Thompson i elegancija malih alata – tihi čovek iza temelja modernog softvera

Postoje ljudi čije prisustvo odmah ispuni prostoriju i ljudi čije ideje tiho uđu u temelje sveta, pa decenijama nose težinu dela čiji će autori postati poznatiji od njih. Ken Thompson pripada ovoj drugoj vrsti. Njegovo ime široj javnosti nikada nije postalo simbol računarske revolucije poput imena osnivača velikih kompanija, iako se tragovi njegovog rada nalaze u serverima, telefonima, razvojnim okruženjima i operativnim sistemima širom planete. Govorio je sažeto, bez velike potrebe da tumači sopstvenu istorijsku veličinu, dok je njegov kod pokazivao izuzetnu sposobnost da složen problem svede na nekoliko jasnih elemenata.

Kenneth Lane Thompson rođen je 4. februara 1943. godine u New Orleansu, u vreme kada su elektronski računari bili retki državni i vojni projekti smešteni u velikim laboratorijama. Programiranje još nije predstavljalo jasno oblikovanu profesiju, pa su ljudi koji su mu prilazili dolazili iz matematike, fizike i elektrotehnike, usput izmišljajući metode rada i jezik nove discipline. Thompsona su privlačili zatvoreni sistemi pravila, logički problemi i zadovoljstvo koje nastaje kada se zamisao pretvori u mehanizam koji pouzdano radi.

Studirao je elektrotehniku i računarstvo na Univerzitetu Kalifornije u Berkeleyju, gde je 1965. završio osnovne, a naredne godine magistarske studije. Računari koje je tamo koristio bili su skupi zajednički resursi, pa su programi često pripremani na karticama ili trakama i predavani operaterima. Thompsonovom temperamentu mnogo je više odgovaralo interaktivno računanje, u kojem programer odmah vidi posledicu svoje naredbe i nastavlja da istražuje. Brza smena pokušaja, rezultata i ispravke pretvarala je programiranje u misaoni razgovor sa mašinom.

Godine 1966. pridružio se Bellovim laboratorijama, jednom od najplodnijih istraživačkih središta dvadesetog veka. Stabilni prihodi telefonskog sistema kompanije AT&T omogućavali su matematičarima, fizičarima i inženjerima da se godinama bave problemima čija neposredna tržišna vrednost još nije bila poznata. U takvom okruženju Thompson je upoznao Dennisa Ritchieja, svog najvažnijeg saradnika. Thompson je brzo pronalazio funkcionalno jezgro rešenja, dok je Ritchie donosio preciznost u oblikovanju jezika i dugoročnih apstrakcija. Njihova saradnja počivala je na poverenju, bliskom tehničkom ukusu i odsustvu potrebe da jedan drugoga potisnu iz središta priče.

Obojica su radila na projektu Multics, čija je veličina pokaziv veličina pokazivala i snagu i opasnost velike ambicije. Kada se Bell Labs 1969. godine povukao, Thompson je sačuvao zamisao o interaktivnom sistemu, ali je poželeo mnogo manju i pregledniju celinu. Na računaru PDP-7, koji nije pripadao najcenjenijoj laboratorijskoj opremi, započeo je sistem iz kojeg će nastati Unix. Rani razvoj odvijao se bez svečanog plana o osvajanju sveta: programeri su želeli prijatno okruženje u kojem mogu da pišu kod, obrađuju tekst i neposredno koriste računar.

Thompsonova sposobnost da brzo izgradi čitav funkcionalni sistem postala je deo legende Bellovih laboratorija. Tokom razvoja prvih verzija Unixa napisao je datotečni sistem, mehanizme za procese, komandni interpreter, uređivač ed, niz osnovnih programa i jezik B. Kolege su opisivale njegov kod kao izrazito sažet, ali ta sažetost nije bila puka virtuoznost. Iza nje je stajalo instinktivno prepoznavanje onoga što je problemu suštinski potrebno i spremnost da se ukloni sve što ne doprinosi dovoljno celini.

Ime Unix nastalo je kao duhovita igra sa nazivom Multics i u početku se zapisivalo kao Unics. Brian Kernighan se često navodi kao čovek koji je predložio naziv, dok se kasniji oblik Unix brzo ustalio. U toj šali sačuvana je važna razlika između dva projekta: Multics je u samom imenu nosio širinu i mnoštvo mogućnosti, dok je Unix nagoveštavao manju, čvršće povezanu celinu. Thompson nije odbacio sve pouke prethodnog sistema, već ih je preradio u arhitekturu koju mala grupa može da razume i razvija.

Jedna od najpoznatijih priča govori o tome kako je Thompson, dok mu je porodica bila na odmoru, tokom nekoliko sedmica napisao ključne delove ranog sistema za PDP-7. Takve anegdote lako stvaraju sliku usamljenog genija koji u kratkom naletu stvara gotovo dovršeno delo. Stvarni razvoj bio je bogatiji: Unix je rastao kroz godine saradnje sa Ritchijem, McIlroyem, Ossannom, Kernighanom i brojnim drugim istraživačima. Thompsonova izuzetna brzina bila je presudna za prvi zamah, dok je zajednica sistemu dala širinu, prenosivost i kulturu koja će ga nadživeti.

Njegova radoznalost nije ostala ograničena na operativne sisteme. Thompson je napisao program za igranje šaha Belle, razvijen sa Joeom Condonom, koji je koristio posebno projektovan hardver za brzo pretraživanje poteza. Belle je dostigla majstorsku snagu i pokazala koliko pažljivo usklađivanje algoritma i hardvera može promeniti granice računarske igre. Šah ga je privlačio kao zatvoren, strogo određen svet u kojem nekoliko jednostavnih pravila proizvodi ogromnu dubinu, što je odgovaralo njegovom trajnom interesovanju za moć dobro izabranih ograničenja.

Thompson je tokom rada na Plan 9 sistemu sa Robom Pikeom osmislio kodiranje UTF-8, koje je omogućilo da se znakovi brojnih svetskih pisama predstavljaju u obliku kompatibilnom sa postojećim sistemima zasnovanim na ASCII-ju. Prvi nacrt nastao je veoma brzo, ali je njegova dugovečnost proistekla iz pažljivo izabrane strukture. UTF-8 je danas dominantan način kodiranja teksta na vebu, pa se Thompsonov uticaj nalazi i u samoj mogućnosti da ljudi na različitim jezicima razmenjuju digitalno zapisane reči.

Njegovo predavanje „Reflections on Trusting Trust”, održano povodom Tjuringove nagrade, promenilo je način na koji stručnjaci razmišljaju o bezbednosti softvera. Thompson je pokazao da kompajler može biti izmenjen tako da u određeni program ubaci skriveni pristup, a zatim da istu sposobnost prenosi u buduće verzije sebe bez vidljivog traga u izvornom kodu. Ovaj primer otkrio je da tehničko poverenje uvek počiva na lancu alata, postupaka i ljudi koji se ne mogu proveravati samo čitanjem poslednjeg sloja programa.

Posle višedecenijskog rada u Bellovim laboratorijama Thompson je prešao u kompaniju Google, gde je sa Robom Pikeom i Robertom Griesemerom učestvovao u stvaranju jezika Go. Novi jezik odgovarao je potrebama velikih distribuiranih sistema, brzog prevođenja i timova koji održavaju ogromne količine koda. I u njemu se prepoznaje Thompsonova nenaklonost prema nepotrebnoj složenosti. Go je svesno zadržao ograničen skup osobina, dajući prednost čitljivosti, brzini razvoja i jasnim mehanizmima konkurentnog izvršavanja.

Thompson je sa Ritchijem dobio Tjuringovu nagradu, IEEE Hammingovu medalju, Nacionalnu medalju za tehnologiju Sjedinjenih Američkih Država i Japansku nagradu, uz brojna druga stručna priznanja. Javne ceremonije nisu od njega načinile tehnološku zvezdu. U razgovorima je ostajao neposredan, ponekad šaljiv i spreman da istoriju velikih sistema vrati njihovim skromnim počecima, pogrešnim skretanjima i praktičnim razlozima koji se u naknadnim prikazima često izgube.

Njegova životna priča pokazuje koliko plodna može biti sredina u kojoj istraživač ima vremena da napravi nešto čija buduća vrednost još nije dokazana. Unix nije započet kao proizvod sa unapred izračunatim tržištem, UTF-8 nije nastao kao veliki komercijalni projekat, a programski jezik Go nije izgrađen da bi zadovoljio svaku postojeću školu programiranja. Svako od tih dela proisteklo je iz konkretnog problema i spremnosti da se pronađe dovoljno jednostavna struktura koja može dugo da nosi njegove posledice.

Thompsonova nenametljivost pruža važnu protivtežu kulturi koja samouveren nastup često poistovećuje sa dubinom. Njegov autoritet nije počivao na glasnoći, već na sistemima koji rade, idejama koje se mogu proveriti i rešenjima koja drugi ljudi mogu razumeti i nastaviti. Bio je tihi čovek iza mnogih temelja modernog softvera, ali tišina u njegovom slučaju nije predstavljala odsustvo uticaja. Ona je ostavljala prostor delu da govori preciznije i duže nego što bi to mogla bilo koja lična legenda.

← Prethodna priča Povratak na sadržaj Sledeća priča →