Recently Slobodan Dmitrovic published his first C++ Book - “Modern
C++ for Absolute Beginners”.
You can find the book on Amazon:
https://www.amazon.com/Modern-Absolute-Beginners-Introduction-Programming/dp/1484260465?fbclid=IwAR3IssSt_N0c6sXJWjwTuqvEBSAGW0KNjXVbg0zEiq5ASns5S3xQ_u1GISg
I have read his book, and here are my thought on it:
Writing a C++ and
especially Modern C++ Book is extremely challenging task. The
language is huge and even a simple list of the language features
takes hundreds of pages. It is even more challenging to write a
Modern C++ Book for complete beginners. The language is quite complex
with huge number of advanced and challenging for the beginner
concepts such as OOP, Polymorphism, operator overloading, copy and
move constructors, templates, functional programming with lambda
expressions, and many others. Slobodan Dmitrovic has faced an
enormous task trying to cover as much as possible without making the
book thousands of pages, and big enough to scare any beginner. Indeed
the book has a much more fitting second name: “A Friendly
Introduction to C++ Programming Language and C++11 to C++20
Standards” . In my opinion this name fits the book better.
The book takes
somewhat unusual approach. While most C++ books that I have seen
cover the C++ starting with introduction to programming concepts and
logic, starting with variable declaration, then structural
programming, and finally Object Oriented Programming, the book
instead focuses exclusively on Modern C++. Many of the traditional
old school language features and programming approaches are
intentionally omitted or barely mentioned as not recommended to be
used in Modern C++ development. While the book is named “Modern C++
for Absolute Beginners” this in my opinion is not a book for
beginners in software development. Instead this book is for software
developers with existing experience and knowledge that are complete
beginners in Modern C++.
The book covers one
by one each aspect of Modern C++, covering each topic in details
before moving to the next one. As example, only after going through
every single type of declaration, the book moves to statements. While
each feature description is somewhat brief, it allows the book to fit
in a reasonable size of around 300 pages, and still to cover all
aspects of the Modern C++. This also makes the book a very valuable
and easy to navigate reference manual. Me being a more traditional
relatively old school C++ developer, used to only some of the Modern
C++ features, the book helped me fill very well the gaps of my Modern
C++ development without overwhelming me. During the entire book, I
needed to check external references only once when trying to
understand the practical application of Move constructors and Move
Assignment operators.
Each chapter ends
with exercises. Here again the author has taken unusual approach.
Instead of showing the answers at the end of the exercise, he has
used the opportunity to show in the exercise some alternative cases
of using each feature introduced in the chapter. While unorthodox, I
have discovered that for me this approach worked as a reinforcement
of the new knowledge of the chapter, and allowed me to absorb the new
concepts better.
As an added bonus
the final chapter of the book is a great reference on what features
were added at what version of the C++ Standard - something very
valuable for anyone, like me, that has to work with variety of C++
compilers for different platforms.
I hope all of you will enjoy reading the book as much as I did, and will find it valuable source of information.
You can find more information about the author - Slobodan Dmitrovic on his web site:
https://www.cppandfriends.com/