Egy interju a c++-rol
A kovetkezo cikket egy lemezujsagbol masoltam. Bocs, ha mar olvastatok
vagy offtopic : 1998. januar 1-en Bjarne Stroustrup interjut adott az
IEEE 'Computer' magazinjanak a C++ OO-tervezeseben eltoltott het evrol.
Kerdezo: Nos, nehany ev mar eltelt amiota megvaltoztattad a
szoftvertervezes vilagat; milyen erzes visszatekinteni?
Str.: 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 meg egyszer
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.
Str.: Pontosan. Nos, ugyanez tortent a C programozokkal.
Kerdezo: Ertem, de megis, mire gondolsz?
Str.: 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-window. 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-objektum-orientalt struktura.
A mai napig senki sem ir nyers X-window kodot. Ha epeszu akarsz maradni,
az egyetlen ut a Motif.
Kerdezo: Viccelsz?
Str.: Egyaltalan nem. Igazabol volt meg egy problema. A Unix-ot 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.
Str.: 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?
Str.: 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?
Str.: 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?
Str.: Es az ujrafelhasznalhato kodhoz csak annyit: hallottal
mar valaha olyan cegrol, amely ujrafelhasznalta volna sajat kodjat?
Kerdezo: Nos, meg nem, de.
Str.: 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?
Str.: A legkevesbe sem. A baj az, hogy a legtobb vallalat
agyonhallgatja a nagyobb bakloveseit, egy harminc millio 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.
Str.: 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, es alig hittem a szememnek, amikor
meglattam, hogy a vegrehajthato allomany 2,1MB lett.
Kerdezo: Hogyan? Nos, a forditok azota sokat fejlodtek.
Str.: Tenyleg? Probald ki a C++ 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.
Str.: 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 projektmenedzserek hataba szurt kes megforgatasara hoztak letre.
Kerdezo: Azt kell mondjam, kezdek erosen megdobbenni. Azt mondtad,
azert csinaltad, hogy emelkedjen a programozok fizetese? Ez durva.
Str.: 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 lehetetlen karbantartanod egy
nagy C++ modult, hacsak nem te magad irtad?
Kerdezo: Hogyhogy?
Str.: Mar elszoktal, nem? Emlekszel a typedefre?
Kerdezo: Igen, hat persze.
Str.: 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?
Str.: 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?
Kerdezo: De az oroklodes biztos megtakarit egy csomo idot?
Str.: Tenyleg? Felfedezted mar a kulonbseget egy C es egy
C++ projektterv kozott? A C++ projekt tervezesi szakasza haromszor
olyan hosszu. Pontosabban, amig vegigellenorzik, hogy minden oroklodik,
aminek oroklodnie kell, es aminek nem kell, az nem. Es meg akkor is
elrontjak. Ki hallott mar memoriafolyasrol egy C programban? Ma
kulon ipar ezek megkeresese. A legtobb ceg feladja, es piacra dobja a
termeket tudvan, hogy folyik, mint a csap, pusztan, hogy elkerulje a
folyasok felderitesenek koltseget.
Kerdezo: Vannak eszkozok.
Str.: Amelyeket legtobbszor C++-ban irtak.
Kerdezo: Ha ezt megjelentetjuk, teged valoszinuleg meg fognak
lincselni, tudsz rola?
Str.: Ketlem. Mint mondtam, a C++ lefutoban van, es egyetlen
epeszu ceg sem kezd bele C++ projektbe tajekozodo jellegu proba nelkul.
Az pedig meg kell gyozze oket arrol, hogy ez az ut katasztrofahoz
vezet. Ha nem, megerdemlik. Tudod, megprobaltam rabeszelni Dennis
Ritchie-t, hogy irja ujra a Unixot C++-ban.
Kerdezo: Atyaisten. Mit mondott?
Str.: Nos, szerencsere jo humorerzeke van. Azt hiszen, o is es
Brian is mar az elso napokban rajottek, mit csinalok, de sohasem arultak
el. Azt mondta, segitene megirni a DOS C++ valtozatat, ha engem is erdekel
a dolog.
Kerdezo: Erdekelt?
Str.: Valoban, meg is irtam a DOS-t C++-ban. Ha befejeztuk, meg
is mutatom. A szamitogepteremben fut egy Sparc 20-on. Negy
processzoron repul, mint a golyo, es csak 70 megat foglal a lemezen.
Kerdezo: PC-n milyen?
Str.: Viccelsz? Meg sohasem lattad a Windows '95-ot? Ugy gondolok ra,
mint a legnagyobb sikeremre. Bar majdnem elszurtam, mielott kesz lettem.
Kerdezo: Tudod, a Unix++ gondolata meg mindig nem hagy nyugodni.
Valahol valaki biztos meg fogja probalni.
Str.: Nem, miutan elolvastak ezt a beszelgetest.
Kerdezo: Sajnalom, de nem hiszem hogy ebbol barmit is megjelentethetnenk.
Str.: De ez az evszazad sztorija. Csak szeretnem, ha
programozotarsaim emlekeznenek ram, es arra, amit ertuk tettem.
Tudod mennyit keres egy C++ programozo manapsag?
Kerdezo: Legutobb ugy hallottam, egy igazan joert akar orankent
70-80 dollart is megadnak.
Str.: Latod? Es fogadok, hogy fizetesben ennyit. Szemmel tartani
az osszes csapdat amit beleraktam a C++-ba nem egyszeru. Es mint ahogy
mar mondtam, mindegyik C++ programozo valamilyen misztikus esku altal
kotelezve erzi magat, hogy a nyelv minden egyes atkozott elemet minden
projekthez felhasznalja. Tulajdonkeppen ez nagyon zavar, annak ellenere,
hogy az eredeti celomat szolgalja. Ennyi ido utan, mar majdnem
szeretem ezt a nyelvet.
Kerdezo: Ugy erted, eddig nem szeretted?
Str.: utaltam. Olyan esetlen, nem gondolod? De amikor
elkezdtek befolyni a jogdijak a konyvbol. azt hiszem, erted.
Kerdezo: Egy pillanat. Mi van a hivatkozasokkal? El kell
ismerned, javitottal a C mutatoin.
Str.: Hmm. Ezen gyakran toprengtem. Eredetileg igy gondoltam en
is. Aztan egyszer beszelgettunk errol egy, mar a kezdetektol
C++-ban programozo sraccal. O azt mondta, sohasem emlekszik hogy a
valtozoi hivatkozottak vagy sem, ezert inkabb mindig mutatokat
hasznalt. Azt mondta, a csillag mindig emlekezteti.
Kerdezo: Nos, ennel a pontnal szoktam altalaban azt mondani, hogy
koszonom szepen az interjut, de ez ebben az esetben nem igazan tunik
helyenvalonak.
Str.: Igerd meg, hogy megjelentetitek. A lelkiismeretem mar a
jobbik felemet marcangolja.
Kerdezo: Nos, majd ertesitelek, de azt hiszem, mar most tudom, mit
fog mondani a szerkesztom.
Str.: Egyebkent is, ki hinne el? Habar, tudsz kuldeni egy masolatot
a felvetelrol?
Kerdezo: Igen.
Vege. Remelem tetszett... :) Udv, FeFi
|