wedzonka
26.08.03, 13:09
Dla niezorientowanych: to pan ktory stworzyl jezyk C++. Tu mowi o jego
jakosci i przyczynach powstania. Jesli to nie kaczka dziennikarska to
trzymajcie sie krzesla informatycy! :)
Zrodlo:
http://cs.sungshin.ac.kr/~dkim/C++-e.html
A tu wolne tlumaczenie (nie moje):
"1 stycznia 1998 roku Bjarne Stroustrup udzielił wywiadu dla jednego z
czasopism komputerowych - "IEEE Computer". Wydawcy myśleli, że będzie to
nawiązanie do minionych siedmiu lat programowania obiektowego za pomocą
języka, który sam stworzył. W trakcie wywiadu, prowadzący go redaktor został
dość niemile zaskoczony przez swojego rozmówcę, co było powodem późniejszej
chęci zatajenia treści wywiadu przez wydawców, tłumaczonej "dbaniem o dobro
przemysłu komputerowego". Jednak jak to zwykle bywa w takich przypadkach,
również i tutaj wystąpił tzw. przeciek informacji. Oto kompletny odpis tego
co zostało powiedziane, bez jakichkolwiek obróbek merytorycznych. Dlatego też
nie wygląda to tak, jak w przypadku innych, wcześniej uzgadnianych wywiadów.
Jednak myślę, że spotka się to z zainteresowaniem...
Redaktor: Minęło już parę lat odkąd zrewolucjonizowałeś świat programowania.
Co o tym myślisz, patrząc wstecz na swoje dokonania?
Stroustrup: Właściwie myślałem o tym tuż przed twoim przyjściem.
Pamiętasz?... Wszyscy pisali w C, a problemem było to, że byli w tym
cholernie dobrzy. Również uniwersytety były dobre w nauczaniu tego języka. W
bardzo szybkim tempie wypuszczali na świat wykwalifikowanych (podkreślam
słowo: wykwalifikowanych) absolwentów. To właśnie spowodowało problem.
Redaktor: Problem?
Stroustrup: Tak, problem. Pamiętasz jak dawniej wszyscy pisali w Cobol-u?
Redaktor: Oczywiście, ja też w tym pisałem...
Stroustrup: Więc na początku ci ludzie byli jak półbogowie. Mieli wysokie
pensje, i traktowani byli niemalże jak członkowie rodziny królewskiej.
Redaktor: To były czasy..., prawda?
Stroustrup: Właśnie! I co się stało? Firma IBM miała tego dosyć, więc
zainwestowała miliony dolarów na wytrenowanie tylu programistów, aż było ich
dosłownie na pęczki.
Redaktor: Z tego właśnie powodu ja też odszedłem. Pensje spadły w przeciągu
roku na tyle, że bardziej opłacało się pisanie artykułów do magazynów.
Stroustrup: Dokładnie. To samo stało się z programistami piszącymi w C.
Redaktor: No tak. Ale do czego zmierzasz?
Stroustrup: Otóż pewnego dnia, kiedy siedziałem w swoim biurze, myślałem nad
czymś co wprowadziłoby trochę równowagi do ówczesnej sytuacji. Zastanawiałem
się co by było, gdyby istniał język na tyle skomplikowany i trudny do
nauczenia, że nikt nie byłby w stanie zalewać rynku programistami. Miałem
parę pomysłów z X10, no wiesz, X windows. To dopiero było okropne środowisko
graficzne... chodziło tylko na maszynach typu Sun 3/60. Ale miało wszystkie
składniki jakich potrzebowałem: naprawdę śmiesznie skomplikowaną składnię,
mętne i niejasne funkcje oraz pseudo obiektową strukturę. Nawet w
dzisiejszych czasach, nikt kto chce pozostać przy zdrowych zmysłach, nie
pisze w czystym kodzie X-windows.
Redaktor: Chyba żartujesz...?
Stroustrup: Ani trochę. Był też kolejny problem. Unix został napisany w C, a
to znaczyło że każdy programista piszący w tym języku, mógł bardzo łatwo
przejść na pisanie systemów operacyjnych. Pamiętasz chyba ile wtedy
programista takich głównych systemów zarabiał ?
Redaktor: Jasne że tak, sam też się tym zajmowałem....
Stroustrup: Zatem ten nowy język musiał oddzielić się od Unix-a, ukrywając
wszystkie wywołania systemowe. To umożliwiłoby zarobienie paru groszy również
tym, którzy znali tylko DOS-a.
Redaktor: Nie wierzę, że to powiedziałeś...
Stroustrup: No cóż, minęło już trochę czasu i moim zdaniem większość ludzi
odkryła, że całe C++ to tylko strata czasu, choć muszę powiedzieć, że zajęło
im to o wiele dłużej niż przypuszczałem.
Redaktor: Zatem, jak udało ci się osiągnąć taki sukces ?
Stroustrup: To miał być tylko żart. Nigdy nie sądziłem, że ludzie mogliby
brać moją książkę na poważnie. Każdy, nawet półgłówek dostrzeże, że
programowanie zorientowane obiektowo jest nielogiczne, niewydajne i działa
wbrew intuicji.
Redaktor: Co?
Stroustrup: A co do wielokrotnego wykorzystywania kodu... - kiedy słyszałeś,
żeby jakaś firma działała w ten sposób ?
Redaktor: No..., właściwie to nigdy, ale...
Stroustrup: No właśnie! To znaczy, kilka próbowało w tamtych czasach. Była
taka firma z Oregonu - Mentor Graphics, która w '90 albo '91-szym roku
próbowała przepisać wszystko na C++ i niestety nie wyszło im to na dobre.
Było mi ich naprawdę żal ale uważam, że ludzie powinni uczyć się na własnych
błędach.
Redaktor: Dokładnie. A im się to nie udało ?
Stroustrup: Niestety ani trochę. Problem w tym, że większość firm ma
tendencję do tuszowania swoich poważniejszych zaniedbań, a wytłumaczenie się
akcjonariuszom ze straty 30 milionów dolarów, byłoby dość trudne.
Sprawiedliwości stało się zadość, jednak w końcu udało im się jakoś wyjść na
prostą.
Redaktor: Naprawdę? No więc sam widzisz, że programowanie obiektowe skutkuje.
Stroustrup: Prawie. Pliki .EXE były tak duże, że ich załadowanie na maszynie
HP ze 128MB RAM-u, trwało pięć minut. Programy uruchamiały się w ślimaczym
tempie. Właściwie myślałem, że będzie to główną wadą nowego języka, jednak
nikogo to nie obchodziło. Firmy takie jak Sun czy HP były zbyt zadowolone ze
sprzedaży swoich mocnych komputerów z ogromnymi zasobami, a wszystko po to
tylko, żeby uruchamiać na nich proste, banalne programy. Wyobraź sobie, że
kiedy pojawił się pierwszy kompilator C++ na komputerze AT&T, skompilowałem
pod nim zwykłe "Hello World" i wprost nie mogłem uwierzyć rozmiarowi tego
pliku - 2.1 MB.
Redaktor: Co? Zgoda, ale kompilatory bardzo się od tamtego czasu zmieniły.
Stroustrup: Czyżby? Weźmy na przykład ostatnią wersję g++ - nie uzyskasz
większej redukcji objętości jak zaledwie o niecałe 0.5 MB. Mógłbym przytoczyć
ci jeszcze kilka innych przykładów z całego świata. Swego czasu firma British
Telecom miała z tego powodu nie lada katastrofę, ale na szczęście udało im
się w porę usunąć problemy i zacząć od nowa. Australian Telecom nie miała
tyle szczęścia, co ich brytyjski odpowiednik. Teraz dochodzą mnie słuchy, że
Siemens buduje kolejnego "dinozaura" martwiąc się coraz bardziej o to, aby
sprzęt równoważył wymagania programów. Czy zatem wielopoziomowe dziedziczenie
nie jest po prostu pomyłką ?
Redaktor: Przecież C++ jest bezpiecznym językiem.
Stroustrup: Naprawdę w to wierzysz ? Czy kiedykolwiek pracowałeś nad
projektem w C++? Oto co się dzieje: po pierwsze, w C++ istnieje wystarczająco
dużo pułapek, dzięki którym tylko najbanalniejsze projekty działają za
pierwszym razem. Weź np. przeładowanie jakiegoś operatora. Pod koniec
projektu, prawie każdy moduł je posiada, bo w mniemaniu programistów powinno
ono wystąpić, przecież o tym mówiono im na kursac szkoleniowych. Zatem ten
sam operator w każdym kolejnym module oznacza coś zupełnie innego. A spróbuj
nad tym zapanować, kiedy będziesz miał około setki modułów... A co do
ukrywania danych: O Boże, czasami nie sposób się nie roześmiać, kiedy słyszę
o firmach starających się sprawić aby ich moduły ze sobą współpracowały.
Myślę, że słowo "synergetyczny" zostało specjalnie wymyślone, aby można było
szefowi projektu "przekręcać nóż w żebrach".
Redaktor: Muszę przyznać, że zaczynam być tym wszystkim przerażony.Mówisz, że
stworzyłeś ten język po to, aby wzrosły pensje programistów? To okropne!
Stroustrup: Nie zupełnie. Przecież każdy ma wybór. Nie przypuszczałem, że aż
tak bardzo wymknie się to spod kontroli, jednak stało się. C++ już stopniowo
wymiera, ale programiści dalej są dobrze opłacani - szczególnie ci, którzy
zajmują się tworzeniem projektów za pomocą tego steku bzdur. Zdajesz sobie
sprawę, że pracowanie nad duż