About the Content on this Page
All content on the page is based on my experience. This list is, by no means, exhaustive and serves one purpose: to support my Mentees. Ask me for details if you need more information.
Please use the "Table of Content" Menü on the to navigate through the Content of this Page.
Blogs
Collector
- Meeting C++ Blogroll by Jens Weller (weekly collection of blog posts)
General
- Andreas Fertig’s blog by Andreas Fertig (Intermediate; author of C++ Insights)
- Bartosz Milewski’s Programming Cafe (Category Theorie, Haskell, Concurrency, C++; advanced)
- C++ Stories by Bartlomiej Filipek (Beginner/Intermediate)
- foonathan by Jonathan Müller (Intermediate/Advanced)
- Fluent C++ by Jonathan Boccara (Beginner/Intermediate)
- Modernes C++ by Rainer Grimm (Beginner/Intermediate)
- Simplify C++ by Arne Mertz (Beginner/Intermediate)
- Stuff mostly about C++ by Arthur O’Dwyer (Intermediate)
- Sutter’s Mill by Herb Sutter (Beginner/Intermediate)
Concurrency
- Just Software Solutions by Anthony Williams
- Preshing on Programming (his posts about the memory model are the best I know)
- Sutter’s Mill (33 articles on effective concurrency) by Herb Sutter
Coroutines
- Asymmetric Transfer by Lewis Baker (Very insightful but advanced)
- How C++ Coroutines work by Kirit (Motivating introduction)
Design Patterns
- Design Patterns by Alexander Shvets (Beginner)
Microsoft
- C++ Team Blog by Microsoft (Beginner/Intermediate)
Collector
- Meeting C++ Blogroll by Jens Weller (weekly collection of blog posts)
General
- Andreas Fertig’s blog by Andreas Fertig (Intermediate; author of C++ Insights)
- Bartosz Milewski’s Programming Cafe (Category Theorie, Haskell, Concurrency, C++; advanced)
- C++ Stories by Bartlomiej Filipek (Beginner/Intermediate)
- foonathan by Jonathan Müller (Intermediate/Advanced)
- Fluent C++ by Jonathan Boccara (Beginner/Intermediate)
- Modernes C++ by Rainer Grimm (Beginner/Intermediate)
- Simplify C++ by Arne Mertz (Beginner/Intermediate)
- Stuff mostly about C++ by Arthur O’Dwyer (Intermediate)
- Sutter’s Mill by Herb Sutter (Beginner/Intermediate)
Concurrency
- Just Software Solutions by Anthony Williams
- Preshing on Programming (his posts about the memory model are the best I know)
- Sutter’s Mill (33 articles on effective concurrency) by Herb Sutter
Coroutines
- Asymmetric Transfer by Lewis Baker (Very insightful but advanced)
- How C++ Coroutines work by Kirit (Motivating introduction)
Design Patterns
- Design Patterns by Alexander Shvets (Beginner)
Microsoft
- C++ Team Blog by Microsoft (Beginner/Intermediate)
Books
General
- The C++ Programming Language by Bjarne Stroustrup (comprehensive book about C++11; fourth edition)
Best Practices
Clean Code
- Beautiful C++: 30 Core Guidelines for Writing Clean, Safe, and Fast Code by J.Guy Davidson, and Kate Gregory (I was a proofreader)
- Clean C++20: Sustainable Software Development and Best Practices by Stephan Roth (clean code, C++ idioms, functional programming, testing, and design patterns)
- C++ Coding Standards: 101 Rules, Guidelines, and Best Practices by Herb Sutter and Andrei Alexandrescu (covers legacy C++)
- C++ Core Guidelines Explained: Best Practices for Modern C++ by Rainer Grimm
Effective C++
Effective C++: 55 Specific Ways to Improve your Programs and Design (the classic; covers C++98) More Effective C++: 32 New Ways to Improve your Programs and Design (the extension to the classic; covers C++98) Effective Modern C++: 42 Specific Ways to Improve your Programs and Design (I was a proofreader; covers C++11/14) by Scott Meyers
Exceptional C++
- Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions (intermediate/advanced challenges; based on C++98)
- Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions (intermediate/advanced challenges; based on C++98) by Herb Sutter
Legacy Code
- Working Effectively with Legacy Code by Robert C. Feathers (the classic)
Refactoring
- Refactoring by Marting Fowler
- Refactoring to Patterns by Joshua Kerievsky
Concurrency
- The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit (advanced; the classic)
- C++ Concurrency in Action (second edition) by Anthony Williams (advanced, the reference book)
- Concurrency with Modern C++ by Rainer Grimm
Cookbooks
- Modern C++ Programming Cookbook (Second Edition) by Marius Bancila (More than 100 recipes from core language, library, best practices, testing, including C++20)
- C++20 STL Cookbook by Bill Weinman (Standard Template library based recipes, including C++20)
Embedded
- Real Time C++ by Christopher Kormanyos (Intermeidate/Advanced)
Efficiency
- The Art of Writing Efficient Programs by Fedor G. Pikus (Many deep insights, but challenging to read)
- Discovering Modern C++ by Peter Gottschling (I’m biased because Peter is a good friend)
Functional Programming
- Functional Programming in C++ by Ivan Cukic (Functional Theory applied in modern C++)
Implementation
- Inside the C++ Object Model by Stanley B. Lippman
Introduction
- A Tour of C++ by Bjarne Stroustrup (an overview of C++ as defined by C++17)
- The Design and Evolution of C++ by Bjarne Stroustrup (the design goals and practical constraints of C++)
Libraries
Open Source C++ Libraries
- A list of open source C++ libraries on cppreference.com
Boost
- The Boost C++ Libraries by Boris Schäling (good overview)
ACE
- C++ Network Programming Volume 1 by Douglas C. Schmidt and Stephen D. Huston (applied design patterns an architectural pattern in ACE (ADAPTIVE Communication Environment) )
- C++ Network Programming Volume 2 by Douglas C. Schmidt and Stephen D. Huston (applied design patterns an architectural pattern in ACE)
Patterns
Anti-Patterns
- AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis by William J. Brown, Raphael C. Malveau, Hays W. “”Skip”” McCormick, andThomas J. Mowbray
Design Patterns
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (the classic)
- Design-Patterns-GoF by Bart Vandewoestyne (C++ implementation of all examples; based on C++98)
- Head First Design Patterns (Second Edition) by Eric Freeman and Elisabeth Robson (best introduction)
Embedded
- Small Memory Software: Patterns for systems with limited memory by Charles Weir, and James Noble
C++
- Modern C++ Design by Andrei Alexandrescu (advanced; a seminal book for C++)
- Hands-On Design Patterns with C++ by Fedor G. Pikus (advanced)
Pattern-Oriented Software Architecture
- Pattern-Oriented Software Architecture, Volume 1 by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal (the classic)
- Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects) by Douglas C. Schmidt, Michael Stal, Hans Rohnert, and Frank Buschmann (the classic)
- Pattern-Oriented Software Architecture, Volume 3: Patterns for Resource Management by Michael Kirchner, and Prashant Jain
- Pattern-Oriented Software Architecture, Volume 4: A Pattern Language for Distributed Programming by Frank Buschmann, Kevlin Henney, and Douglas C. Schmidt
- Pattern-Oriented Software Architecture, Volume 5: Patterns and Pattern Language by Frank Buschmann, Kevlin Henney, and Dougles C. Schmidt
Software Design
- C++ Software Design by Klaus Iglberger (I’m biased because Klaus is a friend)
Performance
- The Art of Writing Efficient Programs by Fedor G.Pikus (must have for an experienced, performance oriented C++ programmer)
Software Engineering
- Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister (the classic about software management)
- The Mythical Man-Month: Essays on Software Engineering by Fred Brooks (the classic about typical scheduling failures; a must read)
- The Deadline: A Novel About Project Management by Tom DeMarco
Standard Library
- The C++ Standard Library by Nicolai Josuttis (the reference book about the C++ standard library; based on C++11)
- The C++ Standard Library by Rainer Grimm (a comprehensive guide; based on C++20)
- C++20 STL Cookbook by Bill Weinmann (many value receipts around modern C++)
Theory
- From Mathematics to Generic Programming by Daniel Rose and Alexander A. Stepanov (the mathematical ideas behind the STL; one of my favorites)
- Elements of Programming by Alexander Stepanov and Paul McJones (more formal treatment of many ideas in From Mathematics to Generic Programming, pretty advanced to read)
Templates
- C++ Templates – The Complete Guide (2nd Edition) by David Vandevoorde, Nicolai M. Josuttis, and Douglas Gregor (the reference book)
Template Metaprogramming
- Advanced Metaprogramming in Classic C++ by Davide Di Gennaro (advanced, based on C++03)
- C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond by Aleksey Gurtovoy, and David Abrahams (advanced, based on C++03)
- Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki, and Ulrich Eisenecker (the seminal book for Template Metaprogramming; based on C++98)
- Modern C++ Design by Andrei Alexandrescu (advanced; a seminal book for C++, based on C++98)
- Template Metaprogramming with C++ by Marius Bancila (best introduction, based on C++20)
Tools
CMake
- Professional CMake: A Practical Guide by Craig Scott
- Modern CMake for C++ by Rafał Świdziński (should be your starting point)
Conferences
Conference | Time | Duration | Participants | Place | Video | Characteristics |
---|---|---|---|---|---|---|
C++ Russia | Spring and autumn | 3 days | 200 - 300 | Moscow or St. Petersburg | ||
Spring | 3 days | 150 -200 | Bochum | |||
Spring | 2 days | 200 -300 | Bucharest | |||
April | 3 days | 150 -200 | Bristol |
Documentation
General
C++ FAQ
C++ Idioms
- More C++ Idioms (Wikibook)
Guideliness
- AUTOSAR C++14 (Guidelines for the use of the C++14 language in critical and safety-related systems by the AUTOSAR development partnership)
- C++ Core Guidelines (Community driven guidelines for best practices in modern C++; editors are Bjarne Stroustrup, and Herb Sutter)
- MISRA C++ (Based on C++03; the upcoming update is based on C++17 and includes C++20)
Tools
CMake
Conan
Libraries
General
- Boost C++ Libraries (the unofficial standard for C++ libraries; incubator for future C++ standards)
C++20
- data by Howard Hinnant (prototype library for the C++20 chrono extensions)
- fmt by Victor Zverovich (prototype library for the C++20 formatting library)
Concurrency
- Concurrent Data Structures (CDS, contains many lock-free data structures)
- Boost.Lockfree (contains a lock-free queue, a lock-free stack, and a wait-free ring buffer)
Networking
- POCO by Günther Obiltschnig (lightweight and convenient to use library)
Unicode
- ICU – International Components for Unicode (industry standard for unicode in C++)
Online Compilers
General
Special
- Compiler Explorer (visualizes assembly code and executes it by Matt Godbolt)
- Local installation ⇒ Compiler Explorer on GitHub
- Cpp C++Insights (shows compiler transformations by Andreas Fertig)
- Interactive C/C++ memory model (explores the C++ memory model)
- Metashell (interactive template metaprogramming shell)
Successors
Carbon
- Carbon Language: An experimental successor to C++ on GitHub
- Carbon Language: An experimental successor to C++ by Chandler Carruth on CppNorth 2022
Cppfront
- Cppfront on GitHub
- CppFront – “Fixing” C++ with Syntax 2.0 by Herb Sutter
Val
Talks
2022
Title | Language | Event | Town | Date | Length | Slides/Video |
---|---|---|---|---|---|---|
const and constexpr | English | Meeting C++ | Online | 25-Jan-2022 | ||
Extend and Embed Python | English | EmBO++ | Online | 26-Mar-2022 | 50 min | |
C++20: The Small Pearls | English | ACCU | Bristol | 06-Apr-2022 | ||
English | C++20 Techniques for Algorithmic Trading | Online | 26–Apr-2022 |
Podcasts
- ADSP: The Podcast by Bryce Adelstein Lelbach and Conor Hoekstra (Algorithms + Data Structures = Programs)
- CppCast by Rob Irving and Jason Turner (the C++ podcast; ended after 349 episodes)
- cpp.chat by Jon Kalb and Phil Nash (chats with guests from the C++ community)
Videos
Design Patterns
- Design Patterns by Example with C++ by Douglas Schmidt (very good introduction)