Learning a new language is much more than just learning familiarising yourself with language syntax and features. To write safe and efficient production quality code you need to know which language capabilities to use and when. Especially with a language like C++ where there are a stunning number of ways to do the same thing. This is something we normally learn with real practice of using the technology.

This is a short note with a list of resources where you can enter the incredible world of C++.

📽 Videos#

This is a list of a few great videos and entire channels with lectures about C++, that I regularly watch myself and recommend to others.

Sole lectures#

Channels#

📚 Books#

The oldest and fundamental way to learn something is to read book. I don’t recommend reading thick folios like “Programming: Principles and Practice Using C++” by Bjarne Stroustrup (more than 1300 pages). This is a great book by all means, but for the beginning it could easily scare you away. There are some thinner and much more practical books that could save you many days of meditation with a debugger and tons of money.

  • “A Tour of C++”, by Bjarne Stroustrup. A brief and clear intro to modern C++ from the author and father of the language. Great starting point for someone who is new to the language, but knows some other programming language.
  • “Effective modern C++”, by Scott Meyers.. Scott Meyers was a software consultant in C++ world for many years since the beginning of the language's popularity. Over the years he mastered the skill to explain complex things in a way that is very easy to understand. He wrote a series of books “Effective C++” with very practical advice that saved a great deal of money for companies and eons of engineers time. I recommend the last book of the series only, because the early ones might seem a little outdated today. The language has evolved quite a lot since then.
  • “C++ best practices”, by Jason Turner. This is another great example of a thin and very practical book about modern C++. It is designed in a way that is useful for both total beginners and experienced engineers who wish to fill the gaps in features of modern C++ standards. It’s very concise and crispy, more like a cookbook with the most essential recipes and no lyrical digressions.
  • “The C Programming Language”, by Brian Kernighan and Dennis Ritchie. This book is so famous that it is sometimes termed just as “K&R” after its authors' initials. The modern C++ language went a great length from the original “C with classes” thing. But C++ inherits most of C's syntax and basic concepts like memory. If you have some spare time and would like to learn a bit of history this is a great book for that.

🌍 Web resources#

  • cppreference.com - this is a complete online reference for C++ (and C) language and standard libraries. It is the most visited and referred resource about C++.
  • C++ Core Guidelines - this is an initiative started by Bjarne Stroustrup and Herb Sutter. A set of guidelines and good practices to help write safer, better code. Not sure which of the existing fundamental options to choose, check with these guidelines.
  • compiler-explorer.com, godbolt.org, gcc.godbolt.org - an interactive compiler explorers. No need to set up many environments in your dev machine anymore to test certain code on multiple computers and platforms.
  • isocpp.org - a good way to learn what is going on in c++ community, like publication of recent videos, books or articles or new libraries.

This is not a full list of resources, but rather a good starting point for beginners in C++. You will come up with your own list of links and books once you start programming yourself. Good luck in your journey, I hope you will enjoy it!

🥰 Thanks to Sergei Nikitin for reading drafts of this!