This post is part of my Book reviews series, where I share thoughts and impressions on the books I read.
Learn the depths of the C programming language through foundational theory and practical examples.
The book is split in 7 parts, covering 23 Chapters over 777 pages.
Code examples are showcased, together with occasional diagrams, all in monochrome text and images.
👩💻🧑💻 Who is this book for?
Junior and intermediate programmers with pre-existing knowledge of C and C++.
The author's claim is that the book will provide you with both the fundamental and advanced knowledge needed to develop and maintain real C applications.
It's among the newer books on C that you can find on the market, in this section of "zero to hero in C". The information is therefore up to date and definitely usable in day to day work with C.
For a book written and reviewed by such purportedly experienced C/C++ programmers, I find un unacceptable - both from the authors as well as the editorial team - to call the
sizeof unary operator as a "function". Another example was "in most 64 bit machines, the word size is 32 bits or 4 bites". And both of these statements were found in Chapter 1!
The code examples are strangely called "code boxes", but in the text are often referred as "examples". The numbering of these is also very strange, with the form
Code Box 1-26[ExtremeC_examples_chapter1_14] and the author refers to "example 1.14". I find this needlessly confusing and also hard to quickly find out what example he means.
Another aspect I find myself strangely reluctant to mention, but it bears mentioning nonetheless as it's quite jarring, is that the English phrasing used is not what I would call "proper"; it's neither British English nor American English.
In addition to the poor phrasing, the explanations themselves are confusing in many places, making it sometimes impossible to understand what the author wants to say.
Annoyingly so, and I will keep mentioning this for every poorly edited Packt book that I read: the editorial quality is very, very low. I find this unacceptable, considering that the books are priced at the same level with other publishers (e.g O'Reilly), which have significantly superior editorial quality and checks in place to not allow very basic mistakes to make it in the final printed edition.
🚧 Improvements I would suggest
Fix fundamental mistakes in the text.
Adjust the naming of the code examples to something simpler.
Add line numbers when referring to code examples.
I find it very hard to recommend this book, as I've had to stop quite early on, because I was getting quite worried about the accuracy of what I'm reading. What we read ends up filling our mind space, and I believe there is a real danger of getting "dumber" by reading subpar technical literature.
I'm sure that this is not really what the authors intended, and it's most likely a consequence of bad editing and small mistakes that crept in and weren't spotted properly. At the same time, this is not an excuse.
All technical books, which by their very nature imply that the information should be highly accurate and "technical", should have in my view the highest level of quality control and minute attention paid to all the small details. This is not the case for this book, and as I've already mentioned is a general issue with all the Packt books I've read so far.
It makes me both sad and quite angry that such books exist and are read by programmers; this only compounds the overall challenge we have today in software development of work being done poorly and haphazardly.
Appreciate nonetheless the author's efforts to write the book, as this is always a gargantuan effort, and I'm grateful for their time investment and their desire to share their knowledge with the world. At the same time, Packt has done them a disservice by publishing the book in this state, and I would suggest that they stop printing this version and issue a newer, corrected version.