on 10 September 1998
If you read a lot of computer books, you can easily tell the good ones: they are frequently cited. Well, this book is frequently cited. You even find references to it in computer books that have nothing to do with C programming. That fact should tell you something.
I learned C from this book, and I have to agree with the authors that cite it--it's a good book. I have yet to see its equal for brevity, elegance, and completeness in teaching C programming. If you are a programmer who wants to learn C, then ignore the rest and read the best.
One warning though--this is not a book for beginners. As Kernighan and Ritchie say in the preface: "The book is not an introductory programming manual; it assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. Nonetheless, a novice programmer should be able to read along and pick up the language, although access to a more knowledgeable colleague will help." If you are a complete novice, heed their warning. If you don't have access to a more knowledgeable colleague, you will probably be better off selecting an easier book.
on 24 January 2003
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 23 February 2000
This book is a presentation of the C language so it won't:
* tell you how to design programs;
* tell you how to write concise, clear code;
* give you any detailed discussion on algorithms;
* tell you how to write C code that does job X (unless you particularly want a reverse Polish logic calculator).
It will however give you a thorough understanding of the C language and it's possibilities.
In terms of structure there's an introductory chapter which gets you started with "Hello, world!" and then a chapter for each major chunk of the language with some exercises at the end of each chapter. The exercises give you practice in using those aspects of the language you've been reading about. (Incidentally if you work through all the exercises properly not only will you have a very good understanding of the language you'll also end up with a very useful code library.)
Because the authors chose to focus on the language and weren't distracted from that, the book's style is concise but never at the expense of clarity (something everyone who's reviewed the book so far has remarked on). What you tend to get therefore is a description of a language feature (structures, say), a code fragment or two to illustrate the point and then a lengthier example to show how the feature could be used in a more extensive program.
The book's was a joy to read, is a pleasure to go back to and a relief to carry.
on 9 March 2007
This book is the classic of C programming. It covers all the aspects of procedural programming in C. It is one of the reference books by several C programming certification authorities, like Brainbench.
This book is written based on the ANSI C Standard. Half of this book is reference to the ANSI C standard.
It is more like a strict text-book rather than a interactive learning material. For programming beginners, you can get lost very easily and struggle with even the first chapter of this book. This book will not answer questions which beginners normally have about "How to do something". Instead, it explains idea directly about "why do we do this".
If you have some programming experience in C, this book will be your best friend to achieve a rapid progress. If you are newbie, read the "C How to Program - by Harvey and Paul" first to establish a solid knowledge basis. Do some exercises and small projects in C and find as many questions as possible. Then read this book.
on 28 May 1999
This book is the best book a serious C programmer can ever buy. The books that you get these days like learn in 24 hours or a week, are big fat, look good, teach a lot of graphics, but lack in true C content. But this one, is life time reference. Initially I found it disappointing, because it did not cover graphics, low level assembly. But as I began serious programming in C, I found this to be a life time reference. Any doubts, debates, .. go to this book. The authors also give a reference manual, if you do not want to read the book again. The exercises are challanging and very very creative. An expert should have this book and a beginner who buys this, is on his way to becoming an expert.
on 24 October 2003
This book is frequently sited in reading lists as a "Must have", which I found difficult to understand until I purchased it. The book as a whole is well written, clear and concise; the programs used within the text are useful, elegant, simple and well written.
Even if you have no intension of ever using C I recommend that you read this book, well written texts on programming languages are like gold dust, they are extremely hard to come by, and are a pleasure to read.
On a final note though I would say that this is not a text for beginner programmers unless you have someone to hand to explain certain things within the text to you. The book makes certain assumptions about the reader, including a knowledge of universal programming language features such as conditionals, loops, data structures and so on. However, if you learn from this book in combination with a more begginer-oriented text I can assure you'll be a more than decent C programmer at the end.
on 9 November 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 13 May 2016
I was handed this book (ok - then I had to get my mother to pay for it) back in 1981 when I was first exposed to UNIX and computers in my one-of-a-kind high school in Massachusetts. Previously I had been learning logo but I really wanted to know how computers work and the C/UNIX combination is a really good way to go about it.
I am rereading the book now because I just bought it for my daughter who just completed her first year of programming classes for college in the States using C++ (amazingly enough) but who will be learning C next year so she can "learn how computers actually work".
It's hard to overstate just how good this book is. It's written by computer scientists who also grok programming, by one of the creators of the language itself. It contains countless useful bits of information you can use as a reference the rest of your life. I used to interview supposed C programmers by asking them the simple question: "Do you know how to implement strcmp or strcpy" and if they had ever read this book, the answer would always be yes. And if you do know how those are implemented, you are well on your way to understanding how computers do what they do, how amazing it all is.
From 35+ years ago I can remember that from this book you will learn how strcmp works, how to write a simple memory allocator, how to implement printf, a beautifully simple implementation of quick sort, and how to write the stdio library, and many others. These things have all helped me be a better than average programmer with a lower average IQ than many of the people I have worked with in Silicon Valley over the years.
It is a beautiful example of concise, accurate writing.
And for me it also brings back incredibly fond memories of my high school years and the excitement that has continued ever since.
on 5 March 2002
I am a professional C Programmer. I learned C using this book and, 12 years on it remains the first book I turn to whenever I need to make references to some of the trickier bits of C.
Every professional C programmer I know owns this book. It is usually referred to as 'The C Programming Bible'.
The introduction begins with: C is not a big language and is not well served by a big book. This is so true. The usual inflated overweight books available on on C programming are unnecessarily lardy.
If you want to learn C, or if you want the definitive reference book on your bookshelf, buy this book.
on 8 December 2010
Having bought the 2nd edition when it was first published to support me in my student job at a university computer centre, I always thought of it as the bible for any C-programmer.Now, many years later my older son has developed an interest in programming and whilst most of his programming is done in more modern languages, he has been amazed by how much faster some of his programs were running when I re-wrote them in C. Looking at C has also taught him some basics of efficient programming and he has decided to invest some more time into learning C. At this stage I wiped the dust off my copy of K&R and passed it down a generation. Amazingly the book has lost nothing of it's appeal to programmers over the years and is still as useful as it has been over 20 years ago. Some of the principles of writing clean, readable and efficient code, taught in the book seem to have disappeared from modern teaching in programming. I am enjoying rediscovering part of my youth. I can only highly recommend this book to anyone starting out to program, anyone programming on Linux systems and those teaching programming.