-
Scott Meyers - Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
It's a new chapter of a Scott Meyers books collection. This book contains a collection of advice about C++11/14 standards.
-
Anthony Williams - C++ Concurrency in Action
This book is a guide for multithreading programming and using the standard library features. It contains detailed explanations about all primitives and their nuances "behind the curtain".
-
Herb Sutter:
- Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
- Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions
- More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions
The collection of books describes a lot of tasks related to designing or writing code in C++. They propose a collection of effective solutions. A lot of them are approved and declared as classic idioms. You will regularly find these idioms around projects.
-
David Vandevoorde - C++ Templates: The Complete Guide
The newest and relevant book about C++ metaprogramming (templates). This giant work describes relevant technics of templates foundations that were added in the newest standards, including C++17. If you need to write generic and parameterized code, this book will become a "bible" to you. You will get knowledge either about the basics of templates or tones of nuances related to different technics.
-
Kurt Guntheroth - Optimized C++: Proven Techniques for Heightened Performance
This book is a guidebook for the performance improvement of C++ applications. Some advice in this book is based on different idioms and tricks described in books of Herb Sutter or Scott Meyers. It's recommended to read this book after reading the books above.
-
Agner Fog - Optimizing software in C++ or Optimization manuals
Practical-oriented guides that provide comprehensive information about the potential optimization possibilities of applications developed in C++, or related to interaction with the CPU, memory, etc.
-
This book is a classic guidebook of design patterns. Each pattern is precisely described and advised to a suitable use-case. This book is a good continuation of "Head First Design Patterns" by Eric Freeman. But be ready, this book is more complex than the previous one.
-
Gary McLean Hall - Adaptive Code
One of the best books that describe SOLID principles in simple terms. All code examples are written in C#, but it shouldn't be a problem as they were written in a simplistic way.
-
Robert Martin - Clean Architecture: A Craftsman's Guide to Software Structure and Design
One more work by Uncle Bob. For this time, this book will explain how to think about the architecture of an application/component first before starting rushing into coding. It shows where to pay attention upon analyzing a solution design. This book is a good start for people who are interested in architecture tasks in software design and don't know where to begin. The knowledge from this book is common for a lot of engineers and will be useful to prevent widespread mistakes in software design.
-
The short practical guide on how to approach writing programs using finite machines theory. It will be difficult to find a simpler and more elegant description of the theory of finite machines and its practical application.
-
Andrew S. Tanenbaum - Modern Operating Systems
The best book about operating systems. This is a fundamental book about its construction: file system, network, memory management, task scheduler, multithreading, etc. Each chapter contains large explanations for different OS aspects. It tries to explain deep details in simple words, but without diving in specific OS distributive.
-
Mark Russinovich - Windows Internals, Part 1, Mark Russinovich - Windows Internals, Part 2
This book discusses the same issues as the previous book, but focuses exclusively on Microsoft Windows OS. It dwells in detail on every aspect of the OS with a projection on Windows, and also talks about various nuances and aspects that may not be officially declared by the developers. A useful book for those who develop low-level applications that require intensive interaction with OS system libraries.
-
Christopher Negus - Linux Bible
This book can be a continuation after Tanenbaum's work. It goes into detail on every aspect of the Linux OS. All examples are analyzed for popular distributions: Red Hat, Ubuntu and Fedora. Suitable for developers who use this OS in their daily activities.
-
Ulrich Drepper - What Every Programmer Should Know About Memory
This article is a good overview: how PC memory works and why it works in the described way. It shows not only high-level representation, but low-level aspects are also described (if you have an intention to dive in this area).
-
Andrew S. Tanenbaum - Computer Networks
A classic book on the theoretical foundations of computer networks. It contains a detailed description, starting from the physical layer and ending with data transfer protocols. It will be extremely useful for those developers who are closely involved in projects that interact with networks.
-
Victor Olifer - Computer Networks: Principles, Technologies and Protocols for Network Design
Another great book on the basics of computer networks. At some points, the presentation of information can seem a little more complicated, compared to Tanenbaum's work. Therefore, we recommend choosing the book whose narrative is more suitable for you.