I'd like to start this off by saying this is not a review of this book but rather a retrospective into the time spent with the book and what I've learned/done in regards to C since reading it. This book is from 1994 so this predates c99 which is considered a more superior version, but my goal was to learn the fundamentals of C and understand what it's for and what it can do. This book contains some outdated knowledge regarding IDEs and compiling which I disregarded considering I use Emacs and compile with gcc.

Regarding The Book

I found that this book does an excellent job of describing what C can be used for as well as detailed discussions regarding how to do something. The Why and How of learning a language is important, for example it gives context to why you'd want to use a switch case in comparison to something like the typical if/elseif as well as how they differ.

The pacing of the book is adequate as it takes the time to explain concepts using examples or use-cases with the occasional picture to support the new concepts, however it can be a bit irritating having to discern what I need to be looking for in a three-page spanning text document with very few comments made within. The exercises I found to be a bit difficult having not learned the concepts within chapter fully but was able to get through about half of the ones on the initial pass. Revisited some of the challenges later on and was able to grasp what they wanted me to do, but again only later on, if that was the intention then I don't knock it for this.

Have I Used C Since?

To be honest, not much. I used this book to better learn how the UNIX operating system interacts with C, and while this isn't the book to do so with, C is what the Linux kernal was written in so learning the language better explains the how and why in some regards. That being said, I have used the knowledge from C to further my knowledge regarding Crystal Lang and have worked on integrating C Libraries into some projects to have better access to the Linux kernal.

The macros and functions in C are familiar to me coming from similar languages, so this book felt like taking a deeper dive into topics I was only fairly familiar with.

Would I Recommend This Book?

Probably not, and the reason for that isn't because it's bad it had to do more so with how outdated the materials are. You'd be better off trying to find a more up to date version of this that at least covers C99 since that will give you a more modern and flexible approach to working with C. pre-C99 is harder to work with and will require some reinventing of the wheel that C99 has already solved. I happened to get this book at a second-hand shop for $2, so if you can, find a more up to date version of this.

If you have any interest in programming or computer science in general I would recommend picking up a book on C, Lisp, or Haskell as they will explain how programming works on nearly every level.