C Programming: A Modern Approach
Author: K.N. King
Publisher: W.W. Norton & Company
C is now a rather venerable programming language. It was designed at Bell Labs in the US by Ken Thompson in the early 1970s as a response to the problems of coding Unix, then a new operating system, in low-level assembler language.
Thompson regarded C as a high-level assembler programming language, and it is excellent in this role. I am working on a large industrial project that uses C programming for the parts of the system that are intimately involved with its low-level interfaces. So C is alive and well despite successors such as C++, C# and Java, which impose and encourage a stricter discipline on programming style, often with an object-oriented flavour. Indeed, early versions of C++ compilers, designed in the early 1980s by Bjarne Stroustrup, compiled to C as the "low-level" target language, which could then itself be compiled to object code.
The first edition of this text, from 1996, covered the C89 standard of 1989; this second edition has been updated to follow the C99 standard of 1999, with differences clearly indicated. The text has also been brought up to date by removing references to older operating systems such as DOS.
The volume is comprehensive, with more than 800 pages of material and a good index. Chapters include exercises, with online resources for instructors, facilitating its use as a textbook, as well as a work of reference. Appendices offer comparisons of the C99, C89 and original "Kernighan & Ritchie" versions of the C language, together with a list of C's standard library functions and other information. Students who use C after taking a course on the language will find this book useful as a source of help when writing C programs as well as when initially learning C.
The market for this book is likely to be somewhat limited as there is now a plethora of newer programming languages, especially in the object-oriented mould, and most computer science degree programmes teach one of these rather than this older language. That said, more engineering-oriented students working at the machine level could benefit from learning C.
This is a worthwhile book, and the second edition will give it a continued lease of life. Despite its age, C is still industrially relevant, especially for lower-level applications. Teachers of C-based programming courses should consider using this book, and for those using C in industry it is a beneficial reference book.
Who is it for? C programmers, as a comprehensive textbook and reference book.
Presentation: Detailed but accessible for C programming students.
Would you recommend it? Worth considering as a textbook for a C programming course.