Smalltalk i Alan Kay
Čovjek koji je izmislio tablet 1972. godine — od kartona, ali svejedno prije svih.
Palo Alto, 1972. Vani je Amerika u fazi kolektivnog disko-transa i Pong-groznice — klinci u salonima zure u bijelu točkicu koja skakuće preko crne pozadine i to im je vrhunac tehnologije, budućnost u obliku dvije crte i jedne loptice. A na brdu iznad Stanforda, u zgradi koja izgleda kao da je arhitekt dobio zadatak da projektira nešto što NIJE ured, sjedi hrpa ljudi na vrećama punjenim stiroporom i raspravlja o računalima kao da su živa bića.
To je Xerox PARC. Nema kravata, nema kancelarija s pregradama, nema šefa koji stoji nad tobom i broji koliko si kartica izbušio na sat (tako se tada unosio program u računalo — rupice na papirnatoj kartici, umjesto tipkanja na ekran). Ima vreća za sjedenje, ima ploča prepunih dijagrama koje bi ti, da nisi jedan od njih, izgledale kao nacrt za brodolom, i ima buke — ne one uredske buke kucanja po tipkovnici, nego buke rasprave: vika, netko negdje dovikuje da je ideja glupa, netko drugi da je genijalna, i oboje su jednako uvjereni.
Usred toga hoda čovjek s kartonskom kutijom u rukama — zove se Alan Kay, i za par desetljeća će mu se ta scena prepričavati kao legenda. Ne metaforički — stvarno s kartonskom kutijom, izrezanom i oblikovanom da podsjeća na nešto što u tom trenutku ne postoji nigdje na svijetu, ni u jednom laboratoriju, ni u jednoj tvornici. Tanka ploča, veličine bloka za crtanje, s izrezanim ekranom od folije i tipkovnicom nacrtanom flomasterom. Drži je kao da je stvarna. Priča o njoj kao da je stvarna.
„Ovo”, kaže, „će jednog dana nositi djeca u školskim torbama.” Netko se nasmije. Ne zlobno — više onako, ajde, Alan opet maštari. Godina je kad računalo zauzima pola sobe i zahtijeva klimu jaču od one u kinu, a on stoji tu s kartonom i tvrdi da će to isto računalo, ili nešto pametnije od njega, stati u ruku desetogodišnjaka i da će ga to dijete voljeti kao što voli bojice.
Nitko u toj sobi te 1972. godine ne zna da će ta kartonska maketa, rekvizit sklepan od kutije za cipele i mašte, za dvadesetak i nešto godina postati stvar koju će pola planeta nosati u torbi preko ramena. Nitko ne zna ni da će čovjek koji je danas najglasniji u sobi, onaj koji viče o djeci i medijima dok drugi crtaju sklopove, ostati u sjeni tih drugih kad se priča počne prepričavati.
Ali za sad je 1972., vani je disko, unutra su vreće za sjedenje, i Kay hoda po hodniku s budućnošću u rukama, napravljenom od kartona, jer ništa drugo za to još ne postoji.
Alan Kay je s tri godine već čitao. Slova, ne note — mama mu je bila glazbenica, tata biolog, i klinac je odrastao gledajući dvije potpuno različite vrste jezika u istoj kući: onaj koji opisuje kako nešto zvuči, i onaj koji opisuje kako nešto živi. Ako ti ovo zvuči kao uvod u priču o čudu od djeteta koje je u dvanaestoj godini već programiralo računala — nije. Računala u to doba još nisu bila stvar koju obična djeca dodiruju. Kay je prvo bio glazbenik, ozbiljno, profesionalno, svirao je gitaru po klubovima da plati fakultet. Tek onda je, zaobilaznim putem koji je uključivao vojsku, biologiju i hrpu predmeta koji na papiru nemaju nikakve veze s informatikom, došao do onoga za što će ga pamtiti.
Doktorirao je na Sveučilištu Utah, jednom od one šačice mjesta gdje se u kasnim šezdesetima uopće moglo doktorirati iz nečega što je tek trebalo dobiti ime. Njegova disertacija bavila se, grubo rečeno, time kako bi računalo trebalo izgledati ako želimo da s njim rade djeca — ne inženjeri, ne vojska, ne računovođe u čeličnim sivim zgradama, nego dijete od deset godina koje želi nacrtati kravu ili napisati priču. To je 1969. bila poprilično čudna ideja. Računala su bila skupa kao kuća, veličine sobe, i posluživala su isključivo odrasle muškarce u kravatama koji su ih hranili karticama. A Kay je gledao u tu istu kutiju sklopova i vidio — dijete s olovkom. Baš u to doba počeo je razvijati i ideju koja će kasnije dobiti ime »objektno orijentirano programiranje« — zamisao da se program ne piše kao jedna duga lista naredbi, nego kao skup malih, samostalnih djelića koji međusobno razmjenjuju poruke, svaki zadužen samo za svoj mali dio posla.
Ovdje treba spomenuti biologiju, jer nije usputna crtica u biografiji — dala mu je rječnik za cijeli kasniji rad. Kayev tata je proučavao stanice, one mikroskopske vreće koje ne znaju ništa o cijelom tijelu, ali komuniciraju s susjednim stanicama porukama, i iz te gomile lokalnog neznanja izlazi funkcionirajući organizam. Tu ideju je Kay oljuštio od biologije i zalijepio na programiranje — sjećaš se onih malih, samostalnih djelića koda koji razmjenjuju poruke i ne znaju ništa izvan svog djelokruga, spomenutih maloprije? Otud su došli. Zvuči poznato? Trebalo bi — to je sjeme cijelog Smalltalka, do kojeg dolazimo za dvije sekcije. Za sad samo zapamti: čovjek koji je smislio objektno orijentirano programiranje nije gledao u druge programere. Gledao je u stanice.
I tu se, zapravo, poglavlje tek otvara. Imaš glazbenika koji je postao biolog koji je postao filozof stanica koji je postao — što točno? Xerox mu neće dati jasnu titulu, kolege ga zovu vizionarom kad su ljubazni i sanjalicom kad nisu, a on sam sebe najradije opisuje kao nekoga tko pravi alate za djecu. Ali prije nego stignemo do djece, do Smalltalka i do onog kartonskog modela koji je nosio po hodnicima PARC-a govoreći ljudima da će ga jednog dana svako dijete imati u torbi, treba samo zapamtiti odakle je krenuo. Ne iz informatike. Iz note i stanice.

Dynabook: tablet 1972.
1972. godina, i Alan Kay šeta hodnicima Xerox PARC-a — istraživačkog laboratorija Xeroxa u kojem se u to doba kuha budućnost računalstva, od grafičkog sučelja do miša — s predmetom koji izgleda kao da ga je netko izrezao iz kutije za cipele. Zato što jest. Kartonski model, veličine bilježnice, s nacrtanim zaslonom i nacrtanom tipkovnicom — dovoljno lagan da ga nosiš pod rukom, dovoljno tanak da ga strpaš u torbu. Nema u njemu ni jednog tranzistora. Zove ga Dynabook, i objašnjava kolegama, s ravnim licem, da je to računalo koje će jednog dana svako dijete imati sa sobom u školi.
Ovo je bitno shvatiti: Kay nije čekao da tehnologija dostigne ideju, pa onda napisao specifikaciju. Napravio je obrnuto. Prvo je zamislio čemu bi to trebalo služiti — pa onda zapisao, crno na bijelo, kakav uređaj bi to morao biti, unaprijed znajući da ništa od potrebnih dijelova još ne postoji u dovoljno maloj i dovoljno jeftinoj varijanti. Poluvodiči premali, memorija preskupa, zaslon koji bi trebao biti raven i lagan još ni u planovima. Nije mario. Specifikacija je pisana iz vizije, ne iz kataloga dijelova — nešto što u inženjerskim krugovima zvuči kao herezu, i jest, samo je ta hereza tri desetljeća kasnije postala Silicijska dolina.
A vizija je bila čudna za to doba, i to iz jednog konkretnog razloga: računalo, po Kayevoj glavi, nije alat za činovnika koji unosi brojeve u tablicu plaća. Računalo je medij. Kao knjiga, kao papir, kao boje. Nešto na čemu djeca crtaju, pišu priče, simuliraju svjetove, uče razmišljajući — a ne nešto što im netko dodijeli za obradu podataka kad odrastu i zaposle se u osiguravajućem društvu. Godine 1972., kad je „računalo” značilo ormar u klimatiziranoj sobi kojem se obraćaš preko posrednika u laboratorijskom mantilu, ovo je zvučalo kao znanstvena fantastika napisana od nekoga tko previše čita znanstvenu fantastiku.
Skoči sad gotovo četrdeset godina unaprijed i stavi Kayevu kartonsku skicu pored fotografije prve prezentacije iPada iz 2010. Isti oblik: ravna ploča, ekran preko cijele površine, bez tipkovnice koja strši, veličina za nošenje pod rukom. Steve Jobs je, htio ili ne, izvadio Kayev crtež iz ladice i pretvorio ga u aluminij i staklo — i sam je to dovoljno dobro znao da je Kaya povremeno pozivao na razgovor, samo da čuje njegovo mišljenje o vlastitom proizvodu. Oblik je pogođen skoro do detalja. Ono što nije pogođeno je duh.
Kayev Dynabook je bio uređaj na kojem dijete otvara stroj, gleda mu unutra, mijenja kako radi, piše svoj program da provjeri hoće li ideja upaliti. Medij za stvaranje. iPad je, uz svu slavu, ispao briljantan uređaj za primanje — čitanje, gledanje, dodirivanje ikonica koje je netko drugi programirao u zatvorenom vrtu App Storea. Blizu je oblika, dalje je od poante nego što izgleda na prvi pogled, i to je razlika koja Kaya, po vlastitim riječima, nije previše razveselila kad je konačno vidio što je od njegove ideje ostalo na tržištu.

Smalltalk: sve je objekt
Evo srca cijele priče — ono zbog čega Kay uopće zaslužuje poglavlje, a ne fusnotu. Smalltalk. Zvuči kao naziv za dosadan poslovni seminar, a zapravo je jedna od najradikalnijih ideja u povijesti softvera — i to kaže čovjek koji je vidio Xerox Alto uživo, dakle znao je prepoznati čudo kad ga vidi.
Zaboravi na trenutak sintaksu, zagrade, tipove, sve što te na fakultetu informatike nagnalo da posumnjaš u vlastite životne odluke. Kayeva ideja bila je bliža biologiji nego matematici, i to nije metafora koju je izmislio marketing, nego kako je on stvarno razmišljao. Studirao je matematiku i molekularnu biologiju prije nego što je doktorirao iz računarstva, i cijeli koncept objekta u Smalltalku pokušaj je da se program organizira kao živi organizam, a ne kao lista naredbi.
Zamisli stanicu u tvom tijelu. Ne znaš, i ne treba te biti briga, kako susjedna stanica interno proizvodi neki hormon. Ona ima svoju membranu, svoju unutrašnjost koju ti ne vidiš, i s njom komuniciraš isključivo signalima koje šalješ preko te membrane. Pošalješ poruku, stanica je primi, obradi je svojim internim mehanizmima o kojima nemaš pojma, i vrati odgovor. To je to. To je cijeli Smalltalk. Svaki »objekt« u kodu je takva stanica: ima svoje podatke skrivene unutra, i jedini način da s njim nešto radiš je da mu pošalješ poruku. Ne pozivaš funkciju, ne čačkaš mu unutrašnjost, ne vučeš mu podatke silom — pitaš ga lijepo, a on odluči kako će odgovoriti.
Ali bilo je još čudnije od toga, i tu dolazimo do dijela koji danas zvuči skoro nemoguće. Smalltalk nije bio jezik koji pišeš, spremiš, kompiliraš (to jest, prevedeš u oblik koji računalo razumije), pokreneš, gledaš da puca, pa se vratiš i popraviš. Bio je *živi* sustav. Cijelo okruženje bilo je uključeno, u pogonu, dok si ga mijenjao. Vidiš grešku u ponašanju nekog objekta na ekranu — otvoriš njegov kod, tu, unutar iste sesije, promijeniš metodu, i sustav odmah nastavi raditi s novom verzijom. Ne restartaš ništa. Program se ne gasi da bi se promijenio, on se mijenja dok dišeš u njega.
Danas to zovemo hot reload, live editing, REPL-driven development (radi se o pisanju koda u nekoj vrsti interaktivne konzole koja odmah izvršava svaku naredbu, umjesto da čekaš da se cijeli program prevede i pokrene), i prodaje se kao inovacija neke nove frontend biblioteke ili Lisp okruženja za entuzijaste. Kay je to imao gotovo pola stoljeća prije, na stroju koji je po današnjim mjerilima sporiji od tvog termostata. Nije to bio trik ni sporedna fora — bila je to filozofija: programer i program nisu odvojeni, ne postoji »faza pisanja« i »faza korištenja«, postoji samo neprekinuti razgovor.
I sad dolazimo do dijela koji je pravi paradoks, i koji Kaya sigurno nervira do dana današnjeg. On je izmislio termin „objektno orijentirano programiranje” (object-oriented programming). Njegov termin, njegove riječi, ušao je u svaki udžbenik, svaki razgovor za posao, svaku raspravu na forumima gdje se ljudi svađaju je li nasljeđivanje dobro ili loše. Problem je što kad je čitav svijet uzeo taj termin i sagradio na njemu C++, pa Javu, pa polovicu moderne industrije, on je otvoreno rekao da to nije to što je on mislio. Citat koji se prenosi, i vrijedi provjeriti izvor prije konačnog otiska, glasi otprilike: „Izmislio sam termin objektno orijentirano, i mogu ti reći da nisam mislio na C++.”
I tu negdje, ako se malo odmakneš, vidiš cijelu tragikomediju ovog čovjeka. Nije da je pogriješio u ideji. Ideja je bila toliko dobra da je promijenila kako cijeli planet piše softver. Problem je što je svijet uzeo oblik, a ispustio dušu — uzeo je sintaksu objekata, a ostavio je iza sebe onu biološku, gotovo poetsku zamisao o razgovoru umjesto naredbe. Konkretno, to znači da su C++ i Java od Smalltalka posudili riječ „objekt” i ideju da se podaci i funkcije pakiraju zajedno, ali su izgubili onaj neprekinuti razgovor programera i programa o kojem je bilo riječi — u njima ne možeš uživo, dok program radi, promijeniti kako se nešto ponaša i odmah vidjeti rezultat, program se mora zaustaviti, prevesti i pokrenuti ispočetka. Izgubili su i Kayevu ideju objekta kao potpuno zatvorene, žive stvarčice koja sama odlučuje kako će odgovoriti na poruku, umjesto obične kutije s podacima kojoj netko izvana čeprka po unutrašnjosti. Smalltalk ostaje kao dokaz da je moguće drukčije, samo što drukčije nikad nije bilo dovoljno brzo, dovoljno jeftino, ili dovoljno razumljivo menadžeru koji plaća račune.

Djeca kao mjerilo
Alan Kay je imao pravilo koje je zvučalo skoro pa uvredljivo za sve inženjere u zgradi: ako dvanaestogodišnjak ne može nešto napraviti u tvom sustavu, sustav je loš. Ne dijete. Sustav. Ovo se danas čini kao fina, plišana rečenica za marketinški slajd, ali u Xerox PARC-u sredinom sedamdesetih to je bila radikalna, gotovo uvredljiva teza. Jer je značila da inženjer, taj isti čovjek koji je upravo tri tjedna proveo optimizirajući garbage collector (onaj dio programa koji sam čisti memorijsko smeće, da programer to ne mora raditi ručno), treba svoj rad predati na ocjenu klincu koji jedva zna tablicu množenja.
I to nije bila metafora. Kay je stvarno dovodio djecu u zgradu — prava djeca, iz prave okolne škole, sjedila bi ispred Alta (jednog od prvih osobnih računala s grafičkim sučeljem, još jedne PARC-ove izmišljotine o kojoj bi trebala postojati zasebna knjiga) i pokušavala u Smalltalku nacrtati kornjaču koja hoda po ekranu, ili natjerati lik na ekranu da svira melodiju. Ne zato što je Kay htio dokazati da su djeca genijalna — htio je dokazati suprotno: da su odrasli inženjeri navikli na bol toliko da je više ne prepoznaju kao bol.
Zamisli da ti je cijeli život netko govorio da je hodanje po žeravici normalno, jer svi hodaju po žeravici, pa se onda čudiš zašto ti dijete koje nikad nije hodalo po žeravici odbija ući u vatru. E, to je bio odnos programera i tadašnjih programskih jezika. Klinac koji sjedne pred Fortran ili tadašnji C ne kaže »oh, moram naučiti sintaksu« — kaže »ovo nema smisla« i ustane. Kay je smatrao da je klinac u pravu, a jezik krivac.
Djeca su, dakle, postala mjerni instrument. Ne fokus grupa u marketinškom smislu — pravi laboratorijski uređaj, poput termometra. Ako dijete napravi grešku, ta se greška ne bilježi kao „dijete je glupo”, nego kao „ovdje je sustav postavio zamku”. Kay i njegov tim (uključujući Adele Goldberg, koja je vodila velik dio tih eksperimenata i zaslužuje vlastito poglavlje koje ovo nije, ali zapamti to ime) satima su gledali djecu kako se muče s naizgled trivijalnim stvarima i onda su te trivijalne stvari mijenjali u samom jeziku. Ne u priručniku. Ne u uputama. U jeziku.
To je obrnuto od skoro svega što se u industriji radilo prije i poslije. Uobičajeni put je: napraviš alat prema tome što je tehnički elegantno ili lako izvedivo, pa onda napišeš debeli priručnik da objasniš zašto je to elegantno. Kay je krenuo od djeteta unatrag — kakav bi jezik morao biti da ga dijete razumije bez priručnika? Odgovor je, začudo, bio jezik u kojem su objekti nešto poput likova s kojima pregovaraš, a ne registri koje puniš brojevima. Poruke, ne naredbe. Skoro pa razgovor, ne diktat.
Linija odavde do danas nije apstraktna. Scratch, onaj vizualni jezik s blokovima koji djeca posložuju kao Lego kockice u školama po cijelom svijetu, nastao je na MIT-u kod Mitchela Resnicka — koji je, gle čuda, radio doktorat baš u krugovima koje je Kay oblikovao i koji otvoreno govori o dugu prema idejama iz PARC-a. Ista logika: krivo je pitati zašto dijete ne razumije petlju (onu naredbu koja programu kaže „ponavljaj ovo dok ne kažem stop”, kao kad bi mami rekao „stavljaj mi jastuke na krevet dok ih ne bude deset”), treba pitati zašto smo petlju napravili tako da mora biti nerazumljiva. Scratch nema toliko toga zajedničkog sa Smalltalkom u sintaksi, ali ima identičan moralni kompas — dijete je porota, ne optuženi.
Ironija je da je taj isti kompas kasnije nestao iz većine profesionalnog softvera koji se pravio »za odrasle«, gdje se složenost odjednom smatrala vrlinom — dokazom da si dovoljno pametan da zaslužiš alat. Kay bi na to rekao da je svaka industrija koja proglasi zbunjenost korisnika njegovom krivnjom industrija koja je prestala učiti od djece — a onda se čudi zašto joj proizvodi trebaju priručnike deblje od telefonskog imenika.

Prorok bez proizvoda
Sad presuda. Smalltalk kao proizvod je propao. Ne propao kao Betamax — onaj videokasetni format koji je izgubio bitku s VHS-om, ali je izgubio dostojanstveno, ostao u sjećanju svih koji su ga voljeli kao 'onaj bolji koji nije pobijedio' — Smalltalk je propao tiho, u laboratorijskim uvjetima, kao pokus koji nikad nije izašao iz staklenke. Trebao ti je stroj kojeg 1979. skoro nitko nije imao, Xerox ga nikad nije stavio na tržište kako treba, a kad je konačno pokušao prodati nešto slično svijetu, taj svijet je gledao Apple i IBM, ne Xerox. Alan Kay je izgradio sustav koji je bio deset godina ispred svakoga — i to je, ironično, bio najveći problem. Deset godina ispred znači da nitko osim tebe ne zna zašto je to dobro.
Pa dobro, propao proizvod, kažeš, i onda? Pa onda pogledaj oko sebe. Grafičko sučelje kojim upravo, ne razmišljajući, vučeš prozore i klikaš ikone — to je Smalltalkovo okruženje, samo dotjerano i prodano. Objektno orijentirano programiranje, kojim se danas piše otprilike sve što nije ugrađeno u perilicu rublja — Kayeva ideja, samo skinuta s njegovog »živog sustava« i zašivena u jezike koji ne dopuštaju ni pola te fleksibilnosti. MVC, taj obrazac »model – prikaz – kontroler« koji svaki junior programer nauči prije nego skuži zašto uopće postoji — izmišljen je u Smalltalk timu, jer su morali nekako razdvojiti podatke od prikaza kad je sve odjednom postalo objekt koji šalje poruke drugim objektima. Integrirano razvojno okruženje, u kojem danas pišeš, pokrećeš, otklanjaš greške i mijenjaš kod bez da ugasiš program — to je ideja »živog sustava« iz PARC-a, gdje se program nikad ne zaustavlja da bi ga popravio, nego ga mijenjaš dok radi, kao da mijenjaš gumu na autu koje se i dalje vozi. Trideset godina kasnije to se doima kao normalna stvar, a tada je bilo čudo.
I to je, u biti, žulja i tebe, svakog dana kad otvoriš IDE koji ti javi grešku prije nego stigneš i pokrenuti program, ili kad refaktoriraš funkciju i sve što je koristi se samo od sebe prilagodi — to je taj isti Kayev živi sustav, samo naslijeđen kroz pet generacija alata koji više nisu ni znali čiji je to zapravo bio san.
Dakle, presuda glasi ovako: proizvod — kriv, propao, nikad nije stigao na tržište. Utjecaj — oslobođen, svugdje, do dana današnjeg. To je čudna vrsta pravde koju povijest dijeli — čovjek koji je izgubio bitku za police u dućanu, a dobio rat za oblik cijele industrije.
Rečenica koju je Kay ponavljao — najbolji način predviđanja budućnosti je izmisliti je — zvuči kao stvar za poster u startup uredu, uz fotografiju planinskog vrha i uskličnik. Ali kod njega ta rečenica nije marketing, nego opis posla koji je stvarno radio: gradio je stvari koje tržište još nije tražilo, jer je znao da će ih tražiti čim mu netko drugi objasni zašto su korisne. Samo taj netko drugi obično nije bio on — bio je Steve Jobs, koji je 1979. došao u PARC, vidio sučelje i otišao kući s idejom koja će za nekoliko godina imati logo jabuke na sebi.