The C language, despite the best journalistic assassins, trained monkeys on bikes, an alleged lack of fashion taste, is still alive and rocking in the building. C is, beyond dispute, recognized as a resource efficient and thus valid language to use, especially for highly effective operating systems such as GNU/Linux and for device driver creation. A good starting point for learning is K N Kings popular book "C Programming: A modern approach", published by Norton, which has just reached its second edition and hence worthy of a new review.
C is still alive and rocking in the building
The book's cover
The author of this book has obvious and deep roots in teaching. The book is an impressive 832 pages in length. I believe that the size is warranted because of the detail that is needed for a full understanding of the language.
832 pages, 27 chapters, 5 appendices. The reader will find a lot of helpful content in this expansive book.
This corpus builds up, layer-by-layer, the concepts required to master the C programming language. Each chapter is structured with its contents first, some questions and answers (read as FAQ) and finally reinforcement exercises. If read in strict sequence, this book is an excellent investment for a student on a C programming course.
Starting from the very basics such as the history of the language, how to compile programs and "hello world", the book progresses from the general (I.O, expressions, loops, types etc.) and then tackles advanced issues such as pointers and arrays, low-level programming and program design.
I particularly like the structured learning approach. In particular, I enjoyed reading chapter 14 on preprocessors and chapter 15 on how best to write large programs. Many educational books miss these rather useful features.
Languages such as Java manage their own memory and clean the garbage up when necessary (well, mostly). In C, this must be explicitly done via malloc and free library calls (or similar). This garbage collection weakness implies that C programmers and programs are prone to error and memory leaks. Yes, that's why I keep forgetting my wife's birthday present and that's the nearest to an closest she is going to get. Anyway, Chapter 17. "Advanced use of pointers", is a good introduction to this traditionally problematic subject.
This garbage collection weakness implies that C programmers and programs are prone to error and memory leaks. Yes, that is why I keep forgetting to buy my wife's birthday present
Who's this book for?
The book has been written with the college-level learner in mind. However, the content is applicable to a much wider and diverse audience, including anyone working on their own. The use of question and answers helps to reinforce the content of each chapter.
Relevance to free software
This book is about C and its modern standards, C89 and C99. The author briefly mentions the compiler but otherwise stays focused on the main subject. The book does not discuss open source IDEs such as Eclipse. Still, in general, the book is handy for programmers who wish to write free software in C.
The book guides the reader along a well-defined learning curve. The author knows his stuff and every page reflects his knowledge and mastery of detail.
Like the sea smoothing pebbles with erosion over time, second editions tend to be better polished than the first. Comments and feedback, time to re-evaluate and bringing in new material make for a stronger, better read and this edition reflects all these strengths and improvements.
The author knows his stuff and the pages reflect this in the plethora of accurate detail
The book is excellent for learning the C language and it stays focused on that. This approach means that little mention is made of a programming IDE. Therefore, if you wish to know how to set up a development environment with GCC, make, subversion or the like then you are out of luck as the author has focused entirely on the language itself to the exclusion of any supporting environments.
Alan Berg Bsc. MSc. PGCE, has been a lead developer at the Central Computer Services at the University of Amsterdam since 1998. In his spare time, he writes articles, book reviews and has authored three books. He has a degree, two masters and a teaching qualification. In previous incarnations, he was a technical writer, an Internet/Linux course writer, and a science teacher. He likes to get his hands dirty with the building and gluing of systems. He remains agile by playing computer games with his sons who (sadly) consistently beat him physically, mentally and morally at least twice in any given day.