Article View: pl.comp.objects
Article #4592Prawda o C++
From: Sektor van Skijlen
Date: Fri, 15 Jan 1999 19:02
Date: Fri, 15 Jan 1999 19:02
314 lines
15329 bytes
15329 bytes
Swego czasu, ktos z grupowiczow na pl.comp.objects zanotowal adres pewnej
strony i podpisal cos nt. "C++ vs inne jezyki". Strona ta zawierala wywiad z
Bjarne Stroustrupem, jakiego udzielil on czasopismu "Computer" z IEEE.
Osobiscie doznalem lekkiego szoku, ale obawiam sie, ze to wszystko prawda.
Pozwolilem sobie to przetlumaczyc na polski, dzieki czemu - jak sadze - wiecej
ludzi sie skusi na przeczytanie tego. Jesli ktos mialby jakies zastrzezenia co
do mojego tlumaczenia, prosze o komentarze. Nie pamietam adresu tamtej strony,
ale mam jeszcze angielska wersje, jak ktos by potrzebowal.
Bawcie sie dobrze. I dobrze sie zastanowcie zarowno nad wyborem jezyka
programowania, jak i nad tym, jakie wlasciwosci z niego uzywac...
------------------------------------------------------------------------------
Dnia 1. stycznia 1998, Bjarne Stroustrup udzielil wywiadu magazynowi IEEE
"Computer"...
Naturalnie, wydawcy spodziewali sie uslyszec retrospektywna wizje siedmiu
lat projektowania zorientowanego obiektowo z uzyciem jezyka, ktory zostal
przez niego stworzony.
Pod koniec wywiadu, redaktor prowadzacy ten wywiad otrzymal wiecej, niz mogl
utargowac i, dodatkowo, wydawca zdecydowal sie jednak zatuszowac te slowa "dla
dobra przemyslu", lecz coz... przecieki to podstawa.
Ponizej zamieszczam tlumaczenie z oryginalnej transkrypcji, nieokrajanej i
nieodsluchiwanej na nowo.
---
Redaktor: A wiec... to juz pare lat od kiedy zmienil Pan swiat projektowania
oprogramowania, jak to wyglada teraz z perspektywy czasu ?
Stroustrup: Aktualnie, myslalem o tych dniach, jeszcze zanim sie z Panem
widzialem. Pamieta Pan ? Kazdy pisal 'C' i wlasnie w tym lezal problem, ze oni
byli w tym cholernie dosc dobrzy... Uniwersytety byly tez dosc dobre w
nauczaniu tego. Wypuszczali fachowych - podkreslam slowo 'fachowych' -
absolwentow w fenomenalnym tempie. I to wlasnie stworzylo problem...
R: Problem ?
S: Tak, problem. Pan pamieta, jak kazdy pisal w Cobolu ?
R: Jasne, ja sam przeciez tez..
S: No wlasnie, na poczatku chlopaki byli jako polbogowie. Mieli wysokie
zarobki i byli traktowani po krolewsku...
R: Ech... to byly czasy...
S: Jasne. No i co sie stalo ? IBM zbzikowal i zainwestowal miliony w
szkolenie programistow, az zaczeli oni zarabiac grosze...
R: I dlatego ja odszedlem. Zarobki spadly w ciagu roku do takiego poziomu,
ze poczatkujacy zurnalista dostawal wiecej...
S: Dokladnie. No i to samo stalo sie z programistami 'C'.
R: Zgoda, lecz w czym rzecz ?
S: No coz, pewnego dnia, siedzac w biurze, pomyslalem o malutkim spisku,
majacym na celu male zrownowazenie. Myslalem 'Co by bylo, gdyby tak byl jezyk
tak skomplikowany, tak trudny do nauczenia, ze nikt nigdy nie moglby zalac
rynku programistami ?'. Konkrentnie wzialem pare pomyslow z X10, wie Pan,
systemu X windows. To bylo dziwadlo wsrod graficznych systemow, ktore to tylko
chodzilo na tych Sunach 3/60... Oni mieli wszystkie skladniki, jakich
potrzebowalem. Naprawde smiesznie pomieszana skladania, niezrozumiale funkcje
oraz struktura pseudo-OO. Nawet przeciez teraz nikt nie pisze w surowym
X-windows. Motif jest jedynym sposobem, jesli chce sie zachowac godnosc...
[Ode mnie: napisalem 'godnosc', ale byc moze nie jest to zupelnie adekwatne
slowo dla 'sanity' - prosze mi wybaczyc, nie mialem dobrego slownika pod reka]
R: Pan zartuje... ?
S: Nie tak znowu. Faktycznie problem byl inny. Unix byl napisany w 'C', co
oznacza, ze dowolny programista 'C' moze bardzo latwo stac sie programista
systemowym. Pamieta Pan, jakich systemow mainframe programista uzywa do
zarabiania ?
R: Moze sie Pan zalozyc, ze pamietam, zreszta to byl powod tego, co
zrobilem...
S: Ok, no wiec ten nowy jezyk musial zerwac z Unixem przez ukrycie
wszystkich wywolan systemowych, ktore tak milo wiazaly te dwie sprawy. To
moglo umozliwic gosciom, ktorzy znali tylko DOS-a, zarabianie na przyzwoite
zycie...
R: Nie wierze, ze Pan to powiedzial...
S: Coz, juz uplynelo dosc sporo czasu i wierze, ze wiekszosc ludzi juz
wyliczyla dla siebie, ze C++ jest tylko marnowaniem czasu, niemniej musze
stwierdzic, ze zajelo to o wiele wiecej czasu, niz sadzilem...
R: Wiec jak Pan to zrobil ?
S: To wygladalo tylko na zart, nigdy nie przypuszczalem, ze ludzie wezma te
ksiazki powaznie. Kazdy, kto ma choc pol mozgu, zorientuje sie, ze
programowanie obiektowe jest ilosciowo-intuicyjne, nielogiczne i
nieeleganckie.
[bylo: counter-intuitive, illogical and inefficient - inefficient moglo tez]
[byc nieskuteczne, ale to mi sie wydawalo odpowiedniejsze ]
R: Co takiego ?
S: I jeszcze z tym "powtornie uzywaniem kodu" - czy kiedykolwiek Pan
slyszal, zeby jakakolwiek firma uzywala powtornie swojego kodu ?
R: No coz... szczerze mowiac, nie slyszalem, ale...
S: No wiec jestesmy w domu. Niech Pan sobie wyobrazi - kilka prob na
poczatku. To byla ta firma z Oregonu - Mentor Graphics, tak sie chyba
nazywala - dostala kubel zimnej wody na glowe, jak probowali przepisac
wszystko na C++ - tak w okolicach '90 czy '91. Bylo mi z ich powodu bardzo
przykro, niemniej mysle, ze ludzie mogliby uczyc sie na wlasnych bledach...
R: Oczywiscie, nie nauczyli sie ?
S: Nie, zlekcewazyli to. Problem w tym, ze wiekszosc firm zatuszowala swoje
kardynalne bledy, a wyjasnianie wspolnikom straty 30 milionow dolarow byloby
niezmiernie trudne... Przynajmniej dac im ich dole, w koncu doprowadza to do
uzytecznosci...
R: I udalo sie ? Wie Pan... to dowod na to, ze OO sie sprawdza...
S: Coz, prawie. Binaria byly tak wielkie, ze trzeba bylo pieciu minut, zeby
sie wczytaly na stacji HP z 128MB RAMu. Lykalo sie jak syrop. Na razie,
mysle, ze to by bylo najwieksze potkniecie i przekonalem sie o tym w ciagu
tygodnia, lecz nikt na to nie zwazal. Sun i HP byly tylko bardzo zadowolone
sprzedajac ogromne pudelka z wielkimi zasobami, zeby uruchamiac trywialne
programy. Wie Pan, kiedy mielismy nasz pierwszy kompilator C++ w AT&T,
skompilowalem 'Hello World' i nie moglem uwierzyc, ze rozmiar wykonywalnego
byl 2.1 MB.
[Tu moj komentarz: i niby o czym to ma swiadczyc ? Skompilowalem tego 'Hello ]
[World' poleceniem gcc i potem poleceniem g++, dodatkowo jeszcze zrobilem ]
[strip. Wykonywalny pierwszy mial 6k, a drugi 2k. Fajne, nie ? Wiadomo ]
[przeciez, ze poczatki sa zawsze trudne, nie widzi mi sie ten argument. ]
[Skompilowalem tez 'Hello world' napisany pod iostreamem, wykonywalny mial ]
[(po zestripowaniu) 3k. GCC najnowsza wersja, 2.8.1 . ]
R: Co takiego ? No coz, przeciez kompilatory sie bardzo rozwinely od tego
czasu...
S: Czyzby ? Niech Pan sprobuje w ostatniej wersji g++ - nie otrzyma Pan
wiekszej zmiany ponizej pol megabajta. Takoz, jest jeszcze sporo przykladow
dla Pana z calego swiata. British Telecom mial niezla kleske, lecz - na
szczescie - zdecydowal sie porzucic calosc i zaczac od nowa. Wyszedl na tym
lepiej, niz Australian Telecom. Teraz slysze, ze Siemens buduje dinozaura i
coraz bardziej sie martwi, ze sprzet mu sie rozrasta, zeby pomiescic binaria.
Czy wielokrotne dziedziczenie nie jest wesole ?
R: Tak, ale C++ jest od poczatku glosnym jezykiem...
S: Naprawde Pan w to wierzy ? Czy siedzial Pan kiedykolwiek nad projektem w
C++ ? Oto, co sie dzieje: Po pierwsze, zalozylem troche pulapek dla upewnienia
sie, ze najbardziej trywialne projekty beda dzialac za pierwszym razem. Wezmy
przeciazanie operatorow. Pod koniec projektu, prawie kazdy modul to ma
zazwyczaj, bo goscie czuja, ze rzeczywiscie powinni to robic, jak to mieli na
kursie. Ten sam operator tedy znaczy cos zupelnie innego w kazdym module.
Sprobuj Pan nad tym zapanowac, kiedy ma Pan okolo setki modulow. Podobnie z
ukrywaniem danych. Na Boga, nie potrafie opanowac smiechu, jak slysze o
problemach firm, ktore robia moduly komunikujace sie ze soba. Mysle, ze slowo
'synergistic' bylo specjalnie pomyslane w celu wbicia noza w zebra menadzerow
projektu...
R: Musze powiedziec, ze zaczynam sie calkiem przekonywac do tego
wszystkiego. I chce Pan powiedziec, ze to wszystko po to, zeby podwyzszyc
place programistow ? To niemoralne...
S: Nieprawda. Kazdy ma wybor. Nie oczekiwalem oczywiscie, ze sprawa sie az
tak wymknie mi z rak. Niemniej ogolnie mi sie udalo. C++ aktualnie wymiera,
ale programisci nadal zarabiaja dobrze - szczegolnie te marne diabelki, ktore
maja podtrzymywac to szajstwo. Czy zdaje Pan sobie sprawe, ze niemozliwe jest
utrzymanie duzego modulu programowego C++, jezeli aktualnie Pan tego nie
pisal ?
R: Jak to ?
S: Pan nie kontaktuje ? Pamieta typedef ?
R: Tak, owszem...
S: Pamieta, jak duzo czasu zajmowalo przegryzienie sie przez pliki
naglowkowe tylko po to, zeby znalezc to, ze 'RoofRaised' to liczba podwojnej
precyzji ? Coz, niech Pan sobie wyobrazi, ile czasu zajmie znalezienie
wszystkich jednoznacznych typedef'ow we wszystkich klasach w wielkim
projekcie...
R: Wiec czemu Pan uwaza, ze osiagnal sukces ?
S: Pamieta Pan dlugosc srednio dlugiego projektu w C ? Ok. 6 miesiecy.
Nie za wiele dla goscia z zona i dziecmi, zeby zarobic na godziwe
utrzymanie. Wez Pan ten sam projekt, zrob go w C++ i co Pan otrzymasz ? Powiem
Panu. Rok do dwoch lat. Czy to nie wspaniale ? Cala ta ochrona pracy, przez
jedna pomylke sadu. I jeszcze jedno. Uniwersytety nie uczyly juz C na dluzsza
mete, aktualnie brakuje przyzwoitych programistow C. W szczegolnosci tych,
ktorzy wiedza cos o systemach Unix. Jak wielu gosci moze wiedziec, co zrobic z
'malloc', skoro uzyli 'new' caly czas - i nigdy nie obchodzila ich wartosc
zwracana. W praktyce, wiekszosc programistow C++ wyrzuca wartosci zwracane. Co
sie stalo ze starym dobrym '-1' ? Najwyzej jesli sie wiedzialo, ze byl blad,
bez cackania sie zrzuca sie cala obsluge w 'throw' 'catch' 'try'...
R: No ale, z pewnoscia przeciez, dziedziczenie oszczedza mnostwo czasu ?
S: Czyzby ? Zauwazyl Pan kiedy roznice pomiedzy planem projektu w C a planem
projektu w C++ ? Planowanie stanowiska dla projektu w C++ zajmuje trzykrotna
ilosc czasu. W szczegolnosci, co z czego powinno byc dziedziczone, a co nie.
Jest to wciaz nierozumiane. Slyszal Pan kiedy, zeby zbraklo pamieci w programie
w C ? Teraz ze swieca takich szukac. Wiekszosc firm poddaje sie i wyrzuca
produkt wiedzac, ze to cieknie jak sito, po prostu pozbywaja sie wydatkow na
wycofanie tego.
R: Sa narzedzia...
S: Wiekszosc ktorych byla napisana w C++...
R: Jesli to opublikujemy, prawodpodobnie zostanie pan zlinczowany, zdaja Pan
sobie z tego sprawe ?
S: Watpie. Jak powiedzialem, C++ ma juz za soba czasy swietnosci i zadna
firma przy zdrowych zmyslach nie zacznie projektu w C++ bez dokladnych badan
pilotazowych. To ich powinno przekonac, ze to droga do kleski. Jesli nie -
spotka ich to, na co sobie zasluzyli... Wie Pan, ze probowalem przekonac
Dennisa Ritchie do przepisania Unixa w C++ ?
R: Na Boga... i co powiedzial ?
S: Szczesciem facet ma poczucie humoru. Mysle, ze obaj z Brianem
zorientowali sie, co robie, i to bardzo szybko, ale nie dali. Powiedzial, ze
pomoze mi napisac wersje C++ DOS-a, jesli jestem zainteresowany.
R: Byl Pan ?
S: Wlasciwie to pisalem DOS-a w C++. Dam Panu demo, jak skonczymy. Biegalo
sobie to na Sparc 20 w pomieszczeniu komputerowym. Chodzi jak rakieta na 4 CPU
i zabiera tylko 70 mega dysku...
R: Jak to by bylo na PC ?
S: Zartownis z Pana. Widzial Pan kiedy Windows '95 ? Uwazam to za swoj
najwiekszy sukces. Gra sie zaczela, zanim bylem gotow, chociaz...
R: Wie Pan, ten pomysl o Unix++ dal mi troche do myslenia. Gdzies na zewnatrz
sa goscie, ktorzy tego probuja.
S: Przejdzie im, jak przeczytaja ten wywiad.
R: Przykro mi, ale nie widze, zebysmy mogli to opublikowac.
S: Ale to jest historia wieku. Chce byc tylko pamietany przez moich
towarzyszy programistow, dla ktorych to zrobilem. Wie Pan, ile moze gosciu C++
dostac na dzien dzisiejszy ?
R: Ostatnio slyszalem, ze taki "na topie" gosciu wart jest 70-80 dolcow za
godzine...
S: Widzi Pan ? I zaloze sie, ze to zarobi. Ciagniecie dalej tego szajstwa w
C++ to nielatwa robota. I jak powiedzialem wczesniej, kazdy programista C++
czuje sie zwiazany jakas mistyczna obietnica uzywania kazdego cholernego
elementu jezyka w kazdym projekcie. Wlasciwie naprawde to mnie to czasem
drazni, nawet biorac pod uwage to, ze sluzy moim pierwotnym zalozeniom. I
prawie lubie ten jezyk po tym czasie...
R: Twierdzi Pan, ze wczesniej nie ?
S: Nienawidzilem go. Nawet wyglada niezgrabnie, nieprawdaz ? Ale kiedy wyszly
te arystokratyczne ksiazki... chyba Pan sobie wyobraza...
R: Jeszcze chwila. Co z referencjami ? Musi Pan przyznac, ze usprawnil Pan
wskazniki z C...
S: Hmm... zawsze mnie to dziwilo. Pierwotnie myslalem, ze tak. Potem
dyskutowalem z gosciem, ktory pisal w C++ od poczatku. Powiedzial, ze nigdy nie
moze spamietac, czy jego zmienna byla referowana, czy dereferowana, wiec zawsze
uzywal wskaznikow. Powiedzial, ze ta mala gwiazdka zawsze mu przypominala...
R: No tak, w tym momencie zwykle mowie 'Dziekuje bardzo', ale niespecjalnie
mi sie to zgadza z rzeczywistoscia.
S: Niech mi Pan obieca, ze to zostanie opublikowane. Niech chociaz czuje, ze
mam czyste sumienie.
R: Powiadomie Pana, acz spodziewam sie, co powie moj wydawca...
S: W sumie... kto w to uwierzy ? Chociaz... moze mi Pan przeslac kopie tej
tasmy ?
R: Moge...
--------------------------------Translated by Sektor van Skijlen--------------
Jeszcze pare slow ode mnie. Nie zmienilo to mojego zdania nt. C++, szczerze
mowiac dystans do zbyt rozbudowanego programowania obiektowego zaczalem
odczuwac juz wczesniej (konkretnie budowania zbyt wielkiej hierarchii klas).
Nie przypuszczalem jednak, ze to wszystko spisek. Nie mozna oczywiscie
stwierdzic w 100%, ze jest to prawda, ale - jak sadze - Pan Andrzej
Lewandowski zaraz tutaj rzuci paroma potwierdzeniami tego wszystkiego z
praktyki (mowie powaznie). Kiedys probowalem sie bawic w robienie hierarchii
klas do jakichs projektow. Za kazdym razem malo nie zbzikowalem.
Wiec coz... ja nadal jednak uwazam, ze C++ jest niezlym jezykiem o wielu
cennych mozliwosciach, ale - jak Stroustrup powiedzial - kazdy ma wybor. Nie
kazdy musi wiedziec, czego powinien uzywac.
--
-=* P O Z D R A W I A M ! *=-
[-=* Ij waiet salden mijn spijr, ta faenen aire ats trauven diaenna *=-]
____....----````Sektor van Skijlen: sektor at beer.com''''----....____
<sPAm @ pROtEctIOn>
Technical Details
Message-ID:
<77o3bl$j0q$1@polonez.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <sektor@spam.org>
Newsgroups: pl.comp.lang.c,pl.comp.objects
Subject: Prawda o C++
Date: 15 Jan 1999 19:02:13 GMT
Lines: 314
Message-ID: <77o3bl$j0q$1@polonez.man.lodz.pl>
NNTP-Posting-Host: zly.kis.p.lodz.pl
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/5.5.1 (i86pc))
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit