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

Overview

The comprehensive catalog of C++ books

Table of content

  1. Intro: iterating over C++ books
  2. Reference and ISO Standard
  3. Beginner to Programming
  4. Beginner to C++
  5. General Books on C++
  6. Advanced Books on C++
  7. C++ Templates and Metaprogramming
  8. C++ Concurrency and Distributed Programming
  9. Algorithms in C and C++
  10. Latest Features Review: C++11/14
  11. Latest Features Review: C++17
  12. Latest Features Review: C++20
  13. Modern C Programming
  14. GUI Programming
  15. Windows System Programming
  16. Windows Kernel Programming
  17. Linux System Programming
  18. Linux Kernel Programming
  19. Linux Embedded Programming
  20. Network Programming
  21. Computer Graphics in C++
  22. Game Development in C++
  23. Software Design and Design Patterns in C++
  24. 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.

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 (well, one book so far) 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.

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, 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.

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.

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.

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.

Linux Embedded Programming

Linux 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++.

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.

Old and Classic books on C++

No comments here. Some books are just 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.

You might also like...
Programming-Basics - This Repository Contains source codes of various programming languages. Please Contribute to make this Useful.
Programming-Basics - This Repository Contains source codes of various programming languages. Please Contribute to make this Useful.

Programming-Basics About ❓ Want To Start your Open-Source Journey Without Facing Difficulties?,If Yes, Then You Are at The Right Place! 🎯 Don't Know

Competitive Programming Language MM

MM Language MM Languageは、競技プログラミングのために開発中のプログラミング言語です。 どんなことが可能なのかは、examplesおよびexamples_outputsを参照ください。 まだ開発中の言語であるため、諸々不備があり、コンパイルエラーの行数表示さえまともに出せない状

the kyanite programming language

Kyanite Kyanite is a small passion-project programming language intended to be light-weight and simple to use. You can read more on the language itsel

λQ: A Simple Quantum Programming Language based on QWIRE.

λQ λQ: A Simple Language based on QWIRE which can be compiled to QASM. The name λQ means lambda calculus with quantum circuits. This is a term project

The Scallion Programming Language

--------------------------------- The Scallion Programming Language --------------------------------- Version ------- Here's no version to download,

A powerful, strongly-typed, functional programming language.

SuperForth About A minimal, performant, strongly-typed, and functional programming language focused on being practical and pragmatic, yet powerful eno

My journey through learning C following the "The ANSI C programming language" book

The ANSI C programming language: Some of the exercises This is a repo containing my attempts at some of the exercices present in the "The ANSI C progr

Stack based programming language

stacky WIP stack-based compiled concatenative programming language. Currently it's somewhere between B and C programming languages in universe where B

A Simple Toy Programming Language
A Simple Toy Programming Language

Tovie Lang Small toy programming language. Docs : https://github.com/Jaysmito101/tovie/wiki Examples : 1. Hello World proc_0 "Hello" 32 "World!"

Comments
  • Create sections of cpp programming for realtime and safety.

    Create sections of cpp programming for realtime and safety.

    realtime cpp:

    https://www.amazon.com/Real-Time-Efficient-Object-Oriented-Microcontroller-Programming/dp/3662478099

    safety cpp:

    https://www.amazon.com/Secure-Coding-2nd-Software-Engineering/dp/0321822137

    opened by ZhenshengLee 3
  • C++ High Performance: Both first and second edition of same book is listed in same section

    C++ High Performance: Both first and second edition of same book is listed in same section

    These are just first and second edition of the same book:

    • C++ High Performance: Boost and optimize the performance of your C++17 code (Björn Andrist, 2018)
    • C++ High Performance: Master the art of optimizing the functioning of your C++ code 2nd Edition (Björn Andrist, 2020)
    opened by bjornblissing 1
  • Script for book data scrapping

    Script for book data scrapping

    I gratefully accept any help with this task. I'm planning to do data scrapping on the most popular sources and publishers, Amazon, Leanpub, O'Reilly, Packt. Create a hash on every existing book, so that not to add it twice. Add new books as Github Issues. An interesting task, but I lack experience in Web Scrapping and don't have much time at the moment.

    opened by yuchdev 0
Owner
Yurii Cherkasov
Yurii Cherkasov
Programming Language T#. Compiled language. In development.

Programming Language T# WARNING! THIS LANGUAGE IS A WORK IN PROGRESS! ANYTHING CAN CHANGE AT ANY MOMENT WITHOUT ANY NOTICE! $ make func main() {

Ibuki Yoshida 1 Feb 1, 2022
T# Programming Language. Interpreted language. In development. I will make this compilable later.

The T# Programming Language WARNING! THIS LANGUAGE IS A WORK IN PROGRESS! ANYTHING CAN CHANGE AT ANY MOMENT WITHOUT ANY NOTICE! Install Install $ make

T# 91 Jun 24, 2022
A cheatsheet of modern C++ language and library features.

C++20/17/14/11 Overview Many of these descriptions and examples come from various resources (see Acknowledgements section), summarized in my own words

Anthony Calandra 15.4k Jan 6, 2023
Modern C++ Programming Course (C++11/14/17/20)

Modern C++ Programming Course (C++11/14/17/20)

Federico 620 Dec 31, 2022
Linux Network Programming in Modern C++

Linux Network Programming in Modern C++ Starter code for network programming in the Linux environment, providing wrapper classes written in modern C++

Francis Y. Yan 13 Feb 7, 2022
A minimal, toy programming language implemented in C++ and STL.

od Programming Language Mod (or ModLang) is a minimal, toy programming language implemented in C++ and STL (Standard Template Library) with no other e

Pranav Shridhar 27 Dec 4, 2022
Teach the C programming language using a collection of super beginner friendly tutorials and challenges.

TeachMeCLikeIm5 You are welcome to contribute to this repo. See the CONTRIBUTING.md for more info ?? About this repo ?? A collection of super beginner

inspirezonetech 11 Nov 4, 2022
Roadmap for learning the C++ programming language for beginners and experienced devs.

Roadmap for learning the C++ programming language for beginners and experienced devs. // Дорожная карта по изучению языка программирования C++ для начинающих и практикующих.

Evgeny 1.8k Jan 1, 2023
General purpose and statically typed programming language

Synthium Synthium is designed to be a systems programming language. It takes inspiration from existing systems programming languages, but also from so

Synthium Programming Language 12 Oct 16, 2021
Colang - Programming language and compiler —WORK IN PROGRESS—

Co programming language Building Initial setup: ./init.sh will install the following into deps/: ckit build tool and rbase library ckit-jemalloc memor

Rasmus 70 Dec 5, 2022