C 299
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.
Re:don't waste your time (Score:4, Informative)
Quick Learning (Score:5, Informative)
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.
here's a good beginner book on C (Score:4, Informative)
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.
Re:Why are people still using a 30 year old langua (Score:4, Informative)
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.
Re:Tools of the trade. (Score:2, Informative)
"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.
Re:Why are people still using a 30 year old langua (Score:5, Informative)
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++).
Re:Lost in a sea of C's! (Score:1, Informative)
Haskell is a better example of a functional language.
Re:Rule of Thumb (Score:3, Informative)
if((temp=realloc(cp,n))!=null)
cp=temp;
Where to look for good C and C++ book reviews (Score:3, Informative)
You might try the Association of C and C++ Users [accu.org] web site.
Re:Experienced programmers (Score:1, Informative)
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.
Re:Not quite that low... (Score:1, Informative)
Re:Get rid of C! (Score:1, Informative)
@_@
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.