Levlistán kaptam, hátha másnak is újdonság. :-)1998. januar 1-jen Bjarne Stroustrup interjut adott az IEEE 'Computer' magazinjanak. A szerkesztok termeszetesen az altala letrehozott nyelv [a C++ - a ford.] objektum-orientalt tervezesben eltoltott het evenek meltatasara szamitottak.
Az interju vegere azonban a kerdezo kisse tobbet is kapott, mint amire szamitott, ezutan a szerkeszto ugy dontott, eltitkolja a tartalmat a 'szakma erdekeben', de mint sok mas esetben, az anyag megis kiszivargott. Ime, a teljes atirata annak, ami elhangzott, szerkesztes es stilizalas nelkul, igy talan nem annyira rendezett, mint a tervezett interjuk. Erdekes lesz...
kerdezo: Nos, nehany ev mar eltelt amiota megvaltoztattad a szoftvertervezes vilagat; milyen erzes visszatekinteni?
Stroustrup: Tulajdonkeppen eppen errol a korszakrol gondolkodtam mielott megjottel. Emlekszel? Mindenki C programokat irt, es a problema az volt, hogy atkozottul jok voltak benne. Az egyetemek is nagyon jol oktattak. Hihetetlen iramban ontottak magukbol a hozzaerto - megegyszer alahuzom, _hozzaerto_ - vegzosoket. Ez okozta a problemat.
kerdezo: Problemat?
Stroustrup: Igen, problemat. Emlekszel, amikor meg mindenki Cobolban programozott?
kerdezo: Persze, meg en is.
Stroustrup: Nos, kezdetben oket felistenkent tiszteltek. Nagyon jo fizetest kaptak, es kiralykent tiszteltek oket.
kerdezo: Azok voltak am a szep napok...
Stroustrup: Bizony. Es mi tortent? Az IBM-nek elege lett ebbol, es dollarmilliokat forditott programozok kepzesere, amig csak majd minden sarkon talalni nem lehetett egyet.
kerdezo: Ezert is szalltam ki. Egy ev alatt annyit zuhantak a fizetesek, hogy tobbet kerestem ujsagirassal.
Stroustrup: Pontosan. Nos, ugyanez tortent a C programozokkal.
kerdezo: Ertem, de megis, mire gondolsz?
Stroustrup: Nos, egyik nap ultem az irodamban, es kiotlottem a megoldast, amely majd helyrebillenti az egyensulyt. Arra gondoltam, mi tortenne, ha lenne egy olyan programnyelv, ami annyira bonyolult, annyira nehezen tanulhato, hogy senki sem lenne kepes elarasztani a piacot programozokkal. Tulajdonkeppen atvettem nehany otletet az X10-bol, tudod, X windows. Az egy olyan atkozott grafikai rendszer volt, hogy meg a Sun 3/60 gepeken is eppenhogycsak elfutott. Megvolt benne minden, amire szuksegem volt. Egy igazan nevetsegesen bonyolult szintakszis, homalyos fuggvenyek es pszeudo-OO [objektum-orientalt - a ford.] struktura. A mai napig senki sem ir nyers X windows kodot. Ha epeszu akarsz maradni, az egyetlen ut a Motif.
kerdezo: Viccelsz?
Stroustrup: Egyaltalan nem. Igazabol volt meg egy problema. A Unixot C-ben irtak, ami azt jelentette, hogy barmelyik C-programozo konnyen rendszerprogramozova valhatott. Emlekszel, mennyit keresett egy nagygepes programozo?
kerdezo: Bizony, en is az voltam.
Stroustrup: Szoval, ennek az uj nyelvnek el kellett valnia a Unixtol, elrejtve az osszes rendszerhivast, ami olyan szepen osszekototte volna oket. Igy mar azok is, akik csak a DOS-t ismertek, jo keresethez jutottak volna.
kerdezo: Ezt nem hiszem; rosszul hallok?
Stroustrup: Nos, most mar eleg ido eltelt, es azt hiszem, a legtobben mar maguktol is rajottek, hogy a C++ idopocsekolas, de meg kell mondjam, sokkal tovabb tartott nekik, mint gondoltam.
kerdezo: Pontosan hogy csinaltad?
Stroustrup: Eredetileg vicc akart lenni az egesz, sohasem gondoltam volna, hogy az emberek komolyan veszik majd a konyvet. Meg egy feleszu is lathatja, hogy az objektum-orientalt programozas kovethetetlen, illogikus es nem hatekony.
kerdezo: Hogyan?
Stroustrup: Es az ujrafelhasznalhato kodhoz csak annyit: halottal mar valaha olyan cegrol, amely ujrafelhasznalta volna sajat kodjat?
kerdezo: Nos, meg nem, de...
Stroustrup: Latod. Az igazat megvallva az elejen meg nehanyan megprobaltak. Ott volt peldaul ez az oregoni vallalat - azt hiszem, Mentor Graphics-nak hivtak oket -, amelyik jocskan rafazott, mikor 90-ben vagy 91-ben megprobalt mindent ujrairni C++-ban. Sajnaltam oket, tenyleg, de ugy gondoltam, az emberek majd tanulnak tevedeseikbol.
kerdezo: De nyilvanvaloan megsem ezt tettek, ugye?
Stroustrup: A legkevesbe sem. A baj az, hogy a legtobb vallalat agyonhallgatja a nagyobb bakloveseit, egy harmincmillio dollaros veszteseget pedig nehez lett volna megmagyarazni a reszvenyeseknek. A dologhoz hozza tartozik, hogy vegul is azert sikerult nekik.
kerdezo: Megis sikerult? Nos, tessek, ime a bizonyitek: az OOP mukodik.
Stroustrup: Nos, majdnem. A programfile olyan nagy volt, hogy ot percig tartott, amig betoltodott egy 128MB RAM-mal rendelkezo HP munkaallomason. Ezutan pedig ugy futott, mint egy teknos. Tulajdonkeppen arra gondoltam, hogy ez tul nagy
buktatonak bizonyul es egy het alatt lelepleznek, de senkit sem erdekelt. A Sun es a HP egyszeruen tul nagy orommel arulta elsopro teljesitmenyu gepeit, amelyekkel oriasi eroforrasok felhasznalasaval futtattak egyszeru programokat.
Tudod, amikor megvolt az elso C++ forditonk az AT&T-ben, leforditottam a 'Hello World'-ot [egyszeru tesztprogram, amely pusztan a fenti uzenet kiirasabol all - a ford.], es alig hittem a szememnek, amikor meglattam, hogy a vegrehajthato
allomany 2,1MB lett.
kerdezo: Hogyan? Nos, a forditok azota sokat fejlodtek.
Stroustrup: Tenyleg? Probald ki a g++ legujabb verziojan - nem hiszem, hogy fel megabyte-nal nagyobb a kulonbseg. Van egy csomo igen kozeli pelda is a vilag minden tajarol: a British Telecom igen nagy galibaba keveredett, de szerencsere sikerult kidobniuk az egeszet az ablakon es ujrakezdeniuk. Szerencsesebbek voltak, mint az Australian Telecom. Most hallottam, hogy a Siemens is dinoszauruszt csinal, es egyre jobban es jobban aggodnak, ahogy a futtatashoz szukseges hardware merete novekszik. Hat nem csodalatos dolog a tobbszoros oroklodes?
kerdezo: Igen, de a C++ alapjaban veve egy ertelmes nyelv.
Stroustrup: Ezt te tenyleg el is hiszed, ugye? Leultel mar valaha C++ projekten dolgozni? Ez szokott tortenni: Eloszor is, eleg buktatot epitettem be, hogy csak a legegyszerubb dolgok mukodjenek elsore. Nezd meg peldaul az operator overloading-et. A projekt vegere mar gyakorlatilag minden modulban van, altalaban, mert a sracok ugy erzik, tenyleg kell, ha mar egyszer ez tanultak a tanfolyamon. Ekkor ugyanaz az operator minden egyes modulban teljesen mast es mast jelent. Probald meg kibogozni, ha van mondjuk szaz modulod. Az adatelrejtesrol pedig annyit, hogy neha szinte alig birom visszafojtani a nevetest, amikor hallom, hogy a cegeknek problemaik vannak moduljaik egymashoz illesztesevel. Azt hiszem, a szinergista szot kifejezetten a projektmenedszerek hataba szurt kes megforgatasara hoztak letre.
kerdezo: Azt kell mondjam, kezdek erosen megdobbenni. Azt mondtad, azert csinaltad, hogy emelkedjen a programozok fizetese? Ez durva/gusztustalan.
Stroustrup: Nem igazan. Mindenkinek van valasztasa. Nem szamitottam ra, hogy a dolog ennyire kicsuszik a kezbol. Mindenesetre, tulajdonkeppen sikerult. A C++ kezd kihalni, de a programozok meg mindig jo fizetest kapnak - kulonosen azok a szerencsetlenek, akiknek ezt a sok vacakot karban kell tartaniuk. Eszrevetted, hogy lehetlen karbantartanod egy nagy C++ modult, hacsak nem te magad irtad?
kerdezo: Hogyhogy?
Stroustrup: Mar elszoktal, nem? Emlekszel a typedefre?
kerdezo: Igen, hat persze.
Stroustrup: Emlekszel, mennyi ideig tartott vegigkeresgelni a header-file-okat, amig megtalalta az ember, hogy a 'TetoFelemelve' egy duplapontossagu szam? Nos, kepzeld el meddig tart, amig megtalalod az osszes osztaly osszes implicit
typdefjet egy nagyobb projektben.
kerdezo: Akkor miert gondolod, hogy sikerult?
Stroustrup: Emlekszel egy atlagos C projekt idotartamara? Korulbelul hat honap. Kozel sem eleg, hogy egy feleseggel, gyerekekkel rendelkezo srac normalis eletszinvonalhoz elegendo penzt keressen ezalatt. Vegyuk ugyanazt a projektet,
tervezzuk meg C++-ban, es mit kapunk? Megmondom: egy vagy ket evet. Hat nem nagyszeru? Ilyen biztos allas, egyetlen dontesi hiba miatt. Es meg egy dolog: az egyetemek olyan regen nem tanitanak C-t, hogy hiany van jo C programozokbol.
Kulonosen azokbol, akik konyitanak a Unix rendszerprogramozashoz is. Hanyan tudnak, mit kezdjenek a mallockal, mikor az utobbi evekben csak new-t hasznaltak - es sosem veszodtek a visszateresi ertek vizsgalataval? Igazabol a legtobb C++ programozo eldobja a visszateresi erteket. Mi tortent a jo oreg -1-gyel? Legalabb tudta az ember, hogy hiba tortent, anelkul, hogy vegig kellett volna kuldeni az egeszet a 'throw' 'catch' 'try' lapvideken?