Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Programming Books Media Book Reviews IT Technology

C 299

Craig Maloney submitted this review of Addison-Wesley's entry in the tough field of books on C (book title: C), and pulls no punches in comparing it to others. He says it's slightly above average, but that "experienced programmers will likely pass on this book." Read the complete review below for his reasoning.
C (Addison-Wesley Nitty Gritty Programming Series)
author Klaus Schröder
pages 400
publisher Addison-Wesley
rating 5.5
reviewer Craig Maloney
ISBN 0-201-75878-4
summary A slightly better than average C book with some very good points, but poor delivery.

Lost in the Company of Giants

It's hard not to take a book like C and compare it to such acclaimed and trusted books as K&R, Expert C Programming, and other lesser known, but equally good tomes. Unfortunately C doesn't really compare with many of the other classic books covering the C language. For starters, the writing in this book isn't quite up to the same caliber as the other books. Part of the problem with this book is language. English does not appear to be the author's native language. There are sentences in this book that require a few glances to glean the full meaning. C is difficult enough to present without a language barrier introducing more problems. Another problem is organization. The ideas presented at the beginning of the book are muddled and disjointed, with multiple ideas introduced but not formally explained until later. Beginners will have a terrible time working through this book without becoming quickly confused, and experienced programmers will likely pass on this book in favor of the other well-known books.

Not All Bad

The book is not all bad, however. The examples in the book are plentiful and are based on tried-and-true examples found in books like K&R. There are some idioms that are used in the examples that will irk the more structured programmers (not using braces in certain areas being the biggest example), but most of the examples are pretty good. Also, the explanations of the more advanced topics are relatively good considering how confusing the more basic material is. Memory management is explained well, with clear diagrams (although the programs are a bit confusing without a careful eye).

So What's in it for Me?

Addison-Wesley is clearly marketing this book to the same crowd that purchases quick-learning books. Unfortunately beginners purchasing this book will quickly find themselves lost amid the confusing descriptions in this book. Those who manage to muddle through will find some tasty bits of information locked inside, but the work involved in getting there outweighs the rewards. Most programmers will probably want to leaf through a copy of this book before purchasing it to make sure they'll get the most out of it.


You can purchase C from Fatbrain. Want to see your own review here? Just read the book review guidelines, then use Slashdot's handy submission form.

This discussion has been archived. No new comments can be posted.

C

Comments Filter:
  • by geoswan ( 316494 ) on Tuesday March 05, 2002 @10:59AM (#3112403) Journal
    If you are reading this discussion because you are planning to learn C, know that not only is K&R's book a very fine book, but there is geek cachet in being able to say "I learned C from Kernighan and Ritchie".
  • Quick Learning (Score:5, Informative)

    by jeks ( 68 ) on Tuesday March 05, 2002 @11:08AM (#3112455)
    Learning C as your first language, without any prior computer experience may not be the most clever thing to do. Programming C efficiently, correctly and clearly is best achieved by first understanding computer architecture and programming concepts.

    A higher level language provides the abstractions necessary to accommodate "logical thinking" as opposed to a full understanding of say memory management and system I/O. Also, C is quite an orthogonal language in that it supports many awkward combinations of features and constructs. If you are not careful to make your source text clear and readable, debugging even your own code can be oh so cumbersome.

    Hence, perhaps reading a book such as "Computer Architecture: A quantitative Approach" by J. Hennessy and D. Paterson is a sensible step towards learning C for the beginner.
  • by ForsakenRegex ( 312284 ) on Tuesday March 05, 2002 @11:11AM (#3112477) Homepage
    The best book for C beginners I've ever come
    across is _A Book on C_, by Al Kelley,
    and Ira Pohl. I've recommended it to quite a
    few beginners and they've all said it was an
    easy and very informative read.
  • by pizen ( 178182 ) on Tuesday March 05, 2002 @11:22AM (#3112542)
    So what you're saying is that you prefer a language that has NO MEMORY MANAGEMENT to one that does?

    A good programmer can manage memory without the help of the runtime environment. There's a certain pride in being able to program with no memory leaks.
  • by ciscoeng ( 411359 ) on Tuesday March 05, 2002 @11:42AM (#3112644)
    Three of the best I've read for programming in C (that are happily ear-marked, bent, and written-in):

    "C Traps and Pitfalls", Andrew Koenig, AT&T, 1988
    - A bit dated in places, but still covers the very fundamental gotchas that a lot of programmers forget/don't know

    "Expert C Programming: Deep C Secrets", Peter Van Der Linden, SunSoft Press, 1994
    - Fun to read, especially how the simple linguistics of a language can cause major ($20 mil)
    bugs

    "The C Programming Language, second ed", Kernighan and Ritchie, AT&T, 1988
    - They developed C, 'nuff said.

  • by blackwings ( 525682 ) on Tuesday March 05, 2002 @11:50AM (#3112684)
    Reasons to still use C (at least sometimes):

    1. It is the native language to most operating systems API (*nix, MS-*).

    2. It is the language most third party librarys and code is written in.

    3. It is the language a lot of old code is written in.

    4. Interfacing other languages with libraries or APIs written for C is never as easy as the documentation says it is and issues may slow down development time significantly.

    5. It is the only widely used standardized all purpose language that is available to all platforms.

    C++ - is hardly standardized (most compilers still does not come close to the ANSI-C++ standard).
    ADA - Is not widely used.(unfortunately)
    Java - Is not an all purpose language.

    6. It is a very elegeant and consistent language (unlike C++).

  • by Anonymous Coward on Tuesday March 05, 2002 @02:13PM (#3112944)
    Lisp covers functional, procedural and OO. That's what makes it such a joy the program in, because it doesn't tie you down to one paradigm.

    Haskell is a better example of a functional language.
  • Re:Rule of Thumb (Score:3, Informative)

    by pizen ( 178182 ) on Tuesday March 05, 2002 @02:41PM (#3113149)
    The problem is not with realloc. The problem is if realloc fails it returns null and you lose the pointer to memory that is cpand thus creates a memory leak. The better code would be:

    if((temp=realloc(cp,n))!=null)
    cp=temp;
  • by Anonymous Brave Guy ( 457657 ) on Tuesday March 05, 2002 @03:00PM (#3113283)

    You might try the Association of C and C++ Users [accu.org] web site.

  • by royalblue_tom ( 557302 ) on Tuesday March 05, 2002 @03:02PM (#3113294)
    Mod this up!

    I always recommend Schildt's books. Clear descriptions, good example code. Perfect for a complete novice beginner.

    I learned from "C, The Complete Reference". The examples on how pointers work - excellent.
  • by Alhex ( 243364 ) on Tuesday March 05, 2002 @05:05PM (#3114139)
    Actually malloc is part of the ANSI C standard...and K&R C for that matter.
  • Re:Get rid of C! (Score:1, Informative)

    by Anonymous Coward on Wednesday March 06, 2002 @01:33AM (#3116653)
    Spot the error on that line. Now, ask someone who's never programmed in C before to spot the error. Give up?


    @_@

    The error is obvious, and I've never programmed in C before, only C++. Tell me, what part of your C experience told you that references were the way to go here?

    The answer to your problem is obviously to discard C, and up the standard of how C++ is taught. For all your enlightenment of how bad C is (we should use OO, etc) there are fifty bearded unix guys who will claim C to be the ultimate programming language, useful for all and any problem.

    And the ultimate answer is to discard C++ and C both as learning languages and go for something more modern. C++ can then be used when it's absolutely needed, and we software designers can actually get some real evolution going for our toolset.

"A car is just a big purse on wheels." -- Johanna Reynolds

Working...