Product: 1449327141

A very useful book. Mainly a book of ideas more than anything else. Sometimes that is missing in the software development literature. The C11 standard has yet to take hold far and wide. A large body of code will be in earlier versions of C for the foreseeable future. New development however presents an opportunity for doing things with new versions of C in a different way.

Source code in C that fully embraces new constructs in the latest revision of C is as different from previous versions of C as code based on the later C++ revisions are to earlier C-Style C++. Code based on earlier revisions are forward compatible, but the latest revisions are not backwards compatible. Like C++, C standardization has gotten on track to encode in the language, the lessons learned in the realm of software development.

The book is an attempt to leverage some of the possibilities and express them in a way that is relevant to real-world use. Some of the ideas in the book goes against widely held programming orthodoxy and will probably be seldom adopted, but such ideas are discussed. The book, despite the impression I may have given, is not about C11. A lot of the book is still rooted in the earlier revision. The author acknowledges that not all compilers have embraced the latest revision.

Some will have read this book within the first two decades of the 21st Century and dismiss many parts of it. Much of that will be due to the gap between the ideas expressed and the reigning orthodoxy. The book does foreshadow that code defined in the C language during the middle and later parts of the 21st Century will be completely different in form and structure to code in revisions of C prior to C11. That code will not look the way it does in this book, but the author’s work reflects how different C code can be.

The book is not entirely about an alternative way to write C code. Chapters 2 - 4, basically the front part of the book, focuses on development process and tools. The information in those chapters are relevant today regardless of which version of C you are using and applies to command-line C++ development as well. Writing code is more than writing code, it also involves tools and process and those chapters covers it. One catch, the information is for those already acclimated to the manual way of doing things. What the author covers is another manual way of doing things that consolidate multiple manual steps under the assumption you already understand those steps. As a result, it is not really for beginners.

The way the book is written is it is a conversation between people experienced in the realm of native code development involving C and/or C++. The book has no beginner level topics but may be approachable to someone who has spent a few months in the topic areas addressed. It is senior level information directed to those with hands-on background in the topic. The structure and tone of the book is a persuasive argument for a set of development practices and language usage that the author has found useful. I think it succeeds more in the initial chapters but is weaker in making the case in chapters 5 onward. However, those chapters are a good starting point for those interested in exploring the topics further.

The book does have weakness of content rather than of writing. The writing is excellent, approachable, and gets the points across very well. One major weakness is the book does slant more in the direction of Linux and Unix-based environments. I do not personally think that is so bad but it just means some of the thoughts expressed will not translate fully to a Windows-based environment. What makes up for that is the author doesn’t clearly say that, but implies the gap between some of the advancements in C and their lack of uptake in Windows. A lot more innovation in the C and C++ languages seem to occur more often and more rapidly in the Linux and Unix-based environments so it is understandable that a book on the topic may have an emphasis in that direction. You also see the same in a worthy companion book of the title, Advanced C/C++ Compiling.

One area where the book’s content may be less applicable, at least for a number of years, is in the area of hardware, real-time, and embedded device programming. I would speculate that earlier revisions of C will be stronger there for a while and some of the guidance given in the book do not seem as if they would scale down although they do seem relevant for desktop class computers and up. That is just my perception.

Again, the book provides good exposure to alternative ideas in the application of the C language. That is the biggest strength of the book followed by a solid discussion of development process at the beginning. The author points out that many books on C programming are either outdated or mechanically updated to talk about new versions of C without really taking a holistic view of the topic in the context of language updates. This book is a start on that conversation. It is not a tutorial or walk through of C but is the right type of book to read after you have learned how to do native code in the basic way.
Rating: 4
1449327141
Count: 7