Skip to content

A comprehensive catalog of modern and classic books on C++ programming language

License

Notifications You must be signed in to change notification settings

yuchdev/CppBooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 

Repository files navigation

The comprehensive catalog of C++ books

Table of content

  1. Table of content
  2. Intro: iterating over C++ books
  3. Reference and ISO Standard
  4. Beginner to Programming
  5. Beginner to C++
  6. General Books on C++
  7. Advanced Books on C++
  8. C++ Templates and Metaprogramming
  9. C++ Concurrency and Distributed Programming
  10. Low-Level High-Performance Optimizations
  11. Algorithms in C and C++
  12. Latest Features Review: C++11/14
  13. Latest Features Review: C++17
  14. Latest Features Review: C++20
  15. Software Design and Design Patterns in C++
  16. GUI Programming
  17. Secure Programming Practices
  18. Windows System Programming
  19. Windows Kernel Programming
  20. Linux System Programming
  21. Linux Kernel Programming
  22. C++ Embedded Programming
  23. Network Programming
  24. Computer Graphics in C++
  25. Game Development in C++
  26. Financial Applications of C++
  27. Hardware Design in C++
  28. Modern C Programming
  29. Old and Classic books on C++

Intro: iterating over C++ books

No secret, most of the C++ books on the market are for absolute beginners, and 90% of them are bad. Few good books for intermediate-to-advanced developers, but finding and advising a good read on C++ is almost a scientific problem.

The same with attempts to create some C++ books catalog, here's an example of not the most optimal choice: Best C++ Books for Beginners and Advanced Level in 2021. Why so? Well, I do not consider books of series "one hour a day" or "for dummies" a worthy technical read. We all know the best way to learn C++ in 21 days

The best way to learn C++ in 21 days

Also, all kinds are reference book in fact are being outdated by the moment of release - the role of a comprehensive C++ reference successfully taken by Cppreference.com, and it's totally fine.

The next problem of C++ book lists is a diversity of C++ applied areas - C++ is a truly universal language, but every applied domain features a different approach and usually requires specific knowledge. System programming, game development, user- and kernel-space. Some books use C++ as a language of choice to solve the high-level problem, like algorithms and software design in C++.

And finally, the comprehensive C++ list is expected to be up-to-date at least with the last language Standard, and just with new interesting books - this list is not bad, even though some choices are questionable, but it's already outdated, not including any books on C++20 one year after the new Standard release. The most effective way to achieve this state is a continuous community effort, that's why I choose Github as a medium of my C++ books list.

Controversy of Amazon as a primary reference

I was extremely upset myself by the fact I have to use references almost exclusively to Amazon products, but unfortunately, I did not find any alternative source, being the same uniform, comprehensive and trustworthy. By providing these links I do not promote using Amazon services, I do not suggest using it for your purchases, and I do not insert any referrals. Maybe in the future, I will create a catalog of C++ books, providing complete information about listed books, such as author names and brief information about them, release year, annotation, and so on.

Contributions

I would welcome any reasonable contributions in the objective to create a comprehensive and up-to-date catalog of C++ books, for all kinds of C++ programmers, with any professional background and experience. While using or replicating the content, a Creative Commons Attribution-NonCommercial 4.0 International License is applied.

Expressing your gratitude

I created this catalog and keep maintaining it in my spare time. If you wish to thank me for my efforts, you always can buy me a coffee.

Buy Me A Coffee

Reference and ISO Standard

The release of the C++ Standard is quite a pricey document. However, every C++ Standard has a number of drafts before the release, and usually, the last one is almost identical to the release document. The following links to the Standard refer to the last draft versions before the release

Beginner to Programming

There's not much to add - books for beginners to C++, and probably to programming in general.

Beginner to C++

These books are for software developers with some experience in other languages, and willing to become familiar with C++

General Books on C++

These books could be considered a "must-read" list for any kind of C++ programmer. Some of them are a bit outdated, as they cover previous versions of the C++ Standard - in this case, just skip outdated content, or better re-implement it using new features of the language.

Advanced Books on C++

If you have 5+ years of experience, you should add these books to your library as well. Again, some books may contain outdated features and approaches, but in the general picture, they still provide extremely valuable knowledge.

C++ Templates and Metaprogramming

C++ "template magic" books, mostly up-to-date with at least C++11 Standard.

C++ Concurrency and Distributed Programming

Having a “multithreaded” type of mindset if necessary, if you work with modern architectures. The average system may offer 4-12 cores on desktop, and 128-256 on a server, and an experienced C++ developer absolutely should know, how to take advantage of these resources. Some books are updated with the C++17 Standards, some are just fundamental read on the topic.

High-Performance Optimizations in C++

C++ is a high-performance language by itself, however, there are plenty of usecases when the "default high-performance" is just not enough. Usually such topics are considered in the literature on parallel programming, but it includes an important subset concentrating exactly on low-level performance techniques relying on hardware (SIMD, CPU cache, process affinity), rather than software implementation of multithreaded algorithms.

Algorithms in C and C++

Algorithms is a fundamental topic indeed, usually language-independent, and such books age like a good wine - that's why following the last language Standard is not necessary here.

Latest Features Review: C++11/14

Not much to add, books covering the first major push in C++ language Standard, C++11/14.

Latest Features Review: C++17

The next major update, C++17 introducing many important features and changing old paradigms and approaches.

Latest Features Review: C++20

Many C++20 features could be considered truly revolutionary, changing old good C++ almost beyond recognition.

Latest Features Review: C++23

Software Design and Design Patterns in C++

Software design and architecture in C++ came a long way from the GoF book, released in 1994. Since then, some design patterns became just language features, some are changed beyond recognition - that's why it's vital to consider new language features, thinking of implementing a particular software design solution.

GUI Programming

Books on C++ GUI frameworks and desktop programming in general. Some are featuring cross-platform approach, taking advantage of the system-independent nature of C++, some are Windows-specific.

Secure Programming Practices

Lots of Software Developers heard about software vulnerabilities more than once, and still, very few of them pay at least slightest attention, considering IT Security highly specialized industry they do not belong to. However, they are mistaken, most of typical attacks, like spoofing, buffer overflows, and denial of service happen because of poorly written and poorly tested applications. Meanwhile, practices of writing secure code and hardening applications security in general are well known, and you should embrace it once and for all, if you are ever planning to write mission-critical applications.

Windows System Programming

Windows "under the hood" programming. Some books may seem old, but in fact, none of the provided information on Windows API is outdated. New features are carefully placed on the foundation of old features, which are in their turn are extremely important for providing backward compatibility. Windows API features both C interfaces, so as C++ technologies like COM.

Windows Kernel Programming

Kernel-level Windows programming. New approaches and technologies are provided where possible, but it's quite hard to find a good read on the latest kernel-space technologies and Developer Kits because they hardly exist.

Linux System Programming

System user-space programming for Linux and POSIX systems in general. Some are new books, some are new editions of classical books on Unix-like systems. Practically all POSIX-like APIs feature C interfaces.

Linux Kernel Programming

The comprehensive reading list for Linux kernel-space programming. The choice is considerably wider than similar books on Windows.

C++ Embedded Programming

C++ embedded programming, kernel-level with some restrictive specific.

Network Programming

C/C++ network programming is an extremely important area of knowledge, due to their exceptional performance and implementation of high-loaded client-server solutions. The subject has a slight lean towards Linux, but without many system-specific features, and could be considered almost totally cross-platform.

Computer Graphics in C++

These books cover cross-platform APIs for rendering 2D and 3D graphics. All graphical system-level APIs, both modern and legacy, offer either C (OpenGL) or C++ (Direct3D) interfaces. The reason is again, the exceptional performance of C/C++ and the ability to squeeze the maximum of available graphical hardware.

Game Development in C++

Game development could be considered as a derivative of C++ Computer Graphics, however, game development is much more than just graphics. The selected read covers different aspects of C++ Game Programming, from guides on how to enter the industry to popular C++ Game Engines. Even though other languages, like C# or Python, currently share the market with C++ frameworks, all AAA titles are still being developed in C++.

Financial Applications of C++

C++ is a popular choice for financial applications for pretty much the same reason as for other industries, requiring fast execution, fine-grained memory management, and access close to computer hardware. For decades it was the only viable choice for financial instruments pricing, risk management and algorithmic trading.

Hardware Design in C++

One can be surprised that C++ came into this niche application as well, dominated by specialized hardware description languages (HDLs) like Verilog and VHDL. However, using C++ for the purpose of SoC design offers a number of major advantage - it provides a seamless integration between hawardre and software parts of the system, and better abstraction compared to procedural HDLs.

Modern C Programming

Our allies from the non-OOP world. The emphasis of selected books made on new features of C, particularly on C11 and C17.

Old and Classic books on C++

These books are valuable pieces of the history of C++ language, some still keep never-aging ideas and solutions.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

About

A comprehensive catalog of modern and classic books on C++ programming language

Resources

License

Stars

Watchers

Forks