||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Introduction to programming, C
Title: Beginning C
Author: Ivor Horton
Level: Introductory, intermediate
Ivor Horton's Beginning Java 2 is a firm favourite and one of the titles often recommended to Java newbies. It's well-written, has lots of interesting examples and is particularly good for those who have no prior programming experience. The same can be said of this new edition of 'Beginning C'.
Like the Java book, this is a title that is aimed as much at the reader who is new to programming rather than to the experienced developer who wants to pick up a new language. As such the book aims to point out all the elements of good programming practice: clear coding style, structured code, flow charts and other diagrams, good use of comments. Furthermore the book makes no assumptions, so the reader is guided gently into learning about looping, conditional execution, the use of variables and functions and so on. While this may be going over old ground to anybody who has used a different language it's essential to the beginner.
While the introduction to programming material is more common in the early chapters of the book, it doesn't disappear in the later chapters. However, as the book proceeds the emphasis moves much more to the core of the C language. The coverage is very thorough, particularly when compared to a lighter introduction such as C Programming In Easy Steps. Horton doesn't shy away from looking at material often considered tricky, particularly when it comes to pointers. Unlike a number of introductory books, the treatment here is very thorough, and covers the use of arrays of pointers and pointers to functions as well as the basic usage of pointers. Similarly the book doesn't skip on using memory allocation functions, (malloc and co), unlike some introductions.
Aside from good coverage, the book stands out in the use of interesting examples. In the later sections of the book the code is non-trivial and illustrates the use of standard C idioms to crack some good problems (including code for a game of Reversi). If there's a criticism it's that the code is occasionally repetitive - when a solution is being arrived slowly entire blocks of code are reproduced rather than simply showing only the new or improved blocks. This adds to the page count but it has the advantage of always showing a complete solution rather than having to piece the big picture yourself. The code is also downloadable from the APress web site.
The writing is clear and always interesting. When going through code there is always a 'try it out' section which details the code and then a 'how it works' section to walk through and explain what it going on. It's effective way of working for sure.
The book is generally very strong and the criticisms that can be made are fairly minor. For example the approach taken is decidedly operating system and compiler agnostic, which is fine, but it would have been good to have had a chapter that covered some of the more common compilers and tools for Windows and Linux. Even if it had only been an appendix that looked at gcc on the two major platforms it would have been helpful to the complete beginner.
However, this is a very minor criticism, when it comes down to it this is a very useful introduction to C programming. Recommended.