on March 13, 2000
This book (widely known as K&R, after the authors' initials) has for over twenty years been the best way to learn C. When I got this book in 1980, I had access to a Unix system and worked through much of the tutorial material in it. On the way I learnt a great deal, not just about C, but about good programming style, code reuse, the value of clear comments--in short, I was introduced to the skill set of an experienced computer professional.
The book was a trendsetter in several ways. For example, the very first exercise given is to print "hello, world"; this is now seen as the first exercise in innumerable other, more recent books, many of which may not realize that they are borrowing from K&R. The rest of chapter 1 (there's a chapter 0, an introduction; another geek-cool change which has been widely copied) is a tutorial that takes you through assignment statements, data types, if/else, for, while, printf, function definitions, arrays, and variable scoping, in less than 30 pages. If you work your way through the embedded exercises you'll have written utilities to strip tabs, reverse input by lines, strip trailing whitespace from input, and several others. This is much more challenging than most tutorials, but the effect on the student is that you feel you are being treated as an equal. The book doesn't talk down to you; it gives you accurate and concise answers. It's written for programmers, in other words.
The next few chapters go back over the elements of C in more detail, and should also be treated as a tutorial. Going through this material religiously will be far more valuable than any college class could possibly be.
There is a reference section at the back, which is good to have. But the real value of this book is in the tutorial approach: it is a rare pleasure in the computing field to find a book that is simultaneously clear, stimulating and informative.
on July 12, 2000
I've first bought this book when I started my academic studies, after 5 years of work with Fortran 77 & three years of work with Pascal.
This small book (270 pages, including the index) served me well through my degree, and I still keep the dog-eared, yellowing, aged book with me at work.
The book focuses on the language itself - this is no hands-on book (no explanations on how to use this compiler or that debugger, though it is a little biased toward Unix) - in a clear, concise, and thorough way covering all of the language and it's standard libraries.
I especially liked the excercises (the solutions come in a seperate volume) and the C source code examples of how some of the library routines are (or may be) implemented.
With this book I had no problem understanding the more difficult subjects (e.g. many people have problems with pointers, and this book makes the subject easy to understand) and avoiding pitfalls.
I've read it in a week, and keeping it in hand's reach smoothly started programming in C.
The only drawback I see in this book is it's price, it's a small book which sells *very* well, and I'd expect it's price to be lower. This book is *not* for people who study C as their first programming language (those would be better served with a pair of books - a first course in programming and compiler guide).
on November 8, 1997
This book is not "for Dummies". It assumes that you already have some knowledge of structured programming languages (i.e. Pascal). For example, this book spends four well-written pages explaining everything you need to know about functions. If you don't know what a function is, this will clearly not be enough. However, if you do know about functions, this book will not drone on and on for an entire chapter or two on the subject like some of the foot-crunching tomes the size of an encyclopdia.
The book is expensive ($40) for its size (approx. 250pgs.), but it is worth every penny. To quote the authors: "C is not a big language, and it is not served well by a big book."
As a bonus, almost anything you need to know about C can be found in seconds using the excellent index. It should be noted that this is a language reference and will NOT tell you how to use your editing environment or compiler.
In summary, intermediate or advanced programmers should be able to learn C with reasonable proficiency in a short amount of time.
on February 20, 2002
About 5 years into my programming career, I was mildly interested in learning C, so I picked up this book. At the time, I was deterred - it was very brief, terse, and confusing, so I put it back down again.
But now, years later, with many more languages under my belt, I find myself again drawn to C. So I picked up this book again (2nd edition), and finally, I see the light! It is a wonderful book, I agree with all the glowing comments people have written about it, BUT! It is a book written by a computer programmer, for other computer programmers, not a book written by a teacher for a beginning student.
You have to work through the examples, though. If you 'just read' this book, you'll comprehend and retain close to '\0' (null) of the information presented. It's only by going through the examples, that you really nail the subject matter. Yeah, I know, some of these examples are tough - but they're also real-life, and typical of routines every programmer writes and uses. I myself sweated blood over exercise 3-3, but hours later when I was done, the satisfaction of comparing my answer favorably to others was worth it. :-)
I have the C For Dummies books 1 and 2, and after going through them, I was still a Visual Basic programmer. ;-D If you already are a computer programmer, and want to obtain serious knowledge in C without wasting your valuable time, learn from this book.
on November 24, 1999
This is probably the greatest introductory programming world ever written!
This is the classic "how to program" book. The book may seem quite old, but so is C, so you'll not miss anything. Half of the other introductory books written today will often quote this book, especially in reference to the "hello, world." example contained within. The "K&R" is well known among programmers as the all-time classic programming book - for any language.
If you read through this book, I promise that you'll find it easy to grasp with a pace that will not bore you to tears.
For those of you just starting off, remember that this is not a C++ book. You may not want to use Visual C++ 6.0 with this book. Instead, you can download a DOS based C compiler from wwwdeloriecom. I believe you'll find that compiler much more appropriate for learning C with this book, and best of all, it's FREE. After this book, you should have very little trouble adapting your knowledge to C++ and the Visual C++ 6.0 IDE.
on April 25, 2001
Boy, does this book ever take me back. The first edition of this book was the first book about computers I had ever read. I had an Apple IIe, a C development environment (on 6 floppy disks, which had to be swapped in and out while building), and was trying to teach myself to program. I mostly understood what I was reading - until I got to the section about pointers, which I found incomprehensible. I just couldn't figure it out, until I was reading another book about the Apple II, which explained how the video system worked - then I got the idea that if I took a pointer and set it to video buffer, I could change what was displayed on the screen. Voila, it worked, and I was started on a profession that lasted to this day.
I still have that first edition, and years later, in 1988, when the second edition was published, I bought that. Well, there hasn't been a third edition, nor has one been needed. C is essentially a finished product. It does what it was made to do, which was to fill a role that didn't exist at the time of its creation, a language that could be used for both systems and applications programming. At that time assembly language was used for systems programming, and languages like COBOL, FORTRAN, or Pascal were used for applications programming. C could be used for both, and the rift between systems programming languages and applications programming languages was healed, at least until recently (applications programming has largely migrated to C++, while systems programming is still largely done in C).
If you want to do systems programming, you just need to learn C. But what if you want to do applications programming? Is it still worth your while to learn C? Well, yes. Here are some reasons why: First, C++ (and Java too, for that matter) are derived from C and are easier to learn once you know C - in fact, C++ is essentially a superset of C, to learn C++ you need to learn pretty much all of C anyway. Second, there are still a lot of C programs around, it is handy to be able to work on them should the need arise. Third, programming examples pretty much everywhere are routinely written in C. Fourth, C is just a neat language in its own right in which to write code; it is small and easy to learn, lends itself to small, fast code, and is available in almost every development environment.
So, if you are going to learn C, should you get this book?
For the first edition, the answer was easy because the book at that time not only taught people to program the language, it was the authoritative definition of the language - you would have been foolish to attempt to learn the language without it.
For this edition, that is not necessarily true - in fact, the book cover now refers to "ANSI C", as ANSI has taken over defining the language standard, which the first edition of this book had formerly filled. In one sense, "K & R", as it has been known through the years, is now just another book about C. But in another sense, this book still is C - you can put the first edition and this one side by side (I have both before me now - the first edition is battered and worn, but otherwise very like the second), and be amazed at how similar the two are. Not many changes were made to the language definition between the two editions (all of them good ones), so there was little need to rewrite because of content changes. Most of the changes were for clarity - the chapter on pointers, which gave me so much trouble so many years ago, was the only one completely re-done for the second edition and is much the better for it.
So what does this book have that other C programming books do not? Authority. History. Community. The creator of the language wrote this book. For over two decades programmers have learned the language from this book. This is the book that you are more likely to share with other programers than any other. In sum, if you are interested in learning C programming, it should be an easy decision to go ahead and get this book.
on September 12, 2001
It is difficult to avoid cliches when talking about this book - it is just so good, that one can't help heaping superlatives on it.
This book is affectionately known as 'K & R', after the names of the authors, and it is almost definitely the most widely respected of all books on any given programming language.
This is the book that introduced the 'Hello World!' program to the world :-), which is now practically a standard first program in any introductory book on any programming language.
This is straight from the creators, and the implied authority, while an excellent reason in itself for taking a look at the book, pales in comparison to its other merits - brevity & clarity being foremost.
This book is best appreciated if you already have some programming background - i say this from experience, since i knew Fortran 77 & Pascal before i learnt C, and the knowledge of Pascal, in particular,made it much easier for me to pick up C than classmates for whom it was the first programming language.
Of course, if you're new to programming, you could still try learning from this, but it might be a bit of a struggle. If so, the books by Kelley & Pohl, K.N.King or Gottfried(Schaum series) may be useful for 'getting upto speed' with C first, and then coming to K & R.
C is the one language which is both 'high level' and 'low level' at the same time - to date, it is the nearest to the ideal of a programming language that is easy enough in description to be followed by human readers, and at the same time close enough to the machine's language to be executed fast.There are faster languages, to be sure - assembly language is necessarily faster than any high level language. But just try coding a reasonably involved program in assembly, or even reading such an effort ! There are other languages which might be 'easier' for people to read, but they are slower(C++,Java,etc,etc).
It is also the 'mother' of all modern biggies - C++ owes even its very name to C, Java was derived from C++, and Perl is **written** in C !!
So knowing C would give you a better appreciation of the other languages as well.
And it's still the language of choice for systems programming - so no systems programmer can afford to be a non-expert at C.
Anyway, back to the book - and what a book it is! The authors are not just great programmers, they are outstanding writers as well.
The book is just 274 pages, but it will teach you more than most thick 'tomes' on programming could ever possibly teach.
And no, that doesn't imply that it's 'dense' or abtruse. The authors choose their words judiciously, and there is not a word out of place.The book is designed to make you think, for there is no better way of learning than to think things out for yourself.
Reading the carefully worded text and working out the compact examples will teach you a lot - if you can go through all the exercises, well then you'll surely be an expert when you finish the book. I never did, but i learnt enough to implement several projects in C over the past six years, right from searching and sorting to cryptography and speech recognition.
The examples in this book are a thing of beauty (and therefore a joy forever!!). Elegance, in one word.
It has that universal characteristic of a great book - no matter how many times you read it, you'll learn something new.
You may buy several other books for specialized purposes of particular projects, but when you want to get into the nitty-gritty, to clarify any elusive points, you'll return here, to 'the word of the law', as laid out by the creators of the language.
Basically, if you program in C, you've just got have this book -
and once you have it, you'll find it indispensable.
on October 30, 2002
"The C Programming Language" is NOT a book for beginning programmers, or for those very new to C who wish to learn gradually. It is not much of a tutorial. It's written for either very experienced programmers coming from other languages, or for those who know the basics of C and need a reference book. The descriptions and examples are terse, and the learning curve is steep. Once you are comfortable programming in C, however, this is the one book you want next to you (and it will likely be the ONLY reference book you will ever need for straight ANSI C). Since it was written by the original authors of the C language, it's hard to imagine anyone being more authoritative on the subject, and although there's little hand-holding, it is well-written and pleasant enough to read through cover-to-cover. When you're ready to really get your hands dirty, do not hesitate to order this book.
on April 24, 2003
This is the one and only book to have on the C programming language, written by the original developers of the language. It covers all of the syntactic and semantic issues of the language. Any question regarding C can be answered here and can be located quickly thanks to its good index. I am impressed by the completeness of this text, it includes very useful information such as: precedence and associativity rules, bit-wise operators, the preprocessor, control structures, pointers, the standard C library, I/O, interaction with the UNIX operating system, and a complete language specification. The list goes on!
For nearly every feature of the language, there are very useful exercises that will either familiarize the reader with the feature or clarify the reader's previous knowledge. Although many of the examples are targeted towards intermediate or advanced programmers, beginning programmers should be able to get a lot out of many of the examples.
I have purchased many 1000+ page books on different languages including C and have found that many are incomplete and spend numerous pages on topics that can be stated in one or two paragraphs. This book in around 250 pages covers everything you need to know about the C programming language and I would highly recommend getting a copy for your own library.
on October 13, 2011
This book is the standard on C from the inventors of the C language. It is exhaustive and well written but not a book for beginning programmers.
This book got me a job at Intel. I read it on the airplane on my way over to Phoenix for an interview. Two weeks before I had written a program that in a loop multiplied a number by (c/2 != ++c/2) to both increment and select a value. This worked fine compiled under GNU C with the debugging flag on. As soon as I turned on the optimizer on the compiler it stopped working. According to the book, the order in which items in an equality or inequality operator are executed are compiler dependent. As it turns out the optimizer would reverse the order of these operations when turned on.
This is the kind of attention to detail that this book has. It covered even this arcane example, yet it's a thin easy to read well index text. Any and every C or C++ programmer serious about what they do should own this book. I own several copies.
During the technical part of my interview I was given a challenge problem that included the increment operator on one side of an equality operator as part of the computation. I told the interviewer that he would get two different results depending on whether or not he used the optimizer during compilation. As we passed his cubicle I saw him compiling the test problem and checking to see if what I had said was right.
Despite the fact that I showed up late for my interview and the receptionist had told me upon my arrival "Why did you even bother showing up?", not only did I get offered the position, but I was offered a higher salary than the rest of the candidates that passed the interview. I ended up taking a position in Southern California instead but definitely appreciate the fact that I was able to learn some very important information about the C language on the airplane ride over to Phoenix from this book.
One final note. This last week has been a very sad week for the computing industry. We lost a couple of amazing innovators, among them Dennis Ritchie. While he may not get as much press his contribution to the world of computing runs far deeper than most people are aware of. If Steve Jobs were alive he would most certainly acknowledge the passing of a great man whose contribution is the life blood of just about every computing device on the planet, past, present and likely in to the future. This book is not only an amazing reference but a part of history and I am happy that several copies, some dog eared and marked, grace my bookshelf.