Wstęp
Książki, które są tutaj obecne najlepiej przeczytać w oryginale. Jeżeli jednak nie znasz tak dobrze angielskiego to jak najszybciej się go naucz a tymczasem skorzystaj z dostępnych polskich tłumaczeń.
Musisz jednak pamiętać o tym, że polskie tłumaczenia często są kilka wydań wstecz a ich tłumaczenie pozostawia wiele do życzenia. |
Gdzie kupić?
Angielskie wersje najprościej będzie zakupić na amazonie. Dla polskich odpowiedników niestety trzeba przeszukać popularne księgarnie.
Początkujący
Wprowadzenie dla osób bez doświadczenia w programowaniu
1. Programming: Principles and Practice Using C++ (Bjarne Stroustrup)Wstęp do programowania w języku C++ od samego autora tego języka. Autor zakłada u czytelnika brak wcześniejszego doświadczenia z programowaniem. Mimo to książka przydatna jest również dla osób posiadających już jakąś wiedzę, którą książka pozwoli im lepiej poukładać.
Wprowadzenie dla osób z niewielkim doświadczeniem w programowaniu
1. C++ Primer (Stanley Lippman, Josée Lajoie, and Barbara E. Moo)Nie mylić z C++ Primer Plus. |
Bardzo dokładne wprowadzenie do C++, które pokrywa niemalże każdy element języka w przystępny sposób nie pomijając przy tym szczegółów. Piąta edycja (2012) pokrywa również C++11.
2. A Tour of C++ (Bjarne Stroustrup)Bardzo szybka podróż po języku C++. Przegląd całego standardu C++ bez zagłębiania się w detale. Docelowo napisana jako szybkie wprowadzenie do języka dla ludzi, którzy już znają jakiś inny język.
3. Accelerated C++ (Andrew Koenig and Barbara Moo)Książka pokrywa swoją tematyką mniej więcej to samo co C++ Primer potrzebując na to jedną czwartą jej objętości. Osiąga to głównie dlatego, że nie stara się być wprowadzeniem do programowania ale wprowadzeniem do C++ dla osób, które już wcześniej miały doświadczenie z programowaniem. Poziom w książce szybko rośnie jednak dla tych, którzy to przezwyciężą będzie świetnym wprowadzeniem. Jedna z pierwszych książek mówiących o nowoczesnym programowaniu w C++.
4. Thinking in C++ (Bruce Eckel)Dwa tomy napisane w konwencji poradników. Książka niestety posiada szereg błędów i nie posiada oficjalnej erraty.
5. Symfonia C++ Standard (Jerzy Grębosz)Książka napisana przez fizyka, która opisuje C++ w bardzo przystępny i niedokładny sposób. Książka wydana na długo przed C++11.
Najlepsze praktyki
1. Effective C++ (Scott Meyers)Książka napisana z myślą aby być najlepszą drugą książką jaką programista C++ powinien przeczytać, co autorowi się udało. Przedstawia 50 praktycznych i łatwych do zapamiętania zasad w bardzo przystępny sposób.
2. Effective STL (Scott Meyers)Książka ma dokładnie to samo zadanie co Effective C++ jednakże skupia się na STLu.
Średniozaawansowane
1. More Effective C++ (Scott Meyers)Garść kolejnych zasad jakimi powinien się kierować programista C++. Opisane w tej książce zasady nie są aż tak ważne jak w Effective C++ jednakże również warto je poznać.
2. Exceptional C++ (Herb Sutter)Książka przedstawiona jako zbiór zagadek. Jedna z najlepszych dyskusji na temat poprawnego zarządzania zasobami oraz bezpieczeństwa wyjątków C++. Pokrywa również tematykę RAII, pimpl idiomu, wyszukiwania nazw, dobrego projektowania klas oraz modelu pamięci C++.
3. More Exceptional C++ (Herb Sutter)Pokrywa dodatkowe tematy, które nie były pokryte w Exceptional C++. Poza dyskusją o efektywnym używaniu programowania obiektowego opisuje poprawne używanie STLa.
4. Exceptional C++ Style (Herb Sutter)Omawia metaprogramowanie, optymalizacje oraz zarządzanie zasobami. Książka wyraźnie pokazuje jak pisać modularnie w C++ oraz pokazuje zasadę pojedynczej odpowiedzialności.
5. C++ Coding Standards (Herb Sutter and Andrei Alexandrescu)Książka opisuje 101 najlepszych idiomów oraz popularnych pułapek, których zrozumienie pozwoli pisać Ci lepszy, poprawny i efektywny kod w C++.
6. C++ Templates: The Complete Guide (David Vandevoorde and Nicolai M. Josuttis)Książka ta opisuje szablony jakie istniały przed wprowadzeniem C++11. Obejmuje ona wszystko: od podstaw do naprawdę zaawansowanych tematów. Wprowadza w temat jednocześnie wyjaśniając w detalach jak działają szablony. Książka wspomina również o wielu pułapkach jakie możemy spotkać.
7. Effective Modern C++ (Scott Meyers)Książka opisuje jak pisać naprawdę wspaniałe oprogramowanie z wykorzystaniem C++11 i C++14.
Zaawansowane
1. Modern C++ Design (Andrei Alexandrescu)Przełomowa książka na temat zaawansowanych technik programowania generycznego. Wprowadza projekt oparty o wytyczne, listy typów oraz podstawowe idiomy programowania generycznego. Następnie pokazuje wiele przykładów jak wzorce projektowe mogą być zaimplementowane efektywnie, modularnie oraz przejrzyście używając generycznego programowania.
2. C++ Template Metaprogramming (David Abrahams and Aleksey Gurtovoy)3. C++ Concurrency In Action (Anthony Williams)Książka obejmująca współbieżność w C++11 włączając w to bibliotekę wątków, operacje atomowe, model pamięci C++, blokady i muteksy. Książka również porusza tematykę projektowania współbieżnego i debugowania aplikacji wielowątkowych.
4. Advanced C++ Metaprogramming (Davide Di Gennaro)Książka opisująca C++ sprzed C++11. Koncentruje się na praktyce bardziej niż na teorii. Niektóre przykłady w książce są nieaktualne jednak techniki pokazane tam same w sobie wciąż bywają przydatne. Jeżeli jesteś w stanie się pogodzić z dziwnym formatowaniem książki to będzie ona łatwiejsza w czytaniu niż Modern C++ Design i prawdopodobnie bardziej pomocna.
Kompedia - wszystkie poziomy
1. The C++ Programming Language (Bjarne Stroustrup) (C++11)Klasyczne wprowadzenie do języka napisane przez jego twórcę. Książka pokrywa praktycznie każdy element języka oraz jego filozofii. Czwarta edycja tej książki (z opisanym C++11) posiada wiele błędów i należy mieć najnowsze wydanie lub pobrać odpowiednie erraty.
2. C++ Standard Library Tutorial and Reference (Nicolai Josuttis) (C++11)Wprowadzenie oraz dokładny opis standardowej biblioteki C++. Druga edycja jest zaktualizowana o C++11.
3. The C++ IO Streams and Locales (Angelika Langer and Klaus Kreft)Nie da się wiele powiedzieć na temat tej książki, z wyjątkiem tego, że jeżeli chcesz się dowiedzieć czegoś na temat strumieni lub lokalizacji to jest to możliwość znalezienia ostatecznych odpowiedzi w jednym miejscu.
Klasyka gatunku / Starsze książki
Uwaga: Informacje zawarte w tych książkach mogą być nieaktualne a techniki w nich opisywane mogą nie być już dłużej uznawane za najlepsze. |
1. The Design and Evolution of C++ (Bjarne Stroustrup)Jeżeli chcesz się dowiedzieć dlaczego język C++ wygląda tak jak wygląda to jest to książka zawierająca odpowiedzi.
2. Ruminations on C++ - (Andrew Koenig and Barbara Moo)3. Advanced C++ Programming Styles and Idioms (James Coplien)Opisuje specyficzne dla C++ idiomy. Książka warta przeczytania jednak czuć w niej odcisk czasu.
4. Large Scale C++ Software Design (John Lakos)Książka opisuje zarządzanie dużymi projektami w C++. Książka napisana na długo przed C++98 oraz pomijająca część funkcjonalności ważnych dla dużych projektów. Jeżeli jednak będziesz miał przed sobą takie zadanie to zapewne kilka rzeczy tam zawartych będzie Ci pomocne.
5. Inside the C++ Object Model (Stanley Lippman)Jeżeli chcesz się dowiedzieć jak najczęściej są implementowane wirtualne funkcje oraz jak obiekty są układane w pamięci czy jak wszystko odbija się na efektywności to jest to miejsce, które opisuje te tematy.