Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: akwes
Inne artykuły

Jaką książkę o C++ przeczytać?

[artykuł] Kompleksowa informacja o książkach jakie warto przeczytać na danym poziomie zaawansowania. Artykuł jest luźnym tłumaczeniem odpowiedzi udzielonej na stackoverflow.

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.