C: From Theory to Practice, 2nd Ed
C: From Theory to Practice, 2nd Ed

Author: Dr. George S. Tselikis & Dr. Nikolaos D. Tselikas
Publisher: CRC Press
Date: June 2017
Pages: 716
ISBN: 978-1138636002
Print: 1138636002
Kindle: B00I60MUIQ
Audience: Potential C programmers
Rating: 3
Reviewer: Harry Fairhead

C is still a very important language and perhaps still growing in importance because of the IoT.

The big problem with C is that there is a well known "best book" in the form of the original K&R introduction - see the side panel for the second edition.  However, K&R is terse and some criticize it for being a bit dated. This is a book that is easy to compare to K&R in that it adopts the same dry style of presentation and it doesn't really go in for discussion or talking around the topic. It might be terse in this sense, but it has a lot of pages - over 700 - and it is a substantial book. One of the great advantages of K&R is that it is short and easy to use as a refresher. A great deal of the space is taken up with 500 exercises with solutions and some unsolved exercises. In this sense the book is good for self study or as a course text, but there is more to know before you choose.




Chapter 1 is an introduction to C and it is where you write your first program. No IDE or explicit environment is used or explained. If you really are a beginner then you are going to have a hard time getting started. Chapter 2 deals with data types and its not really logical in that we have floats and doubles being used before the whole idea of data representation is introduced. Do we really need to confuse the beginner with an example of why you shouldn't compare floats or even doubles with equality so early? There is much to learn and this sort of important idea is likely to make more sense later. We also have an almost encyclopedic examination of printf() - great for a reference but not so much for an introduction to C. Scanf is next, in Chapter 3 and it is another in-detail look at something messy which is better put off till later. Chapter 4 launches into a detailed and complete listing of all the operators you can use, including bitwise, logic, shift and coma operators. This is far too much for the complete beginner.

You can see that even by Chapter 4 we have a problem in that the book reads more like a reference manual than an introduction to a language. This approach continues in Chapters 5 and 6 where we are introduced to the control statements - if, switch and the loops. Nothing is spared and if you haven't got much of an idea about the flow of control this will not ease you in. Even for an experienced programmer it is going to be too complete to be memorable. 

From here the book continues in this completist fashion on a fairly predictable course - arrays, pointers, chars, strings, functions, searching and sorting, structures and unions, malloc, files and finally macros.




I say finally because this is where the first edition finished. But the second edition has three more chapters. Chapter 17 is a short look at the problem of building large programs - which briefly introduces makefile. Nowhere near enough for you to follow some of the more advanced but common ways that makefiles are used. Chapter 18 is an introduction to C++ and Chapter 19 does the same for Java. I can just about see why an introduction to C++ is included, but why Java? I have no idea. In any case both chapters are inadequate to give you a useful understanding of object oriented programming. If you are learning C then C++ is a reasonable next language but not Java - Rust probably has more claim to be included than Java.

There is a lot of material in this book and much of its value would be expected to be in the solved exercises. However, many of them are simply provided to get you to practice a topic and have you jump though hoops. In practice you would probably go out of your way to design the program so that you didn't have to do what the question was getting you to do.

The authors have clearly worked very hard to produce their 700+ pages.

The biggest problem is that the book doesn't address any of the typical uses of C - low level or systems programming. It goes over searching and sorting, hashing and so on, but there's nothing about bit manipulation or sockets. A particular problem, for example, is that the chapter on files doesn't mention the lower level Unix/Linux file descriptors and this is particularly important for low level programming and things like interprocess communication.

It isn't a suitable book for a beginner, unless it is used as part of a course - it is too encyclopedic and doesn't introduce ideas gradually or by building on previous concepts. It also makes no attempt to explain how to think about programming and just expects you to "know" how to program after having the syntax and semantics explained.  It also isn't a particularly good book for the programmer wanting to move from an existing language to C. The reason is that it doesn't do a good job of highlighting what is special about C and, what makes it different and worth the effort of learning.


Related Reviews

C Programming Absolute Beginner's Guide (3e)  Rated 4.5 out of 5 by Mike James

21st Century C Rated 4.5 by Mike James

C Primer Plus, 6e Rated 4 by Mike James

Secure Coding in C and C++ 2nd Edition Rated 4.5 by Mike James

Programming in C (4e) Rated 4 by Alex Armstrong


To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.


Developing Backbone.js Applications

Author:  Addy Osmani
Publisher: O'Reilly
Pages: 374
ISBN: 9781449328252
Print: 1449328253
Kindle: B00DCWOI5G
Audience: Intermediate JavaScript developers
Rating: 4
Reviewer: Ian Elliot 

Backbone.js is one of the many JavaScript libraries that you could adopt. What has it going for i [ ... ]

Machine Learning in Python

Author:  Michael Bowles 
Publisher: Wiley
Date: May 15, 2015
Pages: 360
ISBN: 978-1118961742
Print: 1118961749
Kindle: B00VOY1I98
Audience: Python programmers with data to analyze
Rating: 3.5
Reviewer:  Mike James 

Python is a good language to use to implement machine learning [ ... ]

More Reviews






<ASIN: 0321928423>

<ASIN: 0321822137>

Last Updated ( Saturday, 17 February 2018 )

RSS feed of book reviews only
I Programmer Book Reviews
RSS feed of all content
I Programmer Book Reviews
Copyright © 2018 i-programmer.info. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.