This is a random selection of reviews of C programming language books compiled in fits and starts over the last few years. I have reviewed cheaper books by preference. If only British publishers held the same view as Hong-Kong publishers: if it's cheaper to photocopy it, people will. The star system goes from 1 to 5. 5 stars I want to have on my shelf, or wish I had known about when I was learning. Less than this, it was an overall loss to me to have to spend time reviewing it, but it might suit you. Stars do not measure value for money. No stars means I have not graded it yet. ------------------------------------------------------------------------------ The C Programming Language, Brian Kernighan and Dennis Ritchie, Prentice Hall International, 27 pounds and rising (Also known as "The White Book" and "K&R") Unfortunately, you will be glad you bought one if you are going to use C, as opposed to translating your pascal programs into C so you can compile them, as it is the reference work for the language, has not been found to be incorrect on any issue (by definition!), and is complete except for voids and enumerated types, which are later additions to C and are not supported by some compilers. It uses small real examples instead of ad hoc ones, and contains many algorithms which are worth using or adapting. It also covers C programming on Unix and the programmer's interface to Unix, which is not covered by many other books. Apparently, PHI's marketing division keep going to the bosses to say that it is too expensive, only to have the bosses point to the "best-selling CS book of the year yet again" figures. Sigh. ***** mg Jan 87 ------------------------------------------------------------------------------ Unix - the Book, M Banahan and A Rutter, 8 quid (?) An excellent introductory book on Unix, with a single chapter on C, which is where I started from. About 7 or 8 pounds. ***** mg Jan 87 ------------------------------------------------------------------------------ The C Programming Tutor, Leon A Wortman and Thomas O Sidebottom, 7 quid (?) Authoritatively wrong on many counts. Tedious and inconsistent. Explanations unclear and incomplete. Layout poor, coding style nasty. You learn by watching the author do stupid things. They even manage to get the history of C and Unix wrong, which is in all the Unix documents! A dangerous book. Avoid. Prentice Hall again. 13 pounds 95. You gotta be kidding! mg Jan 87 ------------------------------------------------------------------------------ A Book on C, Al Kelley and Ira Pohl. Published by Benjamin Cummings. Believed to be a reasonable price. Seems to be ok, but not particularly good. Recommended by other members of the lab. a few, I guess mg Jan 87 ------------------------------------------------------------------------------ A Book on C, R E Berry and B A E Meekums, Macmillan, 7-95. Only mentions a subset of C, missing out many important bits. Already a slim volume, it wastes half the book on a listing of a compiler which only understands a subset of C. Even if you could be bothered to type it all in, and were able to debug it, you wuold need a real C compiler to be able to compile it! Programming style poor, particularly considering the amount of time they spend wittering about their program which automatically gives marks out of 100 to C programs. I can;t think of anyone who would find this book very useful. Occasionally wrong. mg Jun 88 ------------------------------------------------------------------------------ Advanced Unix Programming, Marc Rochkind Not a book on C, but a guide to Unix system calls. Assumes you speak C already and that you are familiar with user-land Unix (files, pipes, processes etc). It's a recent publication and I profited from reading it. Includes a section at the end of each chapter on portability to System Five, Version 7, 4.2BSD and the Xenix flavours of Unix. Bloody Prentice Hall again. 26 pounds 70. Get it out of the library, learn the concepts from it and then use the online manual system for reference. ***** mg Jan 87 ------------------------------------------------------------------------------ C: A reference manual, S.P.Harbison and G.J.Steele, Jr, Prentice-Hall, 1984. (known as "Harbison and Steele") It seems to have been accepted by much of the C computing community as the new K & R, including definitions for the common extensions to C which developed after the white book came out. mg Jan 87 (Do Prentice-Hall publish anything except C books?) The price is 22 pounds 95 pence, but it works out at about half the cost per word of K&R as it's got 272 pages! drm Feb 87 ------------------------------------------------------------------------------ Understanding C, Leon Heller, Century Communications I've never seen it, but judging by "Understanding the 68000", I would get my bargepole out (he evidently doesn't: nothing but bne, beq, bcc and bcs, and that's only the start!). I really can't see this uncorrectable TRS-80 BASIC hacker having any worthwhile ideas about C. Oh, and my copy has already fallen out of its cover. mg Mar 88 ------------------------------------------------------------------------------ C for Programmers, Leendert Ammeraal, someone obscure. Wiley? 8 quid (?) A slim volume. Accurate, complete, readable, cheap. What more do you want? Incidentally, his book on vector graphics is again slim, but the best I've seen in the field. Good. Jumps in at the deep end and seems accurate and complete. Have a look at it before buying, in case it is too terse for you. I spotted a few minor errors, but not on the grand scale achieved by some! The title is accurate and well-filled. **** mg Jun 88 ------------------------------------------------------------------------------ Learning to program in C, Thomas Plum, Prentice-Hall, 16-95 Aimed at computer-naive businessmen with a very low level of computing knowledge (starts at the level of binary arithmetic and memory boxes, with hotel-room analogies). Goes on to turn C into some other language, by redefining all its syntax with a header file of his own, and then teaches you this "something else" language. I found his labouring bedside manner irritating; you may like it. He has a few misconceptions. Bad, but not ugly. Overpriced as usual. mg Jun 88 ------------------------------------------------------------------------------ The Big Red Book of C, Ken Sullivan, Sigma Press, 7-50. No. Describes C as implemented on a few crummy micros, from the point of view of a short-sighted COBOL hacker. Ugly. (Quote from a member of the lab: "This is completely and utterly gross.") mg Jun 88 ------------------------------------------------------------------------------ BCPL and C A good idea, but a poor implementation. The book's understanding of both languages is shallow; there are some very worrying errors, through which chasms of misunderstanding can be seen. (e.g. the description of what WRITED() does with only one argument instead of the requisite two, is not only wrong, but *cannot* be true in BCPL or C). It seems carelessly thrown together. e.g. ``Unix is a trademark of ITT Bell Laboratories'', use of \(sl instead of \e throughout the C section, they call setjmp() and longjmp() setjump() and longjump(), for which the index entry misses by a page! Examples are full of errors. **** mg Mar 88 ------------------------------------------------------------------------------ C at a Glance, Adam Denning, Chapman and Hall / Methuen, 7-95 "This works on some of the micros I've tried it on, so I'll tell you it's C." A hopeless hacker. Confusing and sprinkled with stupidity and lies. (Quote from another member of staff being shown this book: "What a.. um.. bunch of um.. That's wrong!". This is just unbelievable.) mg Jun 88 ------------------------------------------------------------------------------ ANSI C Books: ------------------------------------------------------------------------------ The C Book, Mike Banahan, Instruction Set/Addison Wesley 1988, 16 quid it describes the Draft ANSI C standard and is aimed at those who already have knowledge of other 3rd generation languages and of computer architectures. Another superb book by Banahan. Passing remarks on the draft standard are interesting. Could do with a section outlining the differences between K&R C and ANSI C. Writing style: Engaging and effective. I fast-read it in an evening without skipping anything. Typography: Fine, save for a missing line on page 166. No other complaints. ***** mg Mar 88 ------------------------------------------------------------------------------ Software Engineering in C, Peter A. Darnell and Philip E. Margolis Mostly a tutorial on ANSI C, aimed at beginners and C dilettantes, which is silly, because C is not a beginner's language. Idealogically very sound - emphasis on producing good programs. If it had been carried off properly, it would have been excellent. A textbook in the old style: plodding rather than readable. They can't resist trite and misleading diagrams. (p.2, p.65) One nice idea is "bug alerts" (in shaded boxes - ugh) which point out common pitfalls for the unwary. On second thoughts, why do they need to make such a song and dance about it? Pointing out pitfalls is *part of* a teaching book. It's a Selling Point, I guess. (See notes below on typography.) A thick book. The usual unexplained listing of the authors' C interpreter for a subset of the language provides another good 1/4 inch. The authors are well-read on philosophy of programming: Hofstadter, Brooks, and many others. The book's intentions are unreproachable, but it seems to have some conceptual problems. eg: - It omits to point out that the language they describe is the *draft* ANSI C standard. - It misses the point of what they are saying (Bug Alert 11-1, p.349) - Much of the organisation of the book is of a classificationary nature, rather than a didactic one (big binary tables summarising what applies to what. Precise, but indigestible. - Occam's razor should have been applied to trim it down. Quantity is not everything. - It has no criticisms of ANSI C, but is scathing about K&R C. This shows a lack of judgement. - Why do they refer to # as "pound sign" throughout? There is too much of an air of "this works on my machine so I'll tell you it's standard", reminiscient of a low level of expertise. (eg their choice of "test.c" as an example program on How To Compile On Unix is unfortunate) Typography: appalling. Prepared for publishing by the authors. A typical effort by people who think that because they have the physical ability to typeset a book, they have the know-how. Sigh. At least four levels of chapter/section numbering, separate numbering chains for text, tables, figures, bug alerts and "boxes". Lots of tables of contents, list of figures etc, but they miss entries out! (eg ch 10 from List of Boxes) One wonders how they can possibly have computer-typeset the thing and managed to miss whole chapters out of their lists! It has manifestly not been put through a spelling checker. Binding: Lousy. The cellophane is already starting to peel off the cover. This book is a worrying mixture of the excellent and the very poor. A pair of authors to watch, however, once they have got over the thrill of producing book by 'puter, and got their act together a bit more. The chapter heading quotes are dull. I guess most of them came straight out of a Dic of Quots by keyword lookup. However, I shall quote one line from the chapter on Software Engineering: "... it is best if the specification is driven by one person. Committees are good for review but poor for design." ANSI Standards committee, please take note. One of the better books, probably one to borrow or to accept as a freebie. **** mg Mar 88 ------------------------------------------------------------------------------ Most Other C Books Are pretty bad, from what I've seen. Certainly, the bad outnumber the good. The more expensive ones tend to go in for distracting glossy typography but are no better for it, in fact, often worse. If you have a C book other than these, I would be interested to borrow it and add a quick review to this list. It would help if you could jot down your opinion of the book as you are likely to have read it more thoroughly than I would be able to. Martin Guy, University of Kent, 6 January 1987