Dlaczego wybrał pan C++ jako swoją specjalność?
Tak naprawdę go nie wybrałem, to on wybrał mnie.
Dostałem propozycję objęcia stanowiska asystenta prowadzącego wykłady na uniwersytecie 
 i musiałem nauczyć się C++ żeby to zrobić.
Poniekąd dzięki temu dostałem ofertę opracowania kursu dla zawodowych programistów. 
Potem była książka i tak zaczęła się moja kariera.
Pana nowa książka ma tytuł „Effective Modern C++” („Efektywny nowoczesny C++”).
Czym jest nowoczesny C++?
„Nowoczesny C++” zwykle oznacza C++11 i C++14, czyli najnowsze wersje języka
i to właśnie miałem na myśli używając tych słów w tytule książki.
Więc krótko mówiąc C++11 i C++14, tak?
Tak.
C++ się rozwija, a jak mają się kompilatory?
I czy naprawdę zasugerował pan, że kompilator Microsoftu ssie podczas swojego wykładu?
Prawdopodobnie lepiej powiedzieć, że zażartowałem i mój żart sugerował, że kompilator Microsoftu ssie. 
Generalnie nie powiedział bym, że kompilator Microsoftu jest zły.
Z kompilatorami jest tak, że kiedy patrzymy na nie jak na samodzielne narzędzia, wszystkie mają słabe i mocne strony. 
W szczególności gdy mamy do czynienia z kompilatorem Microsoftu
widać, że jest to część dużo większego środowiska dla profesjonalnych programistów C++.
Oni pracują w kompleksowym środowisku i odważę się powiedzieć,
że większość znanych mi osób woli pracować w tym środowisku,
nawet jeśli nie tworzą oprogramowania wyłącznie dla Windowsa.
Kompilator ma swoje wady i Microsoft doskonale o nich wie,
ale jako część większego zestawu narzędzi udostępnionych deweloperom
z pewnością jest to jeden z najlepszych, jeśli nie najlepszy na rynku.
Co powie pan o Clangu?
Clang pojawił się znikąd.
Powiedziałbym, że dwa lata temu był zupełnie nieistotny,
a dziś jest bardzo ważny ze względu na sprawdzanie zgodności standardów.
Wydaje mi się, że nie generuje tak dobrych plików obiektowych jak gcc, który jest jego bezpośrednim konkurentem, ale staje się coraz lepszy.
Spodziewam się, że Clang będzie tylko zyskiwał na wadze.
Tak w ogóle to lubię Clanga.
Niektórzy myślą, że C++ rozkwita, ale TIOBE pokazuje,
że traci popularność. Obecnie na topie są języki dziedzinowe.
W związku z tym jak widzi pan przyszłość języka C++? 
Czy pozostanie językiem ogólnego zastosowania, czy może będzie pełnił rolę standardu?
Mogę powiedzieć, że w dziedzinach, w których C++ dobrze sobie radzi,
czyli wszędzie tam, gdzie bardzo ważna jest wydajność i kontrola nad sprzętem,
a w efekcie tam, gdzie liczy się oszczędzanie energii, czyli na serwerach i urządzeniach przenośnych,
C++ wydaje się mieć bardzo, bardzo silną pozycję.
Nie wydaje mi się, by kiedykolwiek miał w tych dziedzinach osłabnąć. 
Nie wierzę zbytnio indeksowi TIOBE i też jestem niezdecydowany.
Oczywiście on coś nam mówi, ale z drugiej strony przez ostatnie 2-3 lata miałem więcej pracy niż kiedykolwiek,
moi koledzy również, grup użytkowników C++ było 4 czy 5 na świecie, a teraz jest około 30.
Organizowane są konferencje związane z C++, które kilka lat temu nie istniały.
Myślę, że mamy dużo namacalnych dowodów na to, że wzrosło zapotrzebowanie na informacje o C++. 
Linus Torvalds powiedział kiedyś, że C++ to koszmarny język.
Nie przepada on za nie spełniającymi żadnych standardów programistami (którzy go używają)
i twierdzi, że łatwiej można w C++ stworzyć, cytuję: totalną kupę.
Jaka jest pana odpowiedź?
Ten cytat jest bardzo znany w społeczności i to jasne, że Linus nie jest fanem C++.
Myślę, że najlepiej będze powiedzieć, że w każdym języku programowania można napisać naprawdę kiepski program.
Ludzie potrafią napisać fatalne programy także w C.
Nie sądzę żeby było to obiektywne kryterium oceny języka.
Powiem raczej, że w C++ jest więcej możliwości, przez co jest też więcej sposobów by coś zepsuć
i z pewnością język ten wymaga dyscypliny i zwracania uwagi na detale.
Nie sądzę jednak żeby w naturze języka było coś, co prowadzi do kiepskich programów.
Gdybym miał wybierać między programowaniem w C i C++ wybrałbym C++ choćby tylko dla klas i destruktorów. 
Jak zachęciłby pan do programowania w C++ i dlaczego warto się go nauczyć?
Myślę, że najwięcej sensu ma nauka C++ kiedy chcemy rozwijać oprogramowanie, które w C++ wyjdzie dobrze.
W dzisiejszych czasach są to wszyscy pracujący w tak zwanym przemyśle „poważnych gier”,
czyli przy tworzeniu gier na konsole, które zasadniczo kierują się ku C++. 
Ktokolwiek pracujący w… nazwijmy to przemyśle finansowym,
ale mam tu na myśli automatyczny handel oraz osoby wykonujące analizy inwestycji i ocenę ryzyka.
C++ jest również bardzo silny w tych dziedzinach i jeśli ktoś chce się tym zajmować będzie to dobry wybór.
Cokolwiek gdzie liczy się wydajność, cokolwiek związanego z symulacjami, cokolwiek związanego z systemami operacyjnymi…
Interesujące jest to, że infrastruktura większości rzeczy, które dziś robimy, wykorzystuje C++.
Na przykład Java została zbudowana na C++. .NET także powstał na C++.
Jeśli więc ktoś jest zainteresowany robieniem tego, w czym język się sprawdza, powiem żeby nauczył się C++.
Z drugiej strony, jeśli ktoś jest zainteresowany rozwiązywaniem innych problemów,
może związanych z interfejsem użytkownika, w czym C++ nie jest najlepszy,
poleciłbym uczenie się czegoś bardziej dopasowanego do konkretnych zastosowań.
Dobrze narzędzia do programowania w C++ są bardzo drogie, podczas gdy inne, na przykład do Javy,
są darmowe i otwartoźródłowe. Czy może pan polecić godne zaufania środowisko dla początkujących?
Dla początkujących… wiem, że Microsoft od kilku lat udostępnia swoje środowisko dla mniej wymagających,
a jak już mówiłem, uchodzi za jedno z najlepszych środowisk na rynku.
To dostępne za darmo nie ma wszystkich możliwości profesjonalnego wydania,
ale o ile wiem dla początkujących deweloperów i małych zespołów jest odpowiednie.
Dla osób, które nie chcą z niego korzystać… wciąż można pisać korzystając z Emacsa i GCC,
nie jest to nowoczesne środowisko, ale są osoby które wykorzystują te narzędzia.
Dawno nie sprawdzałem jak ma się Eclipse, ale wiem, że z czasem staje się coraz lepszym środowiskiem i również bym je polecił w połączeniu z GCC.
Co sądzi pan o języku o nazwie D? Został zaprojektowany jako zamiennik C++ i ostatnio został zaadoptopwany przez Facebooka.
Andrei Alexandrescu, współtwórca D, jest moim przyjacielem, więc wiem jak pracował nad językiem.
Myślę, że to interesujący język.
Osobiście jednak uważam, że nie ma nic na tyle pociągającego, by przekonać większą liczbę programistów C++, by porzucili C++ i zaczęli używać D.
Mając to na uwadze dodam, że pod wieloma względami jest to dobry projekt języka i ma też inne zalety.
Myślę, że zarówno Andrei, jak i drugi projektant, Walter Bright, potwierdzą, że dziś celem nie jest zastąpienie C++,
ale raczej stworzenie języka, który znajdzie sobie miejsce między C++ i innymi używanymi językami.
Jest pan autorytetem dla wielu osób, a kto jest pana guru?
Nie mam jednego guru. Jest wiele osób w społeczności związanej z C++, od których się uczyłem i wciąż się uczę.
Z pewnością Herb Sutter będzie na tej liście, Andrei Alexandrescu, oczywiscie Bjarne (Stroustrup) będzie na liście.
Anthony Williams na przykład – bardzo dużo się od niego nauczyłem o zgodności.
A jeśli chodzi o konkretne funkcje języka, zdarza mi się rozmawiać z osobami, które napisały propozycje standardów.
John Lakos i Pablo Halpern współtworzyli jedną, która wpłynęła na moją ostatnią książkę.
Jest mnóstwo ludzi, którzy wiedzą coś innego niż ja i mają inny punkt widzenia. 
Staram się nawiązywać z nimi kontakt, a oni bardzo hojnie dzielą się swoim czasem i czasem.
Cóż, z wykształcenia jest pan biologiem.
Czy myśli pan o transhumaniźmie, cybernetyce albo łączeniu oprogramowania i ludzkiego ciała?
Minęło sporo czasu od kiedy zajmowałem się biologią.
Powiem tylko, że jeśli spojrzymy na adopcję sprzętu i oprogramowania jako nową formę medycyny,
czyli zasadniczo jako rozszerzenie idei zastępowania kończyn albo części ciała, wydaje się to logiczne.
Z chęcią będę obserwował kierunek, w jakim to wszystko zmierza w miarę postępu.
Dobrze, ostatnie pytanie. Proszę nam opowiedzieć o języku Snowball.
No dobrze…
Nauczyłem się Snowballa wiele, wiele lat temu podczas zajęć z komparatywistyki i wtedy bardzo mi się podobał.
Jest to język dopasowujący ciągi znaków do wzorca i nawet nie wiem, czy jest jeszcze używany.
Miał jednak pewną wyjątkową cechę – każda funkcja musiała zwrócić wartość logiczną, prawdę albo fałsz.
Programowałem w Snowballu przez kilka tygodni i tak mi się ten pomysł spodobał,
przez kolejnych kilka miesięcy każda moja funkcja napisana w każdym innym języku programowania musiała zwracać wartość logiczną,
bo myślałem, że to świetny pomysł i bardzo dużo czasu zajęło mi pozbycie się tego nawyku.
