COBOL (1959)

Jezik koji je trebao umrijeti do 1980., a i danas ti tiho vrti plaću i mirovinu — pišu ga penzioneri, plaća ih strah.

poglavlje 20/3418 min čitanja∞ – 1969
ti@kronika:~$ ./sviraj K1_20_cobol.mp3

# da, poglavlje ima pjesmu. ne, nitko ne zna zašto.

Godina 1959. Ako si muškarac u sivom flanelskom odijelu i radiš na četrdesetom katu neke banke u New Yorku, život ti izgleda kao reklama za cigarete. Ručaš tri sata, piješ tri martinija i vraćaš se u ured s uvjerenjem da je svijet tvoj — jer, u neku ruku, i jest. Amerika je u tom desetljeću jedina velika ekonomija na planetu koja nije upravo bombardirana, obnavljana ili okupirana, i to se osjeti u svakoj sekretarici koja kuca sto riječi u minuti dok joj šef diktira memorandum o „sinergiji odjela”.

Ispod tog glamura, u podrumima i na drugim katovima gdje se ne fotografira za Life magazine, odvija se rat papira. Osiguravajuće društvo ima milijun polica. Banka ima milijun štednih računa. Svaka promjena kamatne stope, svaka nova premija, svaki umrli osiguranik znači vojsku činovnika koja ručno prepisuje brojke iz jedne knjige u drugu, provjerava, potpisuje, arhivira. To nije administracija. To je proizvodna linija, samo umjesto automobila s nje silaze formulari.

I onda netko u upravi čuje riječi »elektronička obrada podataka« i osjeti nešto što inače osjeti samo kad kupi novi Cadillac. Računalo u podrumu (još) nije o brzini. Je o statusu. Konkurencija u susjednoj zgradi upravo je stavila stroj vrijedan pola milijuna dolara u prizemlje i pozvala novinare da ga fotografiraju. Ti ne možeš zaostati. Nije bitno hoće li se stroj isplatiti za deset godina — bitno je da predsjednik uprave na godišnjoj skupštini dioničara može reći da je tvrtka »na čelu tehnološke revolucije«. Računovodstvo se time bavi poslije.

Dok direktori računaju koliko će ih stajati ugled ako novi stroj NE kupe, u podrumu sjedi vojska ljudi s računskim strojevima i rukopisom urednim kao u knjigovodstvenom udžbeniku, i osjeća nešto sasvim drugo od uzbuđenja. Tihu, neizrečenu, ali savršeno racionalnu panику — pardon, paniku. Ako stroj može zbrojiti platne liste brže nego pedeset njih zajedno, što je onda njihov posao za pet godina? Pitanje se ne postavlja naglas na sastancima — to bi bilo nekulturno, kao pitati kolegu koliko zarađuje — ali svatko ga misli dok gleda kako serviseri u bijelim kutama unose nove ormare pune elektronike na kat gdje su do jučer stajali njihovi stolovi.

Problem je, doduše, malo suptilniji nego što mašta o robotima koji kradu posao dopušta. Ti novi strojevi — mastodonti tvrtki IBM i Sperry Rand, veličine ormara, puni elektronskih cijevi (zamisli žarulje koje umjesto svjetla proizvode računanje — to je, u grubo, bila glavna komponenta računala prije nego što su izumljeni tranzistori, i bila je velika, spora i strašno nepouzdana, pa se cijeli stroj znao ugasiti samo zato što je jedna od tisuća cijevi pregorjela kao žarulja u kuhinji) — međusobno se ne razumiju. Svaki proizvođač ima svoj jezik, svoj dijalekt, svoju vlastitu malu religiju o tome kako se piše softver. To je kao da svaki mobitel danas ima svoj jedinstveni punjač koji ne odgovara nijednom drugom, samo umjesto punjača ovdje je cijeli program koji si platio da ga netko napiše. Kupiš stroj od jedne firme, plaćaš programere da napišu sav softver iznova. Kupiš stroj od druge — plaćaš ih da to opet napišu, od nule, jer prijašnji kod ne vrijedi ni papira na kojem je otisnut.

Ispalo je da je, na kraju, taj trošak prepisivanja skuplji od plaća svih onih činovnika koje su ti strojevi trebali zamijeniti. I baš tu, u toj hladnoj računici, netko je konačno postavio pitanje koje bi trebalo stajati urezano nad vratima svake softverske tvrtke na svijetu: a što ako jednom napišemo kod — i to učinimo tako da ga možemo koristiti bez obzira koji nam sljedeći put stroj i proizvođač naplati?

Godina je 1959., i ako radiš u informatičkom odjelu neke veće američke kompanije, imaš vlastiti probni kamen za mjerenje tuge: koliko si puta već prepisao isti program. Ne popravio, ne unaprijedio — prepisao, od nule, riječ po riječ, jer je firma kupila novi stroj. IBM 704 ode, IBM 705 dođe, i softver koji je jučer zbrajao plaće ide u koš, jer 705 ne razumije ni slovo onoga što je 704 čitao cijeli život.

Zvuči apsurdno, i jest, ali logika iza toga nije bila glupost — bila je poslovni model, i to prilično lukav. Svaki proizvođač računala u to doba pravio je svoj vlastiti jezik za svoj vlastiti stroj, jer zašto ne bi? Nema standarda koji bi ga tjerao na drugačije, a zatvoreni ekosustav znači da kupac ne može lako otići konkurenciji — malo kao kad kupiš punjač koji stane samo u jedan model mobitela, pa onda kupuješ isključivo taj brend dok ti ne dosadi. Kupiš IBM-ov stroj, pišeš u IBM-ovom jeziku, i ako ti IBM sljedeće godine ponudi novi model — bolji, brži, jeftiniji po operaciji — čeka te lijep mali porez koji nitko ne zove porezom: cijeli tvoj softver treba ponovno napisati, od nule. Firme su to zvale »trošak migracije«. Točnije ime bilo bi otkupnina.

Sad zamisli tu situaciju, ali umnoženu za organizaciju koja u to doba kupuje više računala nego bilo koji drugi entitet na planetu — američko Ministarstvo obrane. Pentagon nije naručivao jedno računalo, naručivao ih je desetke, po različitim granama vojske, od različitih proizvođača, za različite zadatke: logistiku, plaće, upravljanje zalihama, balistiku (odnosno računanje kamo će pogoditi projektil, što je, uzgred, jedan od razloga zašto su računala uopće i nastala). Riječ je o takozvanim mainframeovima — ogromnim, sobu ispunjavajućim strojevima koji su u to doba bili sve što je »računalo« mogao značiti, dok se pojam kućnog ili osobnog računala nije ni sanjao. Svaka grana imala je svoj ugovor, svaki ugovor svoj stroj, svaki stroj svoj jezik. Rezultat: vojska najveće industrijske sile na svijetu plaćala je stotine timova programera da rade, u suštini, isti posao — pisanje logike za obradu podataka — u desetak potpuno nekompatibilnih dijalekata, koji jedan s drugim nisu mogli razmijeniti ni redak koda.

Ovo nije bila greška u sustavu. Ovo je bio sustav — i bio bi ostao takav dovijeka, jer nijedan proizvođač nije imao ni najmanji razlog da ga mijenja, dok najveći kupac na svijetu, Pentagon, nije sasvim logično sjeo i počeo računati koliko ga sve to zapravo košta.

CODASYL odbor i duh Grace Hopper
§ 02

CODASYL odbor i duh Grace Hopper

Pentagon je 1959. imao problem koji nije bio tehnički, nego knjigovodstveni. Svaki put kad bi neka vojna agencija kupila novi stroj, cijeli softver se pisao iznova, od nule, jer je prethodni bio napisan za sasvim drugi dijalekt. To je značilo dvostruko, trostruko plaćanje za isti posao — jednom inženjerima koji su ga smislili, pa opet, pa opet svaki put kad bi baza bila nadograđena. Ministarstvo obrane je tada napravilo ono što ministarstva obrane najbolje rade kad im nešto financijski smeta: sazvalo je sastanak. Konferenciju. Odbor. Zove se CODASYL — „Conference on Data Systems Languages” — i zvuči kao nešto što bi trebalo rješavati velika filozofska pitanja o računalstvu. U stvarnosti je to bio pokušaj da se državni novac ne baca na prepisivanje istog koda dvadeset puta godišnje. Iz tog odbora izašao je COBOL — kratica za „Common Business-Oriented Language”, dakle „jezik za poslovne svrhe” — ime koje već u startu jasno govori kome je namijenjen: ne znanstvenicima ni inženjerima, nego ljudima koji vode knjige, plaće i zalihe.

Odbor nije krenuo od nule. Postojala je već jedna radna verzija — FLOW-MATIC, jezik koji je za računalo UNIVAC napisala Grace Hopper, žena koja je, usput budi rečeno, i popularizirala izraz »debugging« (od engleske riječi »bug«, kukac) nakon što je iz stroja fizički izvadila moljca koji je zaglavio među relejima i izazvao kvar. FLOW-MATIC je bio prvi jezik koji je izgledao pomalo kao engleski, umjesto kao gomila brojeva i skokova. Hopper je vjerovala u nešto što je 1959. zvučalo skoro subverzivno: da programski jezik ne mora biti privilegija matematičara, da ga treba pisati tako da ga i računovođa razumije na prvo čitanje. CODASYL nije izmislio tu ideju — posudio ju je, u paketu, zajedno s dijelovima sintakse. Hopper formalno nije bila u odboru koji je pisao specifikaciju, ali njezin duh je lebdio nad svakim sastankom kao netko čije ideje svi koriste, a čije ime rijetko spominju na naslovnoj stranici.

CODASYL je bio upravo taj proces na djelu. Za stolom su sjedili predstavnici i predstavnice IBM-a, Sperry Randa, Sylvanije, RCA-a, američke vojske i još desetak organizacija, svaka sa svojim interesom, svaka uvjerena da baš njezin postojeći jezik, ili barem njezina filozofija, treba pobijediti. Nitko nije htio da COBOL bude bolji od njegovog vlastitog proizvoda — svi su htjeli da COBOL bude dovoljno sličan njihovom rješenju da prijelaz na njega ne boli, a dovoljno drugačiji od tuđeg da konkurent izgubi prednost. Rezultat je jezik pun kompromisa koje nijedan inženjer, prepušten sam sebi, ne bi ni odabrao: rečenice duge kao novinski članak, gramatika koja pokušava zvučati kao engleski pa odustane na pola puta, struktura istovremeno prejednostavna za prave programere i presložena za obećane menadžere koji je, uostalom, nikad neće ni otvoriti.

Ali — i ovo je ključno, jer je ovo poglavlje o novcu, a ne o estetici — ekonomski kompromis bio je genijalan. Nije trebalo da COBOL bude lijep, trebalo je samo da bude dovoljno prihvatljiv svima da ga svi prihvate. Jezik koji bi netko dizajnirao sam, čist i elegantan, imao bi možda pola sata slave na nekoj konferenciji i onda bi umro, jer ga tri najveće računalne kompanije u zemlji ne bi implementirale na svojim strojevima. Kamila ne izgleda kao konj, istina, ali kamila preživi pustinju u kojoj konj ugine trećeg dana. CODASYL nije pokušavao dizajnirati najbolji jezik na svijetu — dizajnirao je jezik koji nitko neće imati razloga odbiti, a to je, kad plaćaš račune, mnogo vrjednije svojstvo od elegancije.

ADD SALARY TO TOTAL
§ 03

ADD SALARY TO TOTAL

Evo rečenice koja je, u svoje vrijeme, trebala biti prava revolucija: ADD SALARY TO TOTAL. Ne C = A + B, ne mutne kratice koje razumije samo onaj tko ih je napisao — nego rečenica koju možeš pročitati naglas, u uredu, pred šefom koji nikad u životu nije programirao, i on će shvatiti o čemu se radi bez ijedne godine studija. Zbrajaš plaću u ukupno. Genijalno u svojoj jednostavnosti — i, što je za priču koju pratimo puno važnije, genijalno prodavano.

Jer čitljivost u COBOL-u nije bila samo inženjerska odluka, bila je marketinška poruka, i to jedna od najuspješnijih u povijesti softvera. Grace Hopper i odbor CODASYL znali su kome prodaju jezik: ne programerima, njih je bilo malo i bili su jeftini, nego direktorima koji potpisuju ugovore o kupnji strojeva vrijednih milijune dolara. A direktor se ne uvjerava elegancijom algoritma. Direktor se uvjerava rečenicom koju razumije bez prevoditelja.

Ali evo caka — i ovo je najvažniji dio priče o novcu: nije bilo ni bitno je li mit istinit. Bilo je bitno da se prodaje. Jer rečenica poput ADD SALARY TO TOTAL izgleda sjajno na sastanku uprave. Izgleda sjajno u brošuri koju IBM-ov prodavač ostavlja na stolu potpredsjednika banke. Izgleda kao kontrola — kao da uprava, koja ne razumije ni bit ni bajt, ipak ima uvid u ono što se događa u onoj hladnoj sobi s mainframeom, gdje inženjeri u bijelim kutama rade nešto nerazumljivo skupo.

Zamisli, za usporedbu, kod pisan u nekom starijem stilu — u asembleru, niskorazinskom jeziku kojim su se strojevi programirali prije COBOL-a, sastavljenom od kratica i adresa u memoriji — gdje bi ista operacija mogla izgledati kao MOV AX, [0x14] pa ADD AX, [0x18]. Direktoru osiguravajućeg društva to je čisti egipatski hijeroglif, i ne treba ga razumjeti, ali osjeća se izigranim, kao da plaća za crnu kutiju. COBOL rečenica, čak i kad je dio golemog i zapravo nerazumljivog sustava, djeluje kao providno staklo. Taj osjećaj providnosti — ne stvarna providnost — jest ono što je prodavalo licence i uvjeravalo odbore da odobre budžet.

I tu je zanimljivo: cijena te iluzije nije bila mala. COBOL kod je, upravo zbog inzistiranja na engleskim riječima i punim rečenicama, fizički enormno duži od jezika koji su ga okruživali. Više redaka znači više vremena za pisanje, više vremena za testiranje, više papira za printane izvještaje o kodu — a memorija i vrijeme na mainframeu šezdesetih nisu bili jeftini, plaćali su se po minuti i po bajtu. Firma je, u praksi, plaćala nešto skuplje po retku da bi direktor imao osjećaj kontrole koji nikad nije iskoristio. Skupa terapija za nervoznu upravu, naplaćena kroz IBM-ov račun za iznajmljivanje stroja.

Ono što je čitljivost stvarno donijela — i tu mit prestaje biti čista prevara — jest da je novi programer, doveden s ulice i naučen za tri mjeseca umjesto tri godine, mogao preuzeti tuđi kod i ne poludjeti odmah. To je stvarna, mjerljiva ušteda. Samo nije bila ušteda koju je uprava mislila da kupuje kad je čitala tu rečenicu na sastanku. Kupovala je osjećaj. Dobila je nešto drugo, korisnije, ali potpuno drugačije — jeftiniju radnu snagu umjesto transparentnog uvida. Prodavač je uzeo novac za jedno, isporučio drugo, i nitko se nije žalio, jer je i to drugo, na kraju, bilo vrijedno svake naredbe.

Kako COBOL osvaja svijet
§ 04

Kako COBOL osvaja svijet

Evo ključne stvari koju svaka priča o COBOL-u preskoči, a bez koje cijela stvar ne ima smisla: COBOL nije pobijedio zato što je bio bolji jezik. Pobijedio je zato što je jedan kupac imao toliko novca da je mogao diktirati uvjete cijeloj industriji, a taj kupac se zvao Ministarstvo obrane Sjedinjenih Američkih Država.

Zamisli da si 1960. proizvođač računala. IBM, Honeywell, RCA, Univac — svi se guraju za iste kupce, i svi imaju taj mali problem: svaki njihov stroj priča svojim jezikom, pa kupac koji promijeni proizvođača mora prepisati sav softver. To je super za tebe kao prodavača — kupac je zaključan kod tebe jer bi promjena proizvođača značila bacanje svega što je već napisano i početak iz nule (taj trik danas ima ime, vendor lock-in, samo je izmišljen pola stoljeća prije nego što mu je netko dao naziv). Loše za kupca. A najgori mogući kupac za taj trik, ono najgore što ti se može dogoditi, je kupac koji je toliko velik da može promijeniti pravila igre umjesto da ih trpi.

Pentagon je bio upravo takav kupac. Najveći kupac računala na planetu, s ugovorima koji su se brojali u desecima tisuća strojnih dana godišnje, razbacan po bazama, brodovima i uredima koji svi moraju međusobno razmjenjivati podatke o plaćama, logistici, zalihama. Kad je taj kupac rekao dobavljačima jednu jedinu rečenicu — nema COBOL-a, nema ugovora — cijela industrija se ukočila kao vojnik na paradi.

I zato je IBM — koji je do tog trenutka guralo svoj vlastiti jezik COMTRAN, vlastito rješenje slično COBOL-u, kojim je htio nametnuti svoju verziju standarda prije nego što je shvatio da je pametnije podržati zajednički — iznenada postao jedan od najvećih zagovornika COBOL-a. Ne iz ljubavi prema odborskom jeziku pisanom na kompromisima, nego zato što je najveći kupac na svijetu upravo rekao što želi kupovati. Ovo je ono što ti ekonomija tržišta ne pokaže u udžbeniku: standard koji pobjeđuje nije nužno onaj tehnički najbolji, nego onaj koji ima najveći novčanik iza sebe. Standardizacija ovdje nije oružje proizvođača koji želi zaključati kupca — to je oružje kupca koji je toliki da može zaključati proizvođače.

Brojke to lijepo pokazuju, i vrijedi ih ovdje nabrojati jednu za drugom, jer je rast gotovo opsceno brz. Krajem šezdesetih COBOL je već, po procjenama iz tog razdoblja, jezik u kojem je pisano preko pola svih poslovnih programa u Americi. Do sredine sedamdesetih taj udio penje se na negdje između 70 i 80 posto poslovnog softvera — brojka koja se ponavlja u industrijskim izvještajima tog doba i kasnijim retrospektivama Instituta za standardizaciju. Do kraja osamdesetih, kad su banke, osiguravajuća društva, mirovinski fondovi i porezne uprave po cijelom zapadnom svijetu već imale desetljeća naslaganog koda, COBOL nije bio samo raširen — bio je infrastruktura, u istoj kategoriji s cestama i kanalizacijom. Nitko ne razmišlja o cesti dok je ne mora graditi iznova.

A ono što je zanimljivo, i tipično za priče u kojima novac vodi tehnologiju: nakon što je vojska postavila uvjet, tržište je ostatak posla odradilo sasvim samo, bez ičije daljnje intervencije. Banke i osiguravajuća društva gledale su isti problem koji je imao Pentagon — hoćemo li morati prepisivati sve iznova svaki put kad kupimo novi mainframe, onaj isti o kojem je bila riječ na početku poglavlja — i odgovor im je bio identičan. Standard koji je vojska nametnula iz čisto praktičnih, budžetskih razloga postao je standard cijele civilne obrade podataka, jer je rješavao isti novčani problem: koliko će koštati prelazak na drugi stroj kad ovaj postane preskup ili prespor.

Naravno, tu se krije i mala ironija koju vrijedi zabilježiti prije nego što nastavimo dalje: odbor koji je stvorio COBOL nikad nije tražio zakonsku obavezu, nikad nije lobirao vlade da nametnu njegov jezik. To se dogodilo gotovo slučajno, kao nuspojava jedne birokratske klauzule u nabavnim uvjetima koju je vjerojatno pisao netko čiji je posao bio uštedjeti poreznim obveznicima novac na budućim ugovorima, a ne odlučivati kojim će jezikom sljedeće tri generacije programera pisati kod. Najveći jezični standard dvadesetog stoljeća nije proizašao iz elegantnog inženjerskog dizajna ni iz akademske pobjede — proizašao je iz jedne rečenice u nabavnom dokumentu koju danas gotovo nitko ne bi znao citirati. Novac je odlučio, inženjerska logika je samo poslušno pošla za njim.

Kralj u podrumu
§ 05

Kralj u podrumu

Dobro, presuda. Jer to je ovo poglavlje cijelo vrijeme i bilo — suđenje jeziku koji je trebao umrijeti prije pola stoljeća, a umjesto toga sjedi u podrumu svake veće financijske institucije na planetu i vrti brojke koje čine tvoj život mogućim. Procjene se razlikuju ovisno koga pitaš — konzultantska firma će ti reći jednu brojku da ti proda migraciju, banka drugu da opravda zašto je nije napravila — ali svi se slažu da je riječ o stotinama milijardi linija COBOL koda koje i danas rade, žive, dišu, obrađuju transakcije. Ne u muzeju. U produkciji.

I tu dolazi ekonomija do svog najciničnijeg zaključka: taj kod se ne dira, ne zato što je savršen, nego zato što je migracija na nov sustav skuplja od održavanja starog. Netko je 1975. napravio proračun — prepisati sve na novi jezik košta X, a održavati staro košta isto toliko, samo razmazano kroz deset godina po budžetima gdje ga nitko ne primijeti. Menadžment je, logično, odabrao ono drugo. Onda je 1985. netko drugi napravio isti proračun. Onda 1995. Onda 2005. Svaki put je odgovor bio isti, iz istog razloga: kratkoročni trošak migracije uvijek izgleda gore na papiru od dugoročnog troška stagnacije, jer stagnacija se ne vidi u jednom kvartalnom izvještaju — onom papiru na kojem tvrtka svaka tri mjeseca vlasnicima i dioničarima pokazuje koliko je zaradila i potrošila. Genijalno kratkovidno. I potpuno racionalno, ako te briga samo za sljedeći kvartal — a nekog uvijek samo za to brine.

Sjeti se guvernera Murphyja s početka poglavlja - onog istog trenutka kad je penzionere zvao da spase sustav od kojeg je ovisila hrana na stolu tisućama ljudi - jer upravo taj prizor je najbolji dokaz koliko duboko je taj jezik iz 1959. usađen u temelje na kojima danas stoji cijela ekonomija, ne samo New Jersey.

Pa dobro, reći ćeš, to je vlada, birokracija, državna spora mašinerija — normalno da tamo trune stari kod. Samo — plaća ti je stigla prošlog petka. Prošla je kroz sustav koji, vrlo vjerojatno, negdje u lancu obrade dodiruje COBOL. Banka koja ti drži štednju. Osiguranje koje ti pokriva auto. Mirovinski fond tvojih roditelja. Nije to relikvija u muzeju informatike — to je kičma na koju je oslonjena ekonomija zapadnog svijeta, i nitko je ne mijenja jer je zamjena skuplja od popravka, a popravak zahtijeva ljude kojih je iz godine u godinu sve manje.