okladka

Zaprojektuj i napisz wydajniejsze oprogramowanie

  • Poznaj najlepsze metody stosowania biblioteki STL
  • Zaimplementuj wydajne mechanizmy zarządzania pamięcią i zasobami
  • Zoptymalizuj kod źródłowy swoich aplikacji

Projektowanie i tworzenie wydajnych aplikacji to sztuka znajdowania kompromisu pomiędzy kosztami a funkcjonalnością, elegancją i łatwością pielęgnacji oraz między elastycznością i nadmierną złożonością. Znalezienie takiego "złotego środka" jest zadaniem wymagającym znajomości najlepszych praktyk programistycznych. Guru języka C++, Herb Sutter, w książce "Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań" przedstawił najistotniejsze zasady stosowania biblioteki standardowej, reguły inżynierii oprogramowania i wiele innych tematów związanych z tworzeniem programów w języku C++. Książka ta jest kontynuacją jego rozważań i rad dla programistów chcących pisać wydajne oprogramowanie.

W książce Herb Sutter koncentruje się na stylu pisania kodu źródłowego. Przedstawia 40 nowych przykładów, dzięki którym dowiesz się nie tylko, co się dzieje w programie, ale także w jaki sposób. Czytając ją, poznasz nowe sposoby stosowania kluczowych elementów języka C++. Każde z zagadnień przedstawione jest w formie zagadki z rozwiązaniem. Dzięki temu lepiej zapamiętujemy metodykę postępowania, co ułatwia wykorzystanie jej w codziennej pracy.

  • Zasady programowania uogólnionego
  • Niestandardowe zastosowania biblioteki STL
  • Bezpieczna obsługa wyjątków
  • Reguły projektowania klas
  • Efektywne zarządzanie pamięcią
  • Optymalizowanie aplikacji pod kątem wydajności
  • Unikanie pułapek w kodzie

Jeśli chcesz poprawić stabilność i wydajność swoich programów, sięgnij po kolejny poradnik autorstwa Herba Suttera.


Przedmowa (7)
Rozdział 1. Programowanie uogólnione i biblioteka standardowa języka C++ (13)
  • Zagadnienie 1. Poprawne i niepoprawne używanie klasy vector (14)
  • Zagadnienie 2. Folwark metod formatowania. Część 1. sprintf (21)
  • Zagadnienie 3. Folwark metod formatowania. Część 2. Standardowe (lub olśniewające) alternatywy (26)
  • Zagadnienie 4. Funkcje składowe biblioteki standardowej (36)
  • Zagadnienie 5. Smaczki programowania uogólnionego. Część 1. Podstawy (sic!) (40)
  • Zagadnienie 6. Smaczki programowania uogólnionego. Część 2. Wystarczająco ogólne? (43)
  • Zagadnienie 7. Dlaczego nie należy specjalizować szablonów funkcji? (49)
  • Zagadnienie 8. Zaprzyjaźnianie szablonów (55)
  • Zagadnienie 9. Ograniczenia słowa kluczowego export. Część 1. Podstawy (64)
  • Zagadnienie 10. Ograniczenia słowa kluczowego export. Część 2. Interakcje, użyteczność i wskazówki (72)
Rozdział 2. Zagadnienia i techniki związane z bezpieczną obsługą wyjątków (83)
  • Zagadnienie 11. Bloki try i catch (84)
  • Zagadnienie 12. Bezpieczna obsługa wyjątków - czy warto? (88)
  • Zagadnienie 13. Specyfikacja wyjątków z praktycznego punktu widzenia (91)
Rozdział 3. Projektowanie klas, dziedziczenie i polimorfizm (101)
  • Zagadnienie 14. Proszę zachować porządek! (102)
  • Zagadnienie 15. Używanie i nadużywanie prawa dostępu (105)
  • Zagadnienie 16. (W większości) prywatne (110)
  • Zagadnienie 17. Hermetyzacja (118)
  • Zagadnienie 18. Funkcje wirtualne (127)
  • Zagadnienie 19. Wymuszanie przestrzegania reguł w klasach pochodnych (135)
Rozdział 4. Zarządzanie pamięcią i zasobami (147)
  • Zagadnienie 20. Kontenery w pamięci. Część 1. Poziomy zarządzania pamięcią (147)
  • Zagadnienie 21. Kontenery w pamięci. Część 2. Ile miejsca zajmują naprawdę? (150)
  • Zagadnienie 22. O new, a przy okazji o throw. Część 1. Oblicza new (157)
  • Zagadnienie 23. O new, a przy okazji o throw. Część 2. Praktyczne zagadnienia dotyczące zarządzania pamięcią (164)
Rozdział 5. Optymalizacja i wydajność (173)
  • Zagadnienie 24. Optymalizacja za pomocą const? (173)
  • Zagadnienie 25. Powrót inline (178)
  • Zagadnienie 26. Format danych i wydajność. Część 1. Kiedy w grę wchodzi kompresja (186)
  • Zagadnienie 27. Format danych a wydajność. Część 2. Zabawa z bitami (190)
Rozdział 6. Pułapki, zasadzki i łamigłówki (199)
  • Zagadnienie 28. Słowa kluczowe, których nie ma (lub, inaczej mówiąc, komentarze) (199)
  • Zagadnienie 29. Czy to inicjalizacja? (206)
  • Zagadnienie 30. Podwójna lub żadna (210)
  • Zagadnienie 31. Kod w amoku (213)
  • Zagadnienie 32. Literówki? Język graficzny i inne ciekawostki (218)
  • Zagadnienie 33. Operatory, wszędzie operatory (220)
Rozdział 7. Studia przypadku (227)
  • Zagadnienie 34. Tablice indeksujące (227)
  • Zagadnienie 35. Uogólnione wywołania zwrotne (238)
  • Zagadnienie 36. Unie konstrukcyjne (246)
  • Zagadnienie 37. Rozciąganie monolitów. Część 1. Spojrzenie na std::string (263)
  • Zagadnienie 38. Rozciąganie monolitów. Część 2. Rozkład klasy std::string na czynniki (267)
  • Zagadnienie 39. Rozciąganie monolitów. Część 3. Odchudzanie klasy std::string (276)
  • Zagadnienie 40. Rozciąganie monolitów. Część 4. Powrót klasy std::string (279)
Bibliografia (289)
Skorowidz (293)