Sunday, September 20, 2020

Book Review: "Modern C++ for Absolute Beginners"/“A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards” by Slobodan Dmitrovic

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/

1 comment:

zxc said...

What about the second edition?