Sztywny zadaje pytania, wielcy programiści odpowiadają

czwartek, 21 wrzesień 2006, w kategoriach: Emacs, Linux, Programowanie, Ruby

W pewne gorące, nudne popołudnie naszedł mnie _Pomysł_. Za pomocą publicznie dostępnych adresów e-mail zadałem 10 pytań kilkunastu programistom, których uważam za ludzi ciekawych i których szanuje. Wymyślaniu pytań poświęciłem jakieś 5 minut - o to właśnie chciałbym ich zapytać gdyby dane mi było porozmawiać z którymś z nich osobiście przez powiedzmy 10 minut i nie miałbym czasu na zastanowienie. Ostatnie dwa pytania nie mają nic wspólnego z programowaniem, to prostu coś, co lubie wiedzieć o każdym człowieku z którym rozmawiam, takie hobby. Nie wszyscy chcieli na nie odpowiadać, co zresztą niespecjalnie mnie dziwi. To był pierwszy “wywiad” jaki przyszło mi zrobić, więc popełniłem też pewne błędy, które ujawniły się kiedy wszyscy Ci ludzie zaczeli odpowiadać… Ale i tak dowiedziałem się kilku ciekawych rzeczy, więc było warto.

Nie wszyscy odpowiedzieli na moje emaile, nie wszyscy zgodzili się też odpowiedzieć, może też dostanę jakieś odpowiedzi już po opublikowaniu tego - nie miałem cierpliwości czekać dłużej (i tak trwało to dwa tygodnie), więc od czasu do czasu mogą się tu pojawiać jakieś nowe osobistości (Bjarna Stroustrupa dodałem 03.08.2006).

No więc dajemy:

Występują:

Linus Torvalds - Autor jądra Linux

Dave Thomas - Autor m. in. “Pragmatycznego Programisty”, “Programming Ruby” i innych świetnych książek na temat programowania. Można poczytać jego przemyślenia na temat programowania tu.

David Heinemeier Hansson - Autor Rails - stosunkowo nowego frameworku do pisania aplikacji internetowych. Ma bloga tutaj.

Steve Yegge - najmniej znany ze sławetnego grona, ale na każde pytanie odpowiedział bardzo ciekawie, pracował kiedyś w Amazon.com, teraz prowadzi arcyciekawego jak dla mnie bloga.

Peter Norvig - kierownik Działu Badań w Google, znany Lisp-nik, autor wielu książek poświeconych Sztucznej Inteligencji. Zobacz Jego stronę domową.

Guido Van Rossum - Twórca języka Python.

Bjarne Stroustrup - Twórca C++, posiada stronę domową tutaj

James Gosling - Twórca Javy.

Tim Bray - Jeden z twórców specyfikacji XML i Atom, a także blogger.

A teraz “mięsko”:

- Jak nauczyliście się programowania? Czy szkoły się na coś przydały? A może nie zawracaliście sobie wogóle głowy kończeniem szkoł :) ?

Steve Yegge:

Nauczyłem się programować na kalkulatorze HP używając ich języka w Odwrotnej Notacji Polskiej opartego na stosie, kiedy miałem 17 lat. Próbwałem nauczyć się programać kilka razy wcześniej, ale nigdy jakoś tego tak naprawdę nie “złapałem”. Kalkulatory naukowe HP 28c i 48g były całkiem potężne i miały świetną dokumentację. Napisałem “przeglądarke siatek” (ang. wireframe viewer) na 48g - miałem książke o programowaniu 3D i skrupulatnie przetłumaczyłem przykładowy program w Paskalu na język stosu RPN. Kiedy skończyłem, program był całkiem słodziutki. Potem kupiłem komputer PC i Turbo Pascala - zacząłem uczyć się programowania na poważnie. Byłem przyzwoitym programistą kiedy poszedłem do collegu.

Poszedłem na Uniwersytet w Waszyngtonie i zdobyłem licencjat w Informatyce. Zdecydowanie było warto i uważam że wszyscy programiści powinni spróbować skończyć Informatykę jeśli to tylko możliwe.

Linus Torvalds:

Nie nauczyłem się programowania w szkole, ale głównie sam czytając książki i po prostu robiąc to (najpierw na Commodore VIC-20, potem na Sinclair QL).

Myśle jednak, że szczególnie studia na uniwersytecie były bardzo przydatne. Zamiast iść na politechnikę, udałem się na Uniwersytet w Helsinkach, który skupia się raczej na teorii, więc nauczanie nie było tam skoncentrowane na programowaniu (co stanowiło tylko małą część, I co w końcu i tak robiłem “na boku”), ale większość przedmiotów skupiała się na fundamentalnych koncepcjach i sprawach typu analiza złożoności.

To może się czasem wydawać nudne czy zbędną stratą sił, ale myśle że to było użyteczne i przeważnie to lubiłem. Myśle też, że jestem dzięki temu lepszym programistą

David Heinemeier Hansson:

Nauczyłem się programowania składając do kupy moją pierwszą stronę internetową w HTMLu. Potem chciałem dołożyć do niej pewne dynamiczne “klocki” i nauczyłem się najpierw ASP, potem PHP. Kiedy już wiedziałem jak wygląda programowanie, rozpocząłem łączone studia biznesowo-komputerowe.

Peter Norvig:

Uczyłem się Informatyki w szkole średniej i w kolledżu, ale zawsze czułem, że nauczyłem się więcej sam.

Dave Thomas:

W mojej drugiej szkole miałem Informatyke w miejscowym technikum. Kompletnie “połknąłem haczyk”: zakochałem się w programowaniu i zacząłem rozglądać się za kolledżami mającymi w swojej ofercie kursy w programowaniu. W końcu poszedłem do Imperial College, będącego częścią Uniwersytetu w Londynie. To był dopiero drugi rok w którym oferowali oni taki kurs i był on absolutnie wspaniały: pracownicy i studenci pracowali żeby udoskonalić dostepne materiały i wszyscy wiele się nauczyli. Studia na bakałarza dały mi bardzo silne podstawy w programowaniu. Zostałem tam, żeby zrobić doktorat, ale potem “przechwycił” mnie jeden ze startupów.

Ale ogólne pytanie brzmiało “jak nauczyłeś się programowania?”. Prawdziwą odpowiedzią jest “dalej się uczę…”. Myśle, że każdy dobry programista kontynuuje nauke przez całą swoją kariere. Nie chodzi tylko o nauke nowych języków i bibliotek: dobrzy programiści udoskonalają także swoje techniki i praktyki przez lata.

Guido Van Rossum:

Poszedłem na uniwersytet gdzie mieli wielki mainframe i gdzie były różne kursy komputerowe. To było dla mnie bardzo ważne.

James Gosling:

Początkowo byłem samoukiem. Dostałem moją pierwszą prace jako programista zanim poszedłem na studia, ale jestem zadowolony, że to zrobiłem. Bawiłem się świetnie. Uczyłem się do uzyskania stopnia doktora.

Bjarne Stroustrup:

Nauczyłem się programowania na studiach (w Aarhus, a potem w Cambridge). Na uniwersytetach nauczyłem się sporo użytecznych rzeczy włączając w to podstawy tego, czym potem się zajmowałem. Dodatkowo nauczyłem się dużo programując za pieniądze - gdzie zrozumienie rzeczywistych zadań, poprawność, możliwość “konserwacji”, dostawa na czas dawały większą presje niż miało to miejsce w czasie mojej edukacji.

Tim Bray:

Myślałem, że zostanę nauczycielem matematyki. Studia matematyczne na uniwersytecie wymagały kilku zajęć z informatyki.

- Jaką najważniejszą umiejętność powinien waszym zdaniem posiąść każdy programista?

Steve Yegge:

Pisanie i komunikacja werbalna. Nigdy nie zajdziesz daleko jako programista w żadnej z dziedzin, jeśli nie będziesz potrafił efektywnie przekazać ludziom swoich pomysłow. Programiści powinni mnóstwo czytać, ćwiczyć pisanie, chodzić na kursy pisania, a nawet ćwiczyć publiczne przemawianie.

Linus Torvalds:

To cecha nazywana “smakiem”.

Mam zwyczaj oceniać ludzi z którymi pracuje nie przez pryzmat tego jak bardzo są sprawni: niektórzy ludzie są w stanie nagrzmocić mnóstwo kodu; ale raczej patrząc na to jak reagują na kod innych ludzi, a także oczywiście jak ich własny kod _wygląda_ i jakie wybrali rozwiązania. To mówi mi, czy mają “dobry smak”, czy nie, a istotą sprawy jest to, że ludzie bez “dobrego smaku” często nie są dobrzy w ocenianiu kodu innych, a ich własny kod nie jest rewelacyjny.

Ale hej, to nie jedyna sprawa. Inna cecha która jest bardzo użyteczna, szczególnie w projekcie z otwartymi źródłami, jest umiejętność skutecznego komunikowania co i jak się chcę zrobić. Umiejętność wytłumaczenia innym _dlaczego_ robisz coś w taki, a nie inny sposób jest bardzo cenna, a nie każdy ją posiada.

To powiedziawszy, w końcu mamy też ludzi którzy po prostu grzmocą mnóstwo dobrego kodu. Mogą nie być dobrzy w tłumaczniu go, mogą nie mieć dobrego smaku, ale ich kod działa dobrze. Czasem potrzebujesz innej osoby (takiej która ma trudny do opisania “dobry smak”) żeby może pomasować ten kod do formy w której będzie on użyteczny jako część większej całości, ale umiejętność napisania przejrzystego kodu dla trudnych problemów jest oczywiście dość istotną częścią każdego programisty.

David Heinemeier Hansson:

Silne wyczucie wartości. Umiejętność zadania sobie pytania “Czy warto robić to co robię teraz?”. Mnóstwo programistów wydaję się tracić kupe czasu na rzeczy, które nie mają znaczenia. I nie poświęcać go wystarczająco dużo na rzeczy które to znaczenie mają.

Peter Norvig:

Myśle, że nie ma takiego czegoś, ale powiedzmy koncentracja.

Dave Thomas:

Pasja.

Guido Van Rossum:

Twoje pytania są raczej ogólne i trudne do odpowiedzenia :-) Myśle że umiejętność ugotowania jajka na śniadanie jest bezcenna.

James Gosling:

Być zmotywowanym. Żeby być naprawdę dobrym, musisz kochać to co robisz.

Bjarne Stroustrup:

Umiejętność jasnego myślenia. Programista musi rozumieć problemy i tworzyć ich rozwiązania.

Tim Bray:

Umiejętność stawiania dowodów przed intuicją.

- Czy uważacie że matmatyka i/lub fizyka jest ważna dla programisty? Dlaczego?

Steve Yegge:

Istnieje duża gałąź matematyki - nazywana matematyką “konkretną” lub “dyskretną” - która jest bardzo ważna dla programistów. Zawiera w sobie takie dziedziny jak prawdopodobieństwo, kombinatoryka, teoria grafów, dowody indukcyjne i inne użyteczne narzędzia. Zachęcałbym programistów do uczenia się matematyki dyskretnej w jakimkolwiek wymiarze jest to dla nich możliwe. Nawet troszeczkę jest lepsze niż wcale.

Jeśli chodzi o bardziej tradycyjną matematykę, cóż, nie używam jej tak często, ale jest bardzo przydatna kiedy jej potrzebuje. Np. rachunku różniczkowego potrzebowałem w poprzednim roku tylko raz w mojej pracy. Musiałem policzyć w przybliżeniu obciążenie w godzinie szczytu dla serwisu którego obciążenie “ma się do słońca” w przybliżeniu jak sinusoida. Najprostszym sposobem żeby to zrobić było całkowanie jednej dwudziestej czwartej części krzywej na raz. Gdybym nie znał rachunku różniczkowego, nie wiedziałbym jak zrobić w miare dokładne przybliżenie.

Kiedy pisałem mozą grę, Wyvern, posiadanie rzetelnej praktycznej wiedzy z podstaw geometrii na płaszczyźnie było strasznie przydatne. I całkiem pospolite jest używanie algebry i algebry liniowej regularnie. Rzadko jednak używam trygonometrii i analizy w pracy.

Powiedziałbym że moje podstawy matematyczne uczyniły mnie lepszym programistą w 5 do 10 procentach. Gdybym znał dużo więcej matematyki, niewątpliwie byłbym dużo lepszym programistą, dlatego uczę się i ćwiczę matematykę wiele godzin w tygodniu.

Kocham fizykę i mam toczący się, życiowy cel żeby spróbować zrozumieć podstawy mechaniki kwantowej. Ale nigdy nie zauważyłem żeby fizyka w jakikolwiek sposób przydała mi się w pracy programisty. Byłoby oczywiście inaczej gdybym robił coś z fizyką, np. programował gry 3D czy robił niektóre z rodzajów symulacji.

Linus Torvalds:

Osobiście uważam że dość solidne podstawy matematyczne są dobrą rzeczą. Nie jestem pewien jeśli chodzi o fizyke, ale jestem przekonany że zrozumienie matematyki i posiadanie dobrych jej podstaw pomaga w byciu lepszym programistą. Choćby dlatego że modele myślowe są podobne - możesz zbudować dowolny zestaw reguł, ale musi on być spójny.

David Heinemeier Hansson:

Nieszczególnie. Przynajmniej nie dla tego rodzaju programowania biznesowego potrzebnego przy aplikacjach internetowych. Uważam że dużo ważniejsze jest to, że ktoś dobrze pisze (w sensie języka naturalnego - przyp. tłumacza).

Peter Norvig:

Tak. Wiele idei wywodzi się z matematyki: indukcja, rekursja, logika itp.

Dave Thomas:

Może. Ale szczerze mówiąc, nie widziałem wielkiej korelacji pomiędzy tego typu dyscyplinami i dobrymi programistami.

Widziałem za to mocną korelacje pomiędzy ludźmi którzy mieli pewnie doświadczenie z muzyką i umiejętnościami programistycznymi. Nie wiem dlaczego, ale przypuszczam że cześć tego obszaru mózgu który czyni kogoś muzykalnym, robi z niego także dobrego programistę.

Guido Van Rossum:

Matematyka, tak (niektóre części; nie obchodzą mnie równania różniczkowe, ale algebra i logika są ważne). Wątpie żeby fizyka była ważne, chociaż oczywiście zawsze warto interesować się różnymi rzeczami.

James Gosling:

Tak! One uczą cię logiki i dedukcji. Myślenia analitycznego. I nie można zastąpić matematyki jeśli chodzi o analize algorytmów.

Bjarne Stroustrup:

Zależy od programisty i zadania. Niektóre gałęzie matematyki często się przydają, fizyka rzadziej, jednak fizyka to jeden z najlepszych sposobów na nauczenie się praktycznej matematyki.

Tim Bray:

W moim przypadku, praktycznie nigdy nie użyłem mojej uniwersyteckiej matematyki aby pomogła mi w programowaniu.

- Co będzie następnym “wielkim przełomem” w programowaniu komputerów? Programowanie zorientowane-X, język Y, komputery kwantowe, co?

Steve Yegge:

Myśle, że programowanie aplikacji internetowych powoli będzie stawać się najważniejszym rodzajem programowania po stronie klienta. Myśle, że zdezaktualizuje ono wszystkie inne toolkity: GTK, javowe Swing/SWT, QT i oczywiście wszystkie te specyficzne dla platformy jak Cocoa czy Win32/MFC/itp.

Nie stanie się to w przeciągu jednego dnia. Powoli zmierzamy w tym kierunku od 10 lat i może minąć kolejne 10 zanim aplikacje internetowe “wygrają”. Narzędzia, języki, API, protokoły i technologie przeglądarek będą musiały poprawić się o wiele w stosunku do tego co możemy z nimi zrobić dziś. Ale każdego lata stają się one odrobinę bliższe celu i ja sam w końcu zdecydowałem programować od teraz jedynie aplikacje internetowe.

Microsoft i Apple zdecydowanie nie chcą żeby to się stało, więc koniecznym pierwszym krokiem musiałoby być zdominowanie rynku przez przeglądarke open-source jak Firefox, do czego z kolei będzie potrzebny jakiś killer-app tylko dla Firefoxa (killer-appem byłoby coś jak iTunes, coś czego każdy na świecie chcę używać, tak bardzo żeby nawet ściągnąć Firefoxa do użytku tego.)

Linus Torvalds:

Nie wydaję mi się że zobaczymy jakiś “wielki skok”. Widzeliśmy mnóstwo narzędzi czyniących naszą codzienną szarpanine prostszą - gdzie najważniejszymi są języki wysokiego poziomu i integracja prostych baz danych w językach. Ale większość “modnych technologi” miała dość ograniczone zastosowanie.

Ja osobiście uważam na przykład że “Visual Basic” zrobił dla programowania więcej niż “Programowanie Obiektowe”. Ale ludzie śmieją się z VB i mówią, że to zły język, a o językach OO mówią od dekad.

I nie, Visual Basic nie był świetnym językiem, ale myśle na przykład, że proste interfejsy do baz danych wykonane w VB były w dużym stopniu ważniejsze niż zorientowanie obiektowe.

David Heinemeier Hansson:

Staram się nie przewidywać przyszłości. Nie wierzę zbytnio w jej przepowiadanie. Najlepszym sposobem przewidzenia przyszłości jest jej stworzenie.

Peter Norvig:

Przetwarzanie rozproszone na duża skalę.

Dave Thomas:

Następna wielka rzecz w programowaniu będzie przyćmiona przez następną-następna wielką rzecz w programowaniu itd. itp. Jestem trochę zmęczony niekończącym się poszukiwaniem wielkich rzeczy, ponieważ robiąc to ludzie zapominają o prawdziwych problemach: o solidnym wykonywaniu rzeczy podstawowych. Musimy stać się o wiele lepsi w rozmawianiu z naszymi klientami, skupić się na dostarczaniu wartości i byciu dumnym z tego co robimy. Programista który potrafi to robić może dostarczać świetne programy z użyciem jakichkolwiek narzędzi i nie musi się martwić śledzieniem mód i trendów.

Guido Van Rossum:

Przepraszam, ale nie mam kryształowej kuli. Przwidziałem CGI koło 5 lat po tym jak zostało wynalezione :-)

James Gosling:

Dwie rzeczy które mnie najbardziej teraz zajmują to przetwarzanie równoległe i złożoność.

Bjarne Stroustrup:

Nie wiem i nie chcę zgadywać.

Tim Bray:

Nie mam pomysłu.

- Gdybyście mieli trzy miesiące na nauczenie się jednej, relatywnie nowej technologi, co byście wybrali?

Steve Yegge:

Tak się składa że mam 3 miesiące (”po godzinach”) i spędzam je na uczeniu się Dojo (http://dojotoolkit.org) i zaawansowanego AJAXu/DHTML. Uczę się tego pisząc całkiem ambitną aplikację internetową. Dojo jest naprawdę cool i jestem pewien, że będzie stawać się z czasem tylko coraz lepsze.

Linus Torvalds:

Hmm. Bardzo chciałbym zająć się FPGA, ale zawsze byłem zbyt zajęty żeby naprawdę się przysiąść i zacząć uczyć. Kocham zabawę z hardwarem: to oczywiście jeden z powodów dla którego skończyłem rozwijając systemy operacyjne, ponieważ to jedna z dziedzin (razem z kompilatorami) która jest tak blisko jak tylko sie da hardware’u, bez jego projektowania czy budowania.

David Heinemeier Hansson:

Programowanie Cocoa dla Maków

Peter Norvig:

Chciałbym lepiej znać Javascript. I flash.

Dave Thomas:

Jeśli “nowa” znaczy “nowa dla Dave’a Thomasa” wtedy myśle, że chciałbym zacząć intensywnie uczyć się grać na pianinie.

Jeśli “nowa” oznacza sprawy związane z technologią, myśle że wybrałbym rzeczy związane z ułatwieniami dla ludzi niepełnosprawnych.

Guido Van Rossum:

Snowboarding.

James Gosling:

Dla zabawy, nadrobiłbym zaległości z nowinkami w dziedzinie renderowania 3d. Napisałbym pewnie photon-map renderer (cokolwiek to jest - przyp. tłumacza).

Bjarne Stroustrup:

Jest mało rzeczy jakiejkolwiek wagi których można się nauczyć w trzy miesiące. Myśle, że powinieneś myśleć o rozwijaniu się w dziedzinie o solidnych fundamentach.

Tim Bray:

Bezpieczeństwo, szyfrowanie, podpisy cyfrowe, tożsamość itp. To duży problem dla mnie, że nigdy się tego nie nauczyłem.

- Jak myślicie, co czyni jednych programistów 10 lub 100 razy bardziej produktywnymi od innych?

Steve Yegge:

Myśle że jeśli przez chwilę zastanowisz się dlaczego nie wszyscy sportowcy są równie dobrzy, będziesz miał odpowiedz. Thomas Edison miał również pasujący cytat, którzy może ci dostarczyć pewnych wskazówek.

Linus Torvalds:

Naprawdę nie wiem. Myśle, że niektórzy ludzie po prostu łatwiej koncentrują się na ważnych sprawach, pozatym ważne jest po prostu programowanie. Większość dobrych programistów których znam, zajęła się tą dziedziną dość wcześnie.

David Heinemeier Hansson:

Umiejętność przedefiniowania trudnych zadań, aby stały się łatwe.

Peter Norvig:

Umiejętność zmieszczenia całego problem w głowie na raz.

Dave Thomas:

Obchodzi ich to, co robią.

Guido Van Rossum:

Genetycznie inna struktura mózgu.

James Gosling:

Myślą o tym co robią. Nie śpieszą się i nie zbijają rzeczy razem. Mają holistyczny obraz tego, co ma zostać zbudowane.

Bjarne Stroustrup:

Przede wszystkim ogólny brak profesjonalizmu i odpowiedniej edukacji, które to sprawiają że przeciętny poziom jest zbyt niski. Pozatym niektórzy ludzi posiadają kombinację “sprytu” (umiejętność jasnego myślenia i rozumienia natury rzeczy), doświadczenia i umiejętności posługiwania się narzędziami. Programowanie zostawia na to więcej miejsca, ponieważ jest kombinacją teorii i praktyki - z których żadne nie zda się na wiele bez wiedzy ze specyficznego obszaru.

Tim Bray:

Zadziwiająca różnorodność ludzkich umysłów.

- Jakie są Wasze ulubione narzędzia (system operacyjny, język programowania/skryptowy, edytor tekstu, system kontroli wersji, shell, baza danych, inne narzędzia bez których nie moglibyście żyć…) i dlaczego lubicie je bardziej od innych?

Steve Yegge:

System operacyjny: Unix! Używam teraz linuxa, cygwina i darwina mniej więcej równo często. Nie można go pobić jeśli chodzi o produktywność narzędzi. Każdy programista powinien nauczyć się używać wszystkich narzędzi z /bin i /usr/bin.

Język skryptowy: Ruby. Jestem biegły w prawie wszystkich głównych językach skryptowych: Perl, Python, Tcl, Lua, Awk, Bash i inne o których zapomniałem. Ale jestem naprawdę leniwy, a Ruby jest najłatwiejszy, więc to idealny dla mnie wybór.

Język programowania: Nie mam ulubionego, wszystkie ssą. Preferowałem dotąd Javę bo to silna, przenośna platforma z dobrymi narzędziami i dobrymi bibliotekami. Ale Java albo wyewoluje, albo umrze - nie jest teraz wystarczająco dobra żeby dominować w nieskończoność.

Edytor tekstu: Emacs, bo na chwilę obecną jest najlepszy.

Kontrola wersji: SVN. Perforce jest lepszy, ale bardzo drogi.

Shell: Bash, bo jestem za leniwy żeby nauczyć się lepszego.

Baza danych: MySQL, nic nawet nie zbliża się do tego poziomu.

Inne: Gimp jest bezcenny, a także szaleńczo nieintuicyjny. Używam go przez lata i dalej ledwie moge coś z nim zrobić. Ale, o ironio, nie mógłbym bez niego funkcjonować.

Firefox jest coraz bardziej krytyczną częścią mojego zestawu narzędzi. Czuje się niedotleniony kiedy muszę używać IE albo Safari.

Zauważ, że wszystkie te narzędzia (Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce) mają pewien wspólny mianownik: wszystkie są roszerzalne np. mają API programistyczne. Świetni programiści uczą się programować swoje narzędzia, a nie tylko je wykorzystywać.

Linus Torvalds:

W rzeczywistości nie używam aż tylu narzędzi, a dla wielu z nich spędziłem troche własnego czasu żeby działały one dla mnie. Oczywiście sytem operacyjny jest największym tego przykładem, ale napisałem też swój system kontroli wersji (git), a edytor tekstu którego używam (micro-emacs) również dostosowałem i roszerzyłem.

Poza tymi trzema częściami, jedyna rzecz która mnie obchodzi to klient poczty. Używam “pine” - nie dlatego, że to czytnik e-mail wszechczasów, tylko dlatego że jestem do niego przywyczajony i robi on to czego potrzebuje przy zachowaniu minimum bajerów.

David Heinemeier Hansson:

OS X, TextMate, Ruby, Subversion, MySQL. Ten zestaw obecnie czyni mnie szczęśliwym. Lubie narzędzia zrobione ze smakiem, które skupiają się na rzeczach mających znaczenie.

Peter Norvig:

Nie lubie wszystkich trzech główny systemów operacyjnych - Windowsa, Maca, Linuxa. Lubię Pythona i Lispa. Emacs.

Dave Thomas:

Przesiadłem sie na Maki pare lat temu po byciu Linuxowcem przez więcej niż 10 lat. Narzędzia nie koniecznie są lepsze, ale nie muszą być “ostrzone” ani “pielęgnowane” tak często, co pozwala skupić się na ich używaniu.

Nie jestem wielkim fanem pojedynczych narzędzi: staram się przełączać dość często żebym mógł zdobyć doświadczenie z jak największą ich liczbą. Obecnie używam OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres i całe mnóstwo innych mniejszych “wspomagaczy” produktywności. Kto wie czego będe używał za rok.

Guido Van Rossum:

Unix/Linux, Python, vi+emacs, Firefox.

James Gosling:

Obecnie żyje w NetBeans. Robi wszystko to, co chcę - bardzo czysto, prostu i efektywnie. To najprzyjemniejsze środowisko jakiego używałem.

Bjarne Stroustrup:

Unix, sam (bardzo prosty edytor tekstu) i oczywiście dobry kompilator C++.

Tim Bray:

Lubie systemy oparte na Unixie, dynamiczne języki jak Python i Ruby oraz statyczne języki jak Java (szczególnie API Javy), Emacs, cokolwiek, bash, cokolwiek, NetBeans.

- Jaka jest Wasza ulubiona książka związana z programowaniem?

Steve Yegge:

Człowieku, to będzie trudne. Może “Gödel, Escher, Bach: an Eternal Golden Braid” Hofstadter’a? Wprawdzie nie jest ściśle o programowaniu. Jeśli masz na myśli dokładnie “ulubioną książkę o programowaniu” wtedy może “Struktura i Interpretacja Programów Komputerowych”.

Linus Torvalds:

Heh. W czasach kiedy czytałem, preferowałem raczej czytanie belterystyki albo książek niezwiązanych z komputerami (stare ale jare: “Samolubny gen”, Richard Dawkins).

Jeśli chodzi o programowanie, jedyną prawdziwą książką programistyczną która przychodzi mi do głowy jest klasyczny Keringhan i Ritchie “Język C.”, bo jest to zdumiewająco pożyteczna książka, a przy tym bardzo dobra w czytaniu i _krótka_. Biorąc pod uwagę że możesz zasadniczo nauczyć się z niej jednego z najważniejszych języków programowania naszych czasów, fakt że jest taka krótka i i “lekka” jest po prostu cudem.

Dużo książek które mi się podobały były nie o programowaniu per se, ale o architekturze komputerów i hardwarze. Jest oczywiście książka Pattersona i Henessy’ego o architekturze komputerów, ale dla mnie osobiście nawet ważniejsza jest “Programowanie 386″ Crawforda i Gelsingera, której używałem kiedy zacząłem Linuxa.

Z podobnych powodów mam słabość do “Systemów Operacyjnych: Projektowanie i implementacja” Andrew Tanenbauma.

David Heinemeier Hansson:

Lubię “Extreme Programming Explained” za odrzucanie popularnego sposobu myślenia o praktykach programistycznych i “Patters of Enterprise Application Architecture” za właściwe proporcje pomiędzy abstrakcyjnością a konkretnością.

Peter Norvig:

Struktura i Interpretacja Programów Komputerowych.

Dave Thomas:

Zależy co rozumiesz poprzez “ulubiona”. Prawdopodobnie najlepiej napisaną książką jaką czytałem z tej dziedziny to “IBM/360 Zasady Działania” IBMu.

Guido Van Rossum:

“Żywe srebro” Stephensona.

James Gosling:

Perełki Oprogramowania Jona Bentley’a

Bjarne Stroustrup:

K&R.

Tim Bray:

Jona Bentley’a Perełki Oprogramowania

- Jaka jest Wasza ulubiona ksiażka nie związana z programowaniem?

Steve Yegge:

Tylko jedna ksiązka? Żądasz niemożliwego. Jest zbyt dużo świetnych ksiązek, żeby wybrać tylko jedną.

Moje ulubione książki które przeczytałem w tym miesiącu to “Gwiezdny pył” (Neil Gaiman) i “‘Ja’ Jaźni” (Hofstadter/Dennet).

Moi ulubieni pisarze to Kurt Vonnegut Junior i Jack Vance

Linus Torvalds:

Wspomniałem już o “Samolubnym genie” Dawkins. Z fikcji jest zbyt dużo książek które czytałem i mi się podobały, ale mało było takich o których mógłbym powiedzieć “ulubione”. Rzadko czytam książki ponownie, a wybór zmieniałby się w czasie. Czytam głównie science fiction i fantasy, np. “Obcy w obcym kraju” Heinleina było moją ulubioną książką kiedy byłem nastolatkiem, ale dziś to jest już dla mnie mniej oczywiste.

David Heinemeier Hansson:

1984, George Orwell.

Guido Van Rossum:

“Żywe srebro” Stephensona.

James Gosling:

“Strzelby, zarazki, maszyny” - Jared Diamond

Bjarne Stroustrup:

To zmienia się w czasie. Obecnie są to książki z serii O’Brian’s Aubrey/Maturin. Zobacz też tu: http://www.research.att.com/~bs/literature.html.

Tim Bray:

“Jeden dzień Iwana Denisowicza”

- Jacy są Wasi ulubieni muzycy/zespoły/wykonawcy/kompozytorzy?

Steve Yegge:

Ulubione gatunki: klasyka, soundtracki z anime, muzyka z gier wideo
Ulubieni kompozytorzy: Rachmaniow, Chopin, Bach
Ulubieni wykonawcy: David Russel (gitara klasyczna), Światoslaw
Richter (fortepian)
Ulubione Anime OST: Last Exile, Haibane Renmei

Linus Torvalds:

Nie słucham tak dużo muzyki, ale kiedy już to robie, preferuje klasyczny rock od Pink Floyd do Beatelsów, Queen i The Who.

David Heinemeier Hansson:

Lubie mnóstwo gatunków. Beth Orton, Aimee Mann, Jewel, Lauryn Hill. Wszystkie te przykłady podpadają pod “dziewczyny z gitarami” ;).

Guido Van Rossum:

Philip Glass.

James Gosling:

Lubie muzyków folkowych: Christine Lavin, Woody Guthrie, Pete Seeger.

Bjarne Stroustrup:

Zespół: The Dixie Chicks. Kompozytor: Beethoven.

Tim Bray:

Poczytaj mój blog.

[ Tutaj można komentować po polsku, podziękowania dla Martineza za pomoc z moim nieco kijowym angielskim. ]

Dodaj do del.icio.us | Dodaj do wykop.pl

Komentarze ():

kamil wdowicz, 23 lipiec 2006, 10:07 am

wspaniały wywiad!!! gratulacje,
photon-map renderer: coś innego od raytracingu - dające lepsze efekty.

KoNman, 23 lipiec 2006, 10:07 am

Świetnie się to czyta, chociaż nie jestem programistą. Gratuluję pomysłu i wykonania.

radzio, 23 lipiec 2006, 10:07 am

Wspaniały wywiad. Gratuluję podobnie jak przedmówca pomysłu i wykonania.

sztywny, 23 lipiec 2006, 11:07 am

Poprawione.

losamorales, 23 lipiec 2006, 11:07 am

bookjunky: no na pewno warto znać ;)

eRiZ, 23 lipiec 2006, 11:07 am

niezle :)

Ale co do matematyki, to faktycznie - czesto jest jak piate kolo u wozu.
GTK? Na Unixach, ok - zgodze sie, ale pod Win32, to wydajnoscia nie grzeszy…

losamorales, 23 lipiec 2006, 11:07 am

świetny wywiad! dzieki

yashke.com » 23-07-06 Przegląd sieci, 23 lipiec 2006, 11:07 am

[...] 06 Przegląd sieci
Filed under: przegląd sieci — losamorales @ 11:14 am

Sztywny zadaje pytania - wielcy programiści odp [...]

qrdupelek, 23 lipiec 2006, 11:07 am

Steve Yegge - jego odp. na drugie pytanie! zapamietac, zapamietac, zapamietac…

bookjunky, 23 lipiec 2006, 11:07 am

świetny wywiad, gratulacje
ale jedna uwaga, Tim Bray ma na myśli książkę Sołżenicyna “Jeden dzień Iwana Denisowicza” (http://www.tanieksiazki.com.pl/go/_info/?id=1381)
naprawdę wstyd że to jedyny tytuł którego nie przetłumaczyłeś
trzeba znać!

agnes, 23 lipiec 2006, 1:07 pm

Super pomysł! Czekam na kolejny odcinek
PS. Last Exile, nie Exila :)

endel, 23 lipiec 2006, 1:07 pm

Gratulacje, swietny pomysl ! Proponuje zrobic z tego jakis cykl… :)

stan, 23 lipiec 2006, 3:07 pm

najbardziej zaciekawił mnie temat matematyki, bo sam programuje, z matematyka nie jest moją dobrą stroną - chyba lenistwo i brak ćwiczeń. uważam, że nie trzeba jej znać aby programować(ale przydają się podstawy logiki,które wykładane są nawet na filozofii, więc…). ogólnie bardzo dobry wywiad ;)

VooDoo Homepage » Blog Archive » Kilka pytań do znanych programistów, 23 lipiec 2006, 3:07 pm

[...] Wszystkich zainteresowanych zapraszam do lektury tego nietypowego “wywiadu”. [...]

RMK, 23 lipiec 2006, 4:07 pm

Ciekawy pomysł.
PhD to Doctor of Philosophy od łacińskiego “Philosophiæ Doctor” [za Wikipedią ;-)]

sztywny, 23 lipiec 2006, 5:07 pm

Graham wykręcił się swoim blogiem :P

Anonim, 23 lipiec 2006, 5:07 pm

rewelacja Panie Kolego! dobra robota! czytam to i poprawiłeś mi chumor. pozdrawiam

tomek, 23 lipiec 2006, 5:07 pm

zapomniałeś o Paulu Grahamie :)

regisu, 23 lipiec 2006, 6:07 pm

Świetny pomysł, bardzo mi się spodobało:)

Seban, 23 lipiec 2006, 6:07 pm

Cholernie ciekawe to wszystko! Jak widać matematyka się przydaje albo i nie ;-)

paweł, 23 lipiec 2006, 7:07 pm

dołączam się do gratulacji, świetny pomysł - niby nic konkretnego, ale cholernie rozwija

amag, 23 lipiec 2006, 9:07 pm

Gratuluję odwagi i samego pomysłu z pisaniem do “wielkich tego świata” ;-) Niesamowita lektura.

DT, 23 lipiec 2006, 9:07 pm

Swietny pomysł, dobra realizacja,
wiele się dowiedziałem i nauczyłem.
Dzięki :)

jakubek, 23 lipiec 2006, 10:07 pm

Jestem pod wrażeniem. Dzięki.

Anonim, 23 lipiec 2006, 10:07 pm

PhD - Doctor of Philosophy - po polsku “doktor” - stopien naukowy. Dawniej przyznawany wylacznie z dziedziny filozofii (stad angielska nawa), dzis tytul naukowy z kazdej dziedziny.

mcveat, 23 lipiec 2006, 11:07 pm

Zawsze chciałem coś takiego przeczytać
Dzięki

piotrb, 24 lipiec 2006, 12:07 am

Bechelor - to odpowiednik naszych studiów pierwszego stopnia - licencjat || inżynierskie. Przez wielu pracodawców cenione bardziej niż magister ;)

piotrb, 24 lipiec 2006, 12:07 am

No i teraz przeczytałem po angielsku i muszę się poprawić - w Polsce nie jest popularne określenie bakałarz - słyszałeś je kiedyś w “naturalnym” języku?

sztywny, 24 lipiec 2006, 5:07 am

Zastąpiłem PhD doktorem i Bechelora licencjatem - będzie dobrze? Słowo “bakałarz” nie jest może wielce znane, ale istnieje i chyba jest poprawne - nie miałem już siły wgłębiać się w zawiłości zagranicznego systemu edukacji, dość miałem sklejania maili i tłumaczenia ;) Dlatego dziękuje za poprawki.

pirol, 24 lipiec 2006, 12:07 pm

W odpowiedzi Steve Yegge’a na pytanie o przydatność matematyki/fizyki: nie ,,intergrowanie” ale ,,całkowanie”.

IT by Domel » Wywiad ze znanymi programistami, 24 lipiec 2006, 12:07 pm

[...] m tego s�owa znaczeniu (pisanie aplikacji webowych te�) polecam przeczyta� wywiad ze znanymi programistami przeprowadzon [...]

heidi, 24 lipiec 2006, 3:07 pm

zapomniales jeszcze o Theo de Raadt (OpenBsd)

Śniegowy, 24 lipiec 2006, 4:07 pm

Guido Van Rossum:
“Myśle że umiejętność ugotowania jajka na śniadanie jest bezcenna.”

Wydawałoby się, że ten gość ma najmniej do powiedzenia i jego odpowiedzi są jakby urwane z choinki, ale po głębszym zastanowieniu… Chyba gość ma odpowiedni dystans do swojej pracy i nie jest mega-uber-geekiem myślącym w kategorii zer i jedynek. A to dobrze świadczy o człowieku!

Dobra jajecznica na masełku po sesji kodowania jest git. :]

sztywny, 24 lipiec 2006, 5:07 pm

Do RMSa również napisałem, ale otrzymać od niego odpowiedzi nie jest łatwo - możliwe, że dorzucę je tu za kilka dni, jeśli w końcu dostanę tego e-maila…

Jest wielu ludzi którzy miałoby jeszcze dużo ciekawych rzeczy do powiedzenia na temat programowania, i tak napisałem do dużej ilości osób. Do dziś nie otrzymałem żadnej odpowiedzi m. in. od Larrego Walla, Matza (twórcy Ruby’ego), Bjarna Stroustrupa, DJ Bernsteina, Bruce Eckela i Jamie Zawinskiego. Mniej więcej takiego procentu skuteczności zresztą się spodziewałem.

Jeśli kogoś by mi tu miało naprawdę brakować, to naprawde chciałbym zadać te pytania panu Knuthowi, ale tu niestety trzeba napisać zwyczajną pocztą i czekać 3 miesiące do pół roku :(

dap, 24 lipiec 2006, 5:07 pm

Hmm…
a RMS - Stallman nie odpowiedzial? W koncu to tworca gcc.

dap

sztywny, 24 lipiec 2006, 8:07 pm

Wybacz, nie jestem specjalistą od muzyki klasycznej :)

Maciek Makowski, 24 lipiec 2006, 8:07 pm

Kolejna uwaga do tłumaczenia: “fortepian”, nie “pianino”. Poza tym w Polsce przyjęło się pisać “Rachmaninow”, “Chopin” i “Światosław Richter”

Pooh, 24 lipiec 2006, 9:07 pm

Lektura przednia, choć tłumaczenie takie sobie…

BTW przewidzenie CGI jest powalające ;-)

macbirdie, 25 lipiec 2006, 2:07 am

“Wywiad” genialny, sporo ciekawostek, ale zrób, sztywny, przysługę ludzkości i nigdy więcej niczego nie tłumacz z języka angielskiego - Miodek, PhD spać nie może, gdy tak się nasz język kaleczy w niemal każdym zdaniu tekstu. ;)

NoCtuRnaL AmNEsiiIiaA, 25 lipiec 2006, 3:07 am

Zupelnie niezwykle :) Jak sie tak to czyta to czlowiek zauwaza jak daleko sie jest od pierwszej ligi :P a przecie mama mowila zem taki udany . W każdym razie Matematyka to podstawa xD. Co do samego tlumaczenia to moze i troche błędóf jest ale wsumie calosc dosc czytelna i IMO niema co sie czepiac :). pzdr

majkosz, 25 lipiec 2006, 8:07 am

Bardzo, bardzo fajne! Wielkie gratki!

P.S. Taak majza to podstawa !

Krzysztof Wilczynski, 25 lipiec 2006, 8:07 am

Pomysł miałeś całkowicie genialny :-) Wywiad jest świetny! Dzięki wielkie. Miło spędziłem czas przy czytaniu :-)

rsz, 25 lipiec 2006, 9:07 am

a’propos photon map renderer: technikę tę wymyślili Henrik Wann Jensen i Niels Jorgen Christensen, pierwsza publikacja gdzie jest to opisane to:

http://graphics.ucsd.edu/~henrik/papers/cg95.html

szerszy opis (i chyba lepszy) jest tutaj:

http://graphics.ucsd.edu/~henrik/papers/ewr7/

btw wbrew temu, co pisze “kamil wdowicz”, photon mappipng nie jest “lepszy” od ray tracingu, to jest tak, jakby porównywać samolot z limuzyną. każda z tych technik koncentruje się na innej klasie zjawisk optycznych i dopiero połączenie ich (z grubsza mówiąc) daje zadowalające, fotorealistyczne efekty. przejrzenie literatury fachowej nie boli, panowie.

sebas86, 25 lipiec 2006, 9:07 am

Czyli jak programiści pokazują, że są ludźmi. ;-)

Bardzo fajny art. Mam nadzieję na więcej tego typu tekstów.

Messer, 25 lipiec 2006, 10:07 am

“Wywiad” świetny. Dla mnie jako programisty z naciskiem na projektanta oprogramowania niektóre odpowiedzi wyśmienicie trafne i dające do myślenia.
Gratuluję pomysłu i realizacji.

PS.
Pozdrowienia dla Martineza! :)

baal3, 25 lipiec 2006, 11:07 am

Świetny pomysł, niestety niezbyt dobre tłumaczenie.

dap, 25 lipiec 2006, 11:07 am

Co do RMS - to spoko, moze odpisze :)
A tlumaczenie jest ok - w sam raz dla programistow, choc w wywiadach wielu znich podkreslalo umiejetnosci komunikacyjne.

dap

sztywny, 25 lipiec 2006, 12:07 pm

Tłumaczenie luźne, bo nie miałem już siły czytać wszystkiego jeszcze raz szukając błędów ortograficznych i ładnych stylistycznie określeń - zostało tak, jak było po pierwszym dość sprinterskim “przebiegu” tekstu angieslkiego.

Martinez gwoli jasności pomagał przy formułowaniu tekstu angielskiego, gdzie miałem już raczej problemy braku umiejetności niż chcenia / nie chcenia się.

Jeśli komuś coś się nie podoba, proszę o konkrety, poprawie dla dobra przyszłych czytelników.

dap, 25 lipiec 2006, 1:07 pm

Hej, daj moze orginalne wypowiedzi po angielsku - dla purystow jezykowych i dla calego swiata :)

dap

sztywny, 25 lipiec 2006, 2:07 pm

A patrzyłeś może post niżej :> ?

Mors stefan, 25 lipiec 2006, 10:07 pm

Ciekawy wywiad. Tylko zdziwiło mnie, że taki nacisk wszyscy kładą na matematyke. A może po prostu tak wypadało :D

baflow, 26 lipiec 2006, 9:07 am

arcyciekawy wywiad

Pooh, 26 lipiec 2006, 10:07 pm

> Jeśli komuś coś się nie podoba, proszę o konkrety, poprawie
> dla dobra przyszłych czytelników.

Nie ma sprawy, skoro chcesz…
- informatyka (dyscyplina) z małej litery (piszesz raz małą, raz wielką)
- na Uniwersytet, nie “do Uniwersytetu” (piszesz raz tak, raz tak - do tego raz małą, a raz wielką literą)
- HTML-a, nie “HTMLu”
- zdecyduj się, czy piszesz koledż, czy kolledż (jeśli już tłumaczysz)
- o bakałarzu już było w komentarzach - mnie się nie podoba.
- jeśli już, to startupów, nie “startup’ów”
- geometrii, nie “geometri”
- zdania “programowanie aplikacji internetowych powoli będzie stawać najważniejszym programowaniem po stronie klienta” nie rozumiem, za cieńki jestem
- jesli już, to javowy, nie “Javowy” (przymiotnik)
- jeśli już, to killer-appem, nie “killer-app’em”
- AJAX-u (lub AJAX-a), ale nie “AJAXu”, tak samo IBM-a, nie “IBMu”
- “hardware” można przetłumaczyć
- Dave’a Thomasa, nie “Dave Thomas’a”, Hofstadtera, nie “Hofstadter’a”
Więcej nie chce mi się szukać ;-) Z interpunkcji też jest dużo do poprawienia.

Poza tym literówki w rodzaju “rzetelenej”, “popsolite” czy “Użwyam” możesz wychwycić wklejając tekst do OO lub worda - takich błędów w tekście elektronicznym nie da się usprawiedliwić.

Nazwy własne pisz wielką literą (Linuxa, Darwina)… poza tym raz piszesz Gimp, a raz GIMP.

I na koniec - nadal uważam, że lektura przednia, ale w oryginale czyta się dużo wygodniej. Myślę, że to nie tyle kwestia samego tłumaczenia, co umiejętności pisania po polsku (bez urazy).

Pozdrawiam

sztywny, 27 lipiec 2006, 6:07 am

Fajnie że Ci się chciało - popoprawiałem, dzięki.

Jest to kwestia głównie lenistwa i zmęczenia, tak musiało być, jak się publikuje przetłumaczony tekst nie czytając go dokładnie w całości… Nie zawsze wszystko musi być od razu perfekcyjnie, więc pozwoliłem sobie wyluzować :>

lulin » Stiff asks, great programmers answer, 27 lipiec 2006, 2:07 pm

[...] kategoriach: Programowanie, Linux, Ruby, Emacs, Rails At some hot, boring afternoon I got an _I [...]

Jacek Kucharski, 3 sierpień 2006, 9:08 am

Świetna sprawa! Gratuluję pomysłu.

AdSR, 3 sierpień 2006, 12:08 pm

“Język programowania: Nie mam ulubionego, wszystkie ssą.”

“Sucks” znaczy “Jest do bani”.

sztywny, 3 sierpień 2006, 12:08 pm

W pewnych kręgach określenie “ssie” funkcjonuje jako “jest do bani”. Linus Torvalds to wyluzowany koleś i gdyby mówił po polsku na pewno nie użyłby jakiegoś “do bani” ;P

nameczanin, 8 sierpień 2006, 3:08 pm

Na sam poczatek: miodzio po prostu. A ogolniej: chcialem wiedziec wiecej o ich przyzwyczajeniach ;F

Jarmark.org » Elastyczne odpowiedzi na pytania Sztywnego, 3 wrzesień 2006, 11:09 pm

[...] dało się Jarkowi namówić na ten wywiad i jakie zebrał odpowiedzi ? Przeczytać można tutaj. [] Permalink [...]

Filozof, 11 sierpień 2007, 1:18 pm

Super wywiad ! Moje gratulacje :)

Adam Byrtek, 12 sierpień 2007, 1:07 pm

Gratuluję pomysłu, przy niewielkim wysiłku udało się uzyskać bardzo ciekawy tekst. Przy okazji miło, że takie “sławy” znajdują czas, aby odpowiadać na takie otwarte pytania polskiemu bloggerowi. Mam nadzieję, że nie napisałeś, że jesteś dziennikarzem New York Times? :)

snajper, 14 grudzień 2007, 6:01 pm

mam pytanko zadawane od powstania programowania znam podstawy c++ i turbo c++ oraz c++ builder chciałbym poznac podstawy asamber oraz delphini ale nie wiem bo juz mi sie miesza który jezyk bendzie finkcjonalny na pisanie małych programów tylko pod winde a czasem z połaczeniem z internetem który jezyk bendzie najlepszy prosze o kometarze chce sie nauczyc programowac sam dla siebie szybko sprawnie bez błedów do takich małych programów które mi sie przydadza i benda ustawiac za mnie winde wystarczy klik juz mam dosc ustawiania recznie rejestru i innych a program typu xp-antyspy ma zamało ustawien w rejestrach tak samo windows konfigurator itd po za tym chciałbym napisac program podobny do snikersa http://www.snikers.pl prosze o kontakt na moj nr tel  (mam nainie łukasz) wiekszosc osob doradza mi delphi oraz visual c++ prosze o kontakt

Modzio, 31 grudzień 2007, 6:14 pm

SNAJPER: C++ builder jest szybko do pisania malych programow pod winde i wystarczy ci w zueplnosci.

Fajny wywiad, dzieki!

justyna"jutka", 8 styczeń 2009, 3:57 pm

myślicie,że komuś będzie się chciało tyle czytać?!

Skomentuj