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


Title:

Discovering Modern C++ (2e)

An Intensive Course for Scientists, Engineers, and Programmers

Author:

Peter Gottschling

Publisher:

Addison-Wesley Professional (2021)

Pages:

576

Reviewer:

Ian Bruntlett

Reviewed:

March 2023

Rating:

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 mathworld.wolfram.com 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 – https://github.com/petergottschling/dmc3 – 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 https://en.cppreference.com to supplement his text.

The GNU tools (see http://www.gnu.org/manual/manual.html ) 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.

Website: https://www.pearson.com/en-us/subject-catalog/p/discovering-modern-c/P200000000286/9780136677642