ALGOL 60: Jezik koji je izgubio rat, ali osvojio budućnost

Jezik je umro bez ijednog ispisanog 'Hello World' — a onda mu se svi na grobu poklonili.

poglavlje 22/3418 min čitanja∞ – 1969

Zürich, 1958. Predavaonica na ETH-u (Švicarskom saveznom tehnološkom institutu, njihovom MIT-u) miriše na kredu i cigarete, vani je svibanj koji ne zna je li proljeće ili još zima, i za dugim stolom sjedi osam ljudi koji su, iako to nitko od njih ne zna, upravo pozvani na obdukciju koja će se dogoditi za dvije godine — samo što je pacijent, u ovom trenutku, još savršeno živ, pun ideja i bez ijedne bore. Zovu ga radnim imenom IAL, International Algebraic Language (međunarodni algebarski jezik), a rodit će se sljedeće godine kao ALGOL, kratica za Algorithmic Language, jezik algoritama — algoritam je, ako te nitko nije pitao, samo lijepa riječ za „popis koraka koje treba slijediti da dođeš do rješenja”, poput recepta za kolač, samo što ovaj recept čita računalo. Nitko na tom sastanku ne razmišlja o smrti. Razmišljaju o besmrtnosti — o jeziku koji će, kažu, nadživjeti sve nacionalne razlike i sva postojeća računala.

Vani je 1958., što znači da je svijet formalno podijeljen na dvije polovice koje se prijete nuklearnim pepelom — Hladni rat je u punom jeku, Amerika i Sovjetski Savez mašu si raketama kao djeca štapovima u pješčaniku, samo su posljedice malo ozbiljnije. Za ovim stolom to, međutim, nitko previše ne primjećuje, ili se bar tako pravi. Amerikanac i Nijemac raspravljaju o sintaksi — dakle o tome kojim se točno riječima i znakovima jezik smije pisati, poput gramatike, samo za računalo — kao da je to jedino vrijedno rasprave na svijetu, a onda odlaze na večeru koja traje četiri sata, s vinom koje plaća netko treći. Jer 1950-e su takve: akademska znanost je još pristojna prema samoj sebi, doktorske titule izgovaraju se u cijelosti, a suradnja preko Atlantika normalna je stvar, čak i kad je taj Atlantik metaforički prepun raketa.

Godinu i pol poslije, početkom 1960., sastanak se seli u Pariz, i tu miris kave i skupljih cigareta zamjenjuje kredu, ali napetost ostaje ista, samo malo bolje odjevena. Za stolom su Amerikanci koji su upravo napravili FORTRAN — kovanicu od „Formula Translation”, prvi veći viši programski jezik koji je IBM lansirao 1957. godine — i znaju da radi: grubo, ali radi, kompajlira se (što jednostavno znači da postoji program, kompajler, koji čovjekov kod prevodi u instrukcije koje stroj stvarno razumije), ispisuje brojke, zarađuje novac IBM-u. Europljani, s druge strane, gledaju FORTRAN kao netko tko gleda kuću sagrađenu bez nacrta: stoji, da, ali svaka greda je na krivom mjestu i nitko normalan ne bi tako radio.

Ono što nitko za tim stolom ne zna — jer se obdukcije, po definiciji, rade tek nakon smrti — jest da će ova dva glasa, pragmatični američki i perfekcionistički europski, začeti dijete koje neće preživjeti tržište, ali čiji će genetski materijal ući u praktički svaki jezik napisan poslije njega. Zapisnici tih sastanaka, uredni, formalni, puni akademskih titula, čitaju se danas kao nešto između bračnog ugovora i optužnice. I s pravom — jer konačni izvještaj potpisan je u Parizu 1960., a dvije godine poslije, 1962., odbor se ponovno okuplja, ovog puta u Rimu, kako bi jezik pokušao popraviti reviziju. Kad se ta prašina u Rimu slegne, na stolu će ostati leš. Vrlo poučan leš, kako će se pokazati, ali leš.

Skini plahtu. Ovo je ALGOL 60, godište 1960., proglašen mrtvim negdje sredinom tog istog desetljeća, iako mu službeni certifikat smrti nitko nikad nije baš potpisao — samo je jednog dana prestao dolaziti na posao. Uzrok smrti, formalno: nitko ga nije koristio. Nijedna banka nije na njemu vodila knjige, nijedna raketa nije na njemu letjela na Mjesec, nijedna firma nije stavila njegov logo na omotnicu plaće. Ako uspjeh jezika mjeriš po tome koliko je programa napisano u njemu, ALGOL 60 je duh koji hoda kroz zid — tehnički je bio ovdje, ali ostavio je jedva vidljiv trag na tepihu.

I upravo zato je ovo obdukcija, a ne nekrolog. Nekrolog se piše kad je nekome žao, kad se okupiš oko lijesa i govoriš samo dobro o pokojniku. Obdukcija je nešto drugo — hladnija, preciznija, radi se kad želiš znati točno zašto je netko umro, skalpelom, bez sentimenta. A u ovom slučaju obdukcija treba odgovoriti i na čudniji problem: zašto se, unatoč tome što je pacijent odavno mrtav, njegov DNK pojavljuje u svakom drugom organizmu koji danas hoda po informatičkoj Zemlji.

Otvorimo ga, dakle. Prvi rez, površinski — koža, mišići, sve što tržište vidi. Tu nalazimo potpuno neuhranjeno tijelo. ALGOL 60 nikad nije imao standardnu biblioteku za ulaz i izlaz (dio jezika koji bi mu, jednostavno rečeno, omogućio da nešto ispiše na ekran ili pročita s tipkovnice — zvuči kao osnova, a upravo je to nedostajalo), nikad nije imao pravu podršku velikih proizvođača, nikad nije imao ono što bismo danas zvali ekosustavom. Nije imao ni „package manager” (alat koji danas za tebe skida i slaže tuđe gotove komadiće koda, kao da naručuješ IKEA-in ormar umjesto da sam pilaš daske), ni forum, ni onog jednog čovjeka na Stack Overflowu (ogromnom online mjestu gdje programeri postavljaju pitanja i tuku se u komentarima) koji je 2009. odgovorio na pitanje koje je spasilo milijun projekata. Umro je, grubo rečeno, od gladi. Svi su ga hvalili na konferencijama, nitko ga nije zvao na posao.

Otvoriš prsni koš i unutra ne nalaziš raspadnuti jezik. Nalaziš — nemoj se čuditi — cijeli skelet na kojem danas hoda C. I Pascal. I Java. I, ruku na srce, praktički svaki jezik koji se ikad usudio staviti vitičastu zagradu ili riječ „begin” na pravo mjesto. Tu su tri rebra koja ćemo detaljno secirati malo kasnije — blok-struktura, opseg varijable i rekurzija — a za sad samo toliko: sve troje je prvi put ozbiljno postavljeno baš u ovom lešu.

Dakle, imamo paradoks vrijedan crne humoristične serije: pacijent koji je klinički mrtav, bez ijedne žive stanice koja bi se danas mogla nazvati „korisnik”, a čiji je kostur presađen u milijarde tijela koja hodaju ovom planetom i tipkaju kod dok ti čitaš ovo. Da je ALGOL 60 bio firma, rekao bi da je otišao u stečaj — a onda otkrio da mu je patent na disanje otkupio svatko, od Googlea do tvog susjeda koji uči Python u garaži.

Pa krenimo redom kroz nalaze, kao što se i pristoji ovakvom poslu. Drugi nalaz na listi uzroka smrti nije glad, nije zaraza, nije nesretan slučaj. Drugi nalaz je nešto puno gore za jedan jezik — rođen je bez organa koji mu je trebao za goli opstanak. Nije mogao ni ispisati „Hello, World” na ekran — onu čuvenu, sasvim beznačajnu poruku kojom svaki programski jezik po tradiciji dokazuje da je živ i da barem nešto radi — a to je, priznajmo, minimum za bilo koji jezik koji želi da ga netko ozbiljno shvati.

Uzrok smrti #1: nema ulaza/izlaza
§ 02

Uzrok smrti #1: nema ulaza/izlaza

Taj nedostatak ide i dalje od Hello Worlda, i ovaj dio je, iskreno, teže objasniti obitelji. Prvi uzrok smrti bio je nešto vanjsko — IBM, tržište, politika. Ovaj je samoubojstvo. ALGOL 60 je umro jer mu odbor — skupina znanstvenika iz Europe i Amerike koja se okupila da zajednički skroji „univerzalni” jezik, pomalo kao kad bi desetak kuhara iz deset država pokušalo napisati jedan recept za savršenu juhu — nije dao usta. Jezik koji je trebao biti lingua franca informatike (izraz koji izvorno znači zajednički jezik trgovaca i mornara na Sredozemlju, a ovdje znači: jezik koji bi svi programeri svijeta razumjeli i koristili), jezik u kojem su matematičari konačno mogli pisati algoritme onako kako ih pišu na papiru — taj jezik, u svojoj službenoj, ovjerenoj, potpisanoj specifikaciji, nema definiran način da ispiše ijedan broj na ekran.

Da, dobro si pročitao. Ulaz i izlaz — u originalu „read” i „write”, ono najosnovnije što svaki jezik mora znati raditi, jer bez toga je programiranje čisto akademsko onaniranje s formulama koje nikad neće izaći iz stroja — u ALGOL-u 60 službeno ne postoji. Nije da su ih zaboravili. Gore je: o tome su raspravljali, satima, danima, na sastancima u Parizu i Zürichu, i nikako se nisu mogli dogovoriti.

Posljedica je bila predvidljiva kao pad kamena s krova: svaki proizvođač računala napravio je svoj dijalekt jezika. Burroughs, Univac i DEC — tadašnji giganti računalne industrije, svaki sa svojim strojevima — imali su svaki svoj način ulaza i izlaza podataka (ono „read” i „write” iz prošlog odlomka). Programer koji je naučio pisati u jednom „ALGOL-u” nije mogao pokrenuti svoj kod na drugom stroju bez prepisivanja upravo onog dijela koji mu je trebao za — pa, za sve. Za ispis rezultata, za učitavanje podatka, za sve što je iole taknulo vanjski svijet. Jezik čija je cijela poanta bila univerzalnost, prenosivost, akademska lingua franca preko granica i strojeva, raspao se u desetak nekompatibilnih inačica prije nego što je uopće stigao ozbiljno zaživjeti izvan sveučilišta.

Ovo žulja i danas, samo se preselilo jednu razinu više. Svaki if/else blok koji si napisao jučer, ono lijepo uvlačenje, ono begin i end koje se u modernim jezicima pretvorilo u vitičaste zagrade — to je ALGOL-ov kostur, ali nemoj misliti da je problem standardizacije nestao. I danas se svaka nova platforma, svaki novi runtime (onaj sloj softvera koji tvoj program stvarno pokreće dok radi, dok se izvršava — nešto kao motor auta koji ti ne vidiš, ali bez njega se ne miče ništa) svađa oko toga kako točno treba izgledati nešto naizgled trivijalno, poput formatiranja datuma ili čitanja argumenta iz komandne linije (onog crnog ekrana s tekstom u koji se kucaju naredbe, bez miša i klikanja). ALGOL nam je samo dao prvi, najbolniji primjer da elegancija sintakse ne znači ništa ako se ne možeš dogovoriti oko instalacije vodovoda.

I tu dolazimo do dijagnoze koja bi trebala visjeti kao natpis na vratima ove sekcije obdukcije: savršenstvo je neprijatelj postojanja. Odbor je htio jezik koji neće ovisiti o hardveru, koji će biti čist kao matematički dokaz, netaknut prljavštinom konkretnog stroja s konkretnim ekranom i konkretnim pisačem. Divna ambicija. Ali jezik koji se stidi reći „ispiši ovo na ekran” jer bi to bilo ispod njegove akademske časti — takav jezik je filozofski dosljedan i praktično mrtav rođen. FORTRAN je bio ružan, neuredan, pun GOTO naredbi (naredba koja jednostavno kaže programu „skoči na liniju toliko-i-toliko i nastavi odande”, bez obzira gdje si trenutno bio — zamisli knjigu u kojoj bi te fusnota s trećine stranice slala na kraj, pa te odande vraćala na početak, i tako dok ne poludiš) i brojčanih oznaka linija koje danas nikoga ne bi trebale propustiti kroz pregled koda — ali je imao READ i WRITE, i zato je radio.

Uzrok smrti #2: IBM nije igrao
§ 03

Uzrok smrti #2: IBM nije igrao

Treći nalaz. Patolog otvara ladicu, vadi drugi organ, drži ga pod svjetlom i diktira u diktafon: uzrok smrti broj tri — distribucija, ili točnije, njeno kobno odsustvo. ALGOL 60 je imao logiku bez mane, sintaksu koju su akademici hvalili s onim posebnim žarom kojim se hvale samo stvari koje nitko ne koristi. Imao je sve. Osim jedne stvari koju IBM te 1960. ima u svakom stroju koji isporučuje — a to je FORTRAN, već instaliran, već ugrađen u metal, već naučen od inženjera koji nemaju ni vremena ni volje učiti drugi jezik samo zato što je ljepši.

IBM je u tom trenutku prodavao računala kao što danas netko prodaje pretplate — jednom kad te uvuku u ekosustav, ostaješ, ne zato što je najbolji, nego zato što je izlazak skuplji od ostajanja. IBM 704 bio je jedno od onih glomaznih ranih velikih računala (danas bismo rekli mainframe) kakva su si u pedesetima mogle priuštiti samo krupne tvrtke i vojska — stroj veličine sobe, cijena kuće, ali i jedini alat u gradu. FORTRAN nije bio elegantan. Bio je pragmatičan do bola, radio je stvari koje inženjeri traže i — ovo je presudno — dolazio je besplatno s kompajlerom kad kupiš taj IBM 704. Zašto bi tvrtka plaćala programere da uče novi jezik i čekala da netko napiše kompajler za ALGOL na njihovom stroju, kad već imaju nešto što radi? Odgovor je: ne bi. I nisu.

Bilo je pokušaja, dakako. Burroughs — tada jedan od rijetkih ozbiljnih konkurenata IBM-u u proizvodnji velikih računala — implementirao je ALGOL prilično ozbiljno, čak dobro. No Burroughs u to doba nije bio IBM; bio je alternativa za one koji su htjeli biti drugačiji, a rijetko se pobjeđuje tržište budući drugačiji. Europske institucije, gdje je ALGOL imao svoju emotivnu i intelektualnu domovinu, prihvatile su ga s više entuzijazma — ali ni to nije bilo dovoljno kad je najveći kupac računala na planetu odlučio da mu je FORTRAN dovoljno dobar i da neće trošiti inženjerske sate na nešto što mu ne donosi prodaju sljedeći kvartal.

I tu dolazimo do dijagnoze koja se u ovoj enciklopediji ponavlja kao refren, jer se u povijesti tehnologije ponavlja kao zakon prirode: distribucija jača od elegancije. Nije prvi put, nije zadnji. Ista bolest odnijela je bezbroj tehnički superiornih proizvoda dok su inferiorni, ali svugdje prisutni, gazili dalje. Isti mehanizam koji je desetljećima kasnije Microsoftu dao dominaciju na desktopu — ne zato što je Windows bio bolji od alternativa, nego zato što je bio već tamo, već predinstaliran, već onaj s kojim se ne moraš boriti da bi ga dobio.

Patolog zatvara ladicu. Nalaz je jasan i nemilosrdan: ALGOL 60 nije umro od bolesti u samom tkivu — umro je od gladi. Nitko ga nije distribuirao dovoljno agresivno, nitko nije stajao iza njega s budžetom i prodajnim timom, a jezik, koliko god teorijski besmrtan, ne živi od ljepote. Živi od instalacija. FORTRAN ih je imao. ALGOL nije. Presuda je gotovo administrativna u svojoj hladnoći: tržište ne nagrađuje najbolje rješenje, nagrađuje ono koje je već u tvom uredu kad ti zatreba.

Što je preživjelo autopsiju
§ 04

Što je preživjelo autopsiju

Patolog nastavlja rez. Vani, na papiru, ALGOL 60 je mrtav — nula komercijalnih implementacija koje su izdržale desetljeće, nula velikih firmi koje su na njemu podigle imperij. Ali kad otvoriš tijelo, nalaz je čudniji nego što bi bilo tko očekivao: srce još kuca. Ne u ovom pacijentu, doduše — kuca u tucetu drugih tijela, transplantirano, često bez potvrde donora na naljepnici. Ovo poglavlje obdukcije nije o uzroku smrti. Ovo je o tome što je kirurg spasio prije nego što je zatvorio vreću.

Prvi organ na stolu: blok-struktura. Zvuči dosadno, kao i svaka tehnička kost, ali posljedica je ogromna. Prije ALGOL-a kod je bio ravna linija — sve globalno, sve vidljivo svima, kao stan bez zidova u kojem ti brat čuje svaki telefonski razgovor. ALGOL je prvi rekao: staviš vitičastu zagradu (točnije, begin i end, ali duh je isti) i unutra imaš svoju sobicu. Varijable definirane unutra ne postoje izvan te sobice. Zvuči poznato? Trebalo bi. Svaki if, svaki for, svaka funkcija koju danas otvoriš i zatvoriš zagradom — to je ALGOL-ov kostur, obučen prvo u C-ovu kožu, pa u Java odijelo, pa u Pythonovu (doduše, uvlakama umjesto zagrada, ali princip identičan).

Drugi organ: opseg (na engleskom scope) — pravilo koje određuje tko koga vidi u kodu. Ovo se čini kao nastavak prvog nalaza, i jest, ali zaslužuje svoj redak na obdukcijskom izvještaju jer je promijenio način na koji programeri razmišljaju o vlastitom kodu. Prije: sve je vidjelo sve, i greška u jednom kutu programa mogla je potopiti drugi kut koji s njom nema nikakve veze — kao da ti susjed pomakne namještaj jer je slučajno ušao kroz zid koji ne postoji. ALGOL je ugradio zidove. Varijabla živi i umire unutar bloka u kojem je rođena. Ono što danas zovemo lokalna varijabla, i taj osjećaj sigurnosti da tvoja funkcija ne može nehotice zapaliti tuđu — to je izravna nasljedna linija, ne slučajna paralela.

Treći organ, i vjerojatno onaj koji je odboru najviše izazivao glavobolje u trenutku pisanja specifikacije, jest rekurzija — funkcija koja poziva samu sebe. Zvuči kao paradoks, filozofski trik, zmija koja jede svoj rep, i upravo je to razlog zašto su neki članovi odbora htjeli izbaciti tu ideju iz specifikacije. Problem je bio tehnički: da bi rekurzija radila, stroj mora pamtiti čitav niz poziva koji čekaju jedan na drugoga u redu, poput hrpe tanjura koju slažeš jedan na drugi i ne možeš maknuti donji dok ne skineš sve iznad njega — a strojevi tog doba bili su navikli na jednu ravnu traku instrukcija, korak po korak, bez slaganja i vraćanja. FORTRAN u to doba rekurziju nije imao, i to nije bio propust — bila je to svjesna odluka da se izbjegne ta glavobolja. ALGOL je rekao: dajte da probamo. I probali su, i radilo je, i danas je rekurzija toliko standardna da je studenti prve godine informatike uče kao dosadnu vježbu, a ne kao čudo za koje je 1960. trebalo posebno opravdanje na sastanku.

Četvrti nalaz nije organ u klasičnom smislu — više je poput otiska prsta koji je patolog pronašao ne na tijelu, nego na alatu kojim je tijelo sastavljeno. Riječ je o BNF notaciji, odnosno Backus-Naurovoj formi. Ime govori sve: John Backus, isti čovjek koji je vodio FORTRAN i koji se u prethodnom poglavlju ove obdukcije spominjao kao neprijateljski tabor, IBM-ov pragmatik nasuprot europskim akademicima. Pa evo ga opet, na drugoj strani stola, ovaj put kao netko tko je ALGOL-u dao alat da opiše samog sebe. BNF je jezik za opisivanje jezika — meta-jezik, gramatika gramatike, ako hoćeš. Prije toga se sintaksa programskog jezika opisivala prozom, rečenicama poput „iza ključne riječi if slijedi uvjet, a nakon uvjeta ključna riječ then”, što je otvoreno pozivalo na nesuglasice i različita tumačenja. BNF je to sveo na formalna pravila, čitljiva i strojevima i ljudima, jednoznačna kao matematička jednadžba. Danas svaki jezični priručnik, svaki parser (program koji čita kod i provjerava slaže li se s pravilima jezika, otprilike gramatički provjerivač na steroidima) i svaka specifikacija formata datoteke koristi nekog potomka BNF-a, bez da se ikad pita otkud je došao. Backus je, dakle, ubio konkurenciju s jedne strane i naoružao je s druge — patolog bi rekao da je to čudna vrsta profesionalne ljubavi.

Kad se svi ti nalazi poslože jedan pored drugoga na metalnom stolu, slika postaje neugodno jasna. Blok struktura, opseg (»scope« — dio koda u kojem neka varijabla „postoji” i ima značenje), rekurzija, formalna gramatika — to nije rubni kuriozitet jednog neuspjelog jezika. To je operativni sustav za razmišljanje o programiranju kakav postoji i danas. Zato je opravdano reći da su svi moderni jezici, u nekom smislu, ALGOL s naglaskom. C je ALGOL koji je otišao u teretanu i skinuo suvišnu elegantnost. Pascal je ALGOL koji je otišao na fakultet i postao pedantan profesor. Java je ALGOL u odijelu, s previše sastanaka. Čak i jezici koji tvrde da su revolucionarni, koji se hvale da su „odbacili staru školu”, gotovo uvijek pod haubom imaju te iste organe, samo drugačije oblikovane. Pacijent na ovom stolu, dakle, nije izumrla vrsta. Pacijent je predak čiji je DNK toliko dominantan da ga potomci nose i kad ne znaju njegovo ime.

Presuda
§ 05

Presuda

Nalaz obducenta, završni redak. Uzrok smrti: prerana dobrota. Zvuči kao nešto što bi napisao na nadgrobnom spomeniku pjesnik s previše slobodnog vremena, ali u ovom slučaju je patološki precizno. ALGOL 60 nije umro jer je bio loš. Umro je jer je bio bolji nego što je tržište 1960. znalo što bi s njim. Odbor je dizajnirao jezik za znanstvenike koji misle u apstrakcijama, a svijet je htio jezik koji će ispisati platnu listu do petka. Kad ta dva zahtjeva odu na sud, apstrakcija gubi. Uvijek.

I tu dolazimo do obrasca koji ćeš u ovoj enciklopediji sretati iznova, kao recidiv koji se ne da izliječiti: tehnologija izgubi bitku za tržište, a onda pobijedi rat tako što joj se ideje ušuljaju u pobjednikov kod dok on nije gledao. Xerox PARC — istraživački laboratorij koji je još sedamdesetih smislio grafičko sučelje i miš, dakle stvari bez kojih danas ne znaš ni upaliti računalo — izgubit će od Applea i Microsofta, a onda će gledati kako oba kopiraju njegovo sučelje. Netscape, jedan od prvih internetskih preglednika, izgubit će od Microsoftovog Internet Explorera i onda će gledati kako preživljava u DNK-u svakog preglednika koji dođe poslije. ALGOL je samo prvi na tom groblju s natpisom »u pravu sam, samo prerano«. Uzorak je uvijek isti: gubitnik je bio ispravan, pobjednik je bio dostupan, a povijest na kraju krade od oba.

Ali – i ovo je razlog zašto ova obdukcija ima smisla umjesto da bude samo tužna priča – leš je odradio više posla mrtav nego što bi većina jezika odradila živa. Blok-struktura (ideja da kod grupiraš u zatvorene cjeline, s vlastitim početkom i krajem, poput sobe s vratima koja možeš zatvoriti da se ne miješa s onim što se događa u susjednoj sobi), opseg varijabli (pravilo koje određuje gdje neka varijabla „postoji” i gdje je vidljiva, a gdje je za ostatak koda nevidljiva kao da je nikad nije bilo), rekurzija (kad funkcija u svom radu pozove samu sebe – zamisli babušku koja otvara babušku koja otvara babušku, samo što ovdje to radi kod, ne drvo) i BNF notacija (formalni način da se zapiše što je u nekom jeziku gramatički dopušteno, a što nije – recept po kojem kompajler prepoznaje što je uopće „rečenica” tog jezika) – sve je to izvađeno iz tog trupla i ušiveno u Pascal, C, Javu, u praktički sve što danas otvoriš u editoru. Kad danas otvoriš vitičastu zagradu i zatvoriš je dvjesto redaka niže, znajući točno gdje si, klanjaš se grobu koji nitko ne posjećuje.

Ako si tip čovjeka koji vjeruje da elegancija zaslužuje da pobijedi sama po sebi – eto ti utjeha, jedna jedina rečenica, škrta kao i sve ostalo u ovoj obdukciji: ideje ne moraju pobijediti na tržištu da bi pobijedile u povijesti, samo moraju biti dovoljno dobre da ih netko ukrade.