Caleb
The Chosen
- 511
- 271
@Kompowiec2 było tutaj.
package unikatowanazwa;
1 Stycznia 1998 roku, Bjarne Stroustrup udzielil wywiadu dla jednego z czasopism komputerowych - "IEEE Computer". Wydawcy mysleli, ze bedzie to nawiazanie do minionych siedmiu lat programowania obiektowego za pomoca jezyka, ktory sam stworzyl. W trakcie wywiadu, prowadzacy go redaktor zostal dosc niemile zaskoczony przez swojego rozmowce, co bylo powodem pozniejszej checi zatajenia tresci wywiadu przez wydawcow, tlumaczonej "dbaniem o dobro przemyslu komputerowego". Jednak jak to zwykle bywa w takich przypadkach, rowniez i tutaj wystapil tzw. przeciek informacji.
Oto kompletny odpis tego co zostalo powiedziane, bez jakichkolwiek obrobek merytorycznych. Dlatego tez nie wyglada to tak, jak w przypadku innych, wczesniej uzgadnianych wywiadow. Jednak mysle, ze spotka sie to z zainteresowaniem....
---
Redaktor: Minelo juz pare lat odkad zrewolucjonizowales swiat programowania. Co o tym myslisz, patrzac wstecz na swoje dokonania?
Stroustrup: Wlasciwie myslalem o tym tuz przed twoim przyjsciem. Pamietasz?... Wszyscy pisali w C, a problemem bylo to, ze byli w tym cholernie dobrzy. Rowniez uniwersytety byly dobre w nauczaniu tego jezyka. W bardzo szybkim tempie wypuszczali na swiat wykwalifikowanych (podkreslam slowo: wykwalifikowanych) absolwentow. To wlasnie spowodowalo problem.
Redaktor: Problem?
Stroustrup: Tak, problem. Pamietasz jak dawniej wszyscy pisali w Cobol-u?
Redaktor: Oczywiscie, ja tez w tym pisalem...
Stroustrup: Wiec na poczatku ci ludzie byli jak polbogowie. Mieli wysokie pensje, i traktowani byli niemalze jak czlonkowie rodziny krolewskiej.
Redaktor: To byly czasy..., prawda?
Stroustrup: Wlasnie! I co sie stalo? Firma IBM miala tego dosyc, wiec zainwestowala miliony dolarow na wytrenowanie tylu programistow, az bylo ich doslownie na peczki.
Redaktor: Z tego wlasnie powodu ja tez odszedlem. Pensje spadly w przeciagu roku na tyle, ze bardziej oplacalo sie pisanie artykulow do magazynow.
Stroustrup: Dokladnie. To samo stalo sie z programistami piszacymi w C.
Redaktor: No tak. Ale do czego zmierzasz?
Stroustrup: Otoz pewnego dnia, kiedy siedzialem w swoim biurze, myslalem nad czyms co wprowadziloby troche rownowagi do owczesnej sytuacji. Zastanawialem sie co by bylo, gdyby istnial jezyk na tyle skomplikowany i trudny do nauczenia, ze nikt nie bylby w stanie zalewac rynku programistami. Mialem pare pomyslow z X10, no wiesz, X windows. To dopiero bylo okropne srodowisko graficzne... chodzilo tylko na maszynach typu Sun 3/60. Ale mialo swszystkie skladniki jakich potrzebowalem: naprawde smiesznie skomplikowana skladnie, metne i niejasne funkcje oraz pseudo obiektowa strukture. Nawet w dzisiejszych czasach, nikt kto chce pozostac przy zdrowych zmyslach, nie pisze w czystym kodzie X-windows.
Redaktor: Chyba zartujesz...?
Stroustrup: Ani troche. Byl tez kolejny problem. Unix zostal napisany w C, a to znaczylo ze kazdy programista piszacy w tym jezyku, mogl bardzo latwo przejsc na pisanie systemow operacyjnych. Pamietasz chyba ile wtedy programista takich glownych systemow zarabial?
Redaktor: Jasne ze tak, sam tez sie tym zajmowalem....
Stroustrup: Zatem ten nowy jezyk musial oddzielic sie od Unix-a, ukrywajac wszystkie wywolania systemowe. To umozliwiloby zarobienie paru groszy rowniez tym, ktorzy znali tylko DOS-a.
Redaktor: Nie wierze, ze to powiedziales...
Stroustrup: No coz, minelo juz troche czasu i moim zdaniem wiekszosc ludzi odkryla, ze cale C++ to tylko strata czasu, choc musze powiedziec, ze zajelo im to o wiele dluzej niz przypuszczalem.
Redaktor: Zatem, jak udalo ci sie osiagnac taki sukces?
Stroustrup: To mial byc tylko zart. Nigdy nie sadzilem, ze ludzie mogliby brac moja ksiazke na powaznie. Kazdy, nawet polglowek dostrzeze, ze programowanie zorientowane obiektowo jest nielogiczne, niewydajne i dziala wbrew intuicji.
Redaktor: Co?
Stroustrup: A co do wielokrotnego wykorzystywania kodu... - kiedy slyszales, zeby jakas firma dzialala w ten sposob?
Redaktor: No..., wlasciwie to nigdy, ale...
Stroustrup: No wlasnie! To znaczy, kilka probowalo w tamtych czasach. Byla taka firma z Oregonu - Mentor Graphics, ktora w '90 albo '91-szym roku probowala przepisac wszystko na C++ i niestety nie wyszlo im to na dobre. Bylo mi ich naprawde zal ale uwazam, ze ludzie powinni uczyc sie na wlasnych bledach.
Redaktor: Dokladnie. A im sie to nie udalo?
Stroustrup: Niestety ani troche. Problem w tym, ze wiekszosc firm ma tendencje do tuszowania swoich powazniejszych zaniedban, a wytlumaczenie sie akcjonariuszom ze straty 30 milionow dolarow, byloby dosc trudne. Sprawiedliwosci stalo sie zadosc, jednak w koncu udalo im sie jakos wyjsc na prosta.
Redaktor: Naprawde? No wiec sam widzisz, ze programowanie obiektowe skutkuje.
Stroustrup: Prawie. Pliki.EXE byly tak duze, ze ich zaladowanie na maszynie HP ze 128MB RAM-u, trwalo piec minut. Programy uruchamialy sie w slimaczym tempie. Wlasciwie myslalem, ze bedzie to glowna wada nowego jezyka, jednak nikogo to nie obchodzilo. Firmy takie jak Sun czy HP byly zbyt zadowolone ze sprzedazy swoich mocnych komputerow z ogromnymi zasobami, a wszystko po to tylko, zeby uruchamiac na nich proste, banalne programy. Wyobraz sobie, ze kiedy pojawil sie pierwszy kompilator C++ na komputerze AT&T, skompilowalem pod nim zwykle "Hello World" i wprost nie moglem uwierzyc rozmiarowi tego pliku - 2.1 MB.
Redaktor: Co? Zgoda, ale kompilatory bardzo sie od tamtego czasu zmienily.
Stroustrup: Czyzby? Wezmy na przyklad ostatnia wersje g++ - nie uzyskasz wiekszej redukcji objetosci jak zaledwie o niecale 0.5 MB. Moglbym przytoczyc ci jeszcze kilka innych przykladow z calego swiata. Swego czasu firma British Telecom miala z tego powodu nie lada katastrofe, ale na szczescie udalo im sie w pore usunac problemy i zaczac od nowa. Australian Telecom nie miala tyle szczescia, co ich brytyjski odpowiednik. Teraz dochodza mnie sluchy, ze Siemens buduje kolejnego "dinozaura" martwiac sie coraz bardziej o to,
aby sprzet rownowazyl wymagania programow. Czy zatem wielopoziomowe dziedziczenie nie jest po prostu pomylka?
Redaktor: Przeciez C++ jest bezpiecznym jezykiem.
Stroustrup: Naprawde w to wierzysz? Czy kiedykolwiek pracowales nad projektem w C++? Oto co sie dzieje: po pierwsze, w C++ istnieje wystarczajaco duzo pulapek, dzieki ktorym tylko najbanalniejsze projekty dzialaja za pierwszym razem. Wez np. przeladowanie jakiegos operatora. Pod koniec projektu, prawie kazdy modul je posiada, bo w mniemaniu programistow powinno ono wystapic, przeciez o tym mowiono im na kursach szkoleniowych. Zatem ten sam operator w kazdym kolejnym module oznacza cos zupelnie innego. A sprobuj nad tym zapanowac, kiedy bedziesz mial okolo setki modulow... A co do ukrywania danych: O Boze, czasami nie sposob sie nie rozesmiac, kiedy slysze o firmach starajacych sie sprawic aby ich moduly ze soba wspolpracowaly. Mysle, ze slowo "synergetyczny" zostalo specjalnie wymyslone, aby mozna bylo szefowi projektu "przekrecac noz w zebrach".
Redaktor: Musze przyznac, ze zaczynam byc tym wszystkim przerazony. Mowisz, ze stworzyles ten jezyk po to, aby wzrosly pensje programistow? To okropne!
Stroustrup: Nie zupelnie. Przeciez kazdy ma wybor. Nie przypuszczalem, ze az tak bardzo wymknie sie to spod kontroli, jednak stalo sie. C++ juz stopniowo wymiera, ale programisci dalej sa dobrze oplacani - szczegolnie ci, ktorzy zajmuja sie tworzeniem projektow za pomoca tego steku bzdur. Zdajesz sobie sprawe, ze pracowanie nad duzym modulem programu w C++ nie jest mozliwe, jesli sam go nie napisales?
Redaktor: Jak to?
Stroustrup: Nie kojarzysz o czym mowie, prawda? A pamietasz dyrektywe: typedef?
Redaktor: Oczywiscie ze tak.
Stroustrup: Przypomnij sobie ile czasu zabiera sledzenie "po omacku" plikow naglowkowych tylko po to, aby dowiedziec sie ze np. 'RoofRaised' to liczba typu double. Wyobraz sobie ile czasu zabiera znalezienie wszystkich konkretnych dyrektyw typedef we wszystkich klasach jakiegos wiekszego projektu.
Redaktor: Po czym zatem poznales swoj sukces?
Stroustrup: Pamietasz ile zajmowalo stworzenie sredniej objetosci projektu w C? Okolo 6 miesiecy. To troche za krotko, aby facet majacy zone i dzieci mogl zarobic na utrzymanie i w miare godziwy standard zycia. A wez teraz napisz ten sam projekt uzywajac C++...i co otrzymasz? Powiem ci – jeden do dwoch lat. Czyz to nie wspaniale zapewnienie sobie pracy? Kolejna rzecz. Uniwersytety nie nauczaly C od tak dawna, ze teraz brakuje porzadnych programistow piszacych w tym jezyku. Szczegolnie tych, ktorzy wiedza cos na temat programowania pod systemami z rodziny Unix-a. Ilu teraz wiedzialoby co zrobic z 'malloc', skoro przez tyle lat uzywali 'new' - i nigdy nie zaprzatali sobie glowy sprawdzaniem wartosci zwracanego kodu. W rzeczywistosci, wiekszosc z programistow C++ pomija te zwracane wartosci. Co sie stalo ze starym, dobrym '-1'? Przynajmniej wiedziales, ze masz blad, bez grzezniecia w caly ten balagan z 'try', 'throw' i 'catch'.
Redaktor: Ale przeciez dziedziczenie oszczedza mnostwo czasu i pracy...
Stroustrup: Tak sadzisz? Czy kiedykolwiek zauwazyles roznice miedzy planowaniem projektu w C, a planowaniem projektu w C++? To drugie jest trzy razy dluzsze. Musisz dokladnie upewnic sie, ze wszystko co powinno byc dziedziczone, jest dziedziczone, a wszystko co nie powinno - nie jest. A potem i tak wystepuja w tym bledy. Kto przedtem slyszal o jakiejs konsumpcji pamieci przez program napisany w zwyklym C? A teraz znajdywanie ich, to chleb powszedni. Wiekszosc firm pod tym wzgledem poddaje sie, wypuszczaja na rynek swoj produkt, wiedzac ze cieknie z niego jak z dziurawego worka, no ale wtedy unikaja kosztow zwiazanych z lataniem tych dziur.
Redaktor: Sa do tego odpowiednie narzedzia...
Stroustrup:...z ktorych wiekszosc zostala napisana w C++.
Redaktor: Czy zdajesz sobie sprawe z tego, ze jesli opublikujemy ten wywiad, to prawdopodobnie zostaniesz
http://confiable.nazwa.pl/texty/text_Wywiad_Cpp.htm"zlinczowany"?
Stroustrup: Watpie. Jak juz powiedzialem, C++ minal juz swoj szczyt rozkwitu i popularnosci i zadna firma przy zdrowych zmyslach nie zacznie tworzenia projektu w C++ bez wstepnych prob. One powinny ich przekonac, ze zmierzaja prosto ku katastrofie. A jesli tego nie zauwaza, to niech maja na co zasluzyli. Wiesz, probowalem kiedys przekonac Dennis'a Ritchie, aby przepisal Unix-a w C++.
Redaktor: O moj Boze..., i co powiedzial?
Stroustrup: Na szczescie ma poczucie humoru. Mysle ze obaj, on i Brian Kernighan juz wtedy zorientowali sie o co mi chodzi, ale trzymali to w tajemnicy. Dennis powiedzial, ze jesli chce, to pomoze mi napisac w C++ wersje DOS-a.
Redaktor: A chciales?
Stroustrup: Wlasciwie to napisalem DOS-a w C++. Jak skonczymy, to dam ci wersje demo. Dziala to u mnie na Sparc 20. Chodzi jak rakieta przy czterech procesorach i zajmuje tylko jakies 70 MB twardego dysku.
Redaktor: A jak sie sprawuje na zwyklym PC?
Stroustrup: Teraz to sobie zartujesz. Czy nigdy nie widziales Windows'95? Mysle o nim jak o moim najwiekszym sukcesie. Prawie przegralem, zanim cokolwiek sie zaczelo.
Redaktor: Wiesz, ten pomysl na Unix++ naprawde mnie zastanawia. Gdzies na swiecie ktos na pewno sie za to wezmie.
Stroustrup: Na pewno nie, jesli przeczyta ten wywiad.
Redaktor: Przykro mi, ale nie wydaje mi sie, zebysmy mogli cokolwiek z tego opublikowac.
Stroustrup: Ale to jest opowiesc stulecia. Ja chce tylko, zeby wszyscy moi koledzy po fachu pamietali mnie za to, co dla nich zrobilem. Wiesz ile zarabia w dzisiejszych czasach programista znajacy C++?
Redaktor: Ostatnio slyszalem, ze ci najlepsi dostaja $70 - $80 za godzine.
Stroustrup: Widzisz? I zaloze sie, ze sa tyle warci. Sledzenie wszystkich tych "pulapek" jakie umiescilem w C++ nie jest wcale latwe. Tak jak juz mowilem wczesniej, kazdy programista piszacy w C++ czuje sie zwiazany jakas mistyczna obietnica do uzywania w swoich projektach kazdego przekletego elementu tego jezyka. Czasami to naprawde mnie denerwuje, nawet jesli jest zgodne z moim pierwotnym celem. Po tych wszystkich latach, prawie polubilem ten jezyk.
Redaktor: To znaczy, ze przedtem go nie lubiles?
Stroustrup: Nienawidzilem go. Wydaje sie nawet niezgrabny, zgodzisz sie? Ale kiedy zaczely przychodzic do mnie tantiemy..... no coz, sam rozumiesz.
Redaktor: Chwileczke. A co z referencjami? Musisz przyznac, ze ulepszyles wskazniki zwyklego C.
Stroustrup: Hmm... Zawsze sie nad tym zastanawialem. Najpierw myslalem, ze faktycznie je ulepszylem. Potem jednak rozmawialem o tym z pewnym facetem, ktory od poczatku pisal wszystkie swoje programy w C++. Powiedzial mi, ze nigdy nie moze zapamietac czy jego zmienne przekazywane sa przez referencje czy przez dereferencje, wiec zawsze uzywa wskaznikow. Powiedzial, ze ta mala gwiazdka zawsze mu przypomina.
Redaktor: Coz, w tym momencie zwykle mowie: 'dziekuje ci bardzo za wywiad', ale tutaj nie wydaje sie to stosownym.
Stroustrup: Obiecaj mi, ze to opublikujesz. Po prostu gryzie mnie sumienie, dlatego cie o to prosze.
Redaktor: Dam ci znac, ale juz przeczuwam co powie moj wydawca.
Stroustrup: Ale kto by w to uwierzyl? Mimo wszystko, czy mozesz przyslac mi kopie tasmy z tym wywiadem?
Redaktor: OK, to moge zrobic.
W pełnym tego słowa znaczeniu nie zostałem, bo nie przycisnąłem tematu. Jednak niedawno zaprogramowałem makro w excelu (VBA), bo potrzebowałem usprawnienia przy wrzucaniu baz danych na serwer. Przez 3 dni skanowałem po 10 h tutoriale polskie i angielskie i myślałem, że mi łeb wybuchnie, ale ogarnąłem. To chyba najlepszy sposób dla mnie uczenia się programowania z konkretnym celem.I co, został ktoś tym programistą?
U mnie też nie najlepiej. Na moim githubie zrobiłem projekt w C++ który co prawda się kompiluje ale nie uruchamia -_- #przegrywJednak niedawno zaprogramowałem makro w excelu (VBA), bo potrzebowałem usprawnienia przy wrzucaniu baz danych na serwer
Oczywiście. Ale działa to tylko wtedy, jeśli znasz podstawy i podstawy algorytmiki. Myślenie algorytmiczne łatwo osiągnąć przez scratcha, niedawno zacząłem. Potem już tylko odpowiednie komendy do danego języka się pisze i szlus.To chyba najlepszy sposób dla mnie uczenia się programowania z konkretnym celem.
A co, nie załapałeś od razu, że to dowcip?Ten wywiad nie jest prawdziwy:
http://www.stroustrup.com/bs_faq.html#IEEE