REVIEW - Discovering Modern C++ (2e) - An Intensive Course for Scientists, Engineers, and Programmers


Discovering Modern C++ (2e)

An Intensive Course for Scientists, Engineers, and Programmers


Peter Gottschling


Addison-Wesley Professional (2021)




Ian Bruntlett


March 2023


Not Rated

Verdict: Unrated

This book has the strap-line “An Intensive Course for Scientists, Engineers, and Programmers”. I think this book is wrongly titled – it explores C++ 20 through the use of mathematics – in particular Linear Algebra and Calculus. I’ve received invaluable help from Frances Buontempo, I’ve used the Internet to find out about (mathematical) Vectors, scoured WikiPedia, consulted and read a book on Linear Algebra (accompanied by copious quantities of tea). However, with the addition of Calculus as well, I am out of my depth (maths wise) and currently cannot pass a verdict on this book. I will continue to learn more about maths – in particular Calculus – as well as C++.

I do have some observations that may help prospective readers. There is a sprawling collection of examples for this book on GitHub – – while the book does give some references to these examples, judicious use of the GNU find and grep utilities proved necessary. The author also makes references to to supplement his text.

The GNU tools (see ) and Visual C++ are catered for. I used GNU C++ (g++) during my reading of this book. Further reading is encouraged and there is a good Bibliography.

When introducing new ideas / C++ features, it indicates which version of the language they appeared in. Effectively, this is a C++ 11 book that got updated for C++20. However, this book was written when compiler support for C++20 features was incomplete – as a result, some C++ features get a mention but not definitive coverage. When it comes to user defined types, the author, showing his mathematical roots prefers templates to inheritance. For me, the ‘killer app’ of inheritance is the use of GUI frameworks. Also, the handling of I/O in the book illustrates the use of << and >> for I/O but does not show how to implement these operators for user defined types. I believe this is quite an omission.

To conclude, this book is too demanding for use as an introductory book on C++ but might be better suited to a beginner with plenty of time on their hands or for C++ programmers looking to upgrade their skills – assuming they are comfortable with the maths used within this book. Scientists and Engineers may find they need some help from a Programmer friend to help them get the most of this book. Joining the ACCU and subscribing to the accu-general mailing list would be a good idea, too.


Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED

By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED

Settings can be changed at any time from the Cookie Policy page.