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.
If you're worried that such an outdated book might not be a good introduction to C.. think again. This book isn't for people new to programming, just new to C, but this is an exciting relic even for modern day programmers. If you've ever used linux and specifically the linux terminal, you'll be pleasantly surprised to find that you'll be reimplementing some of the tools you may already be familiar with in linux. The guys that brought you the C language and the Unix operating system provide a thorough introduction to C as it was when it became the language of choice for operating systems and given how little C truly has changed in the past few decades, you'll manage to follow the examples with ease.
This is a good book if you're interested in C, and a great book if you combine that with a strong interest in Linux. Otherwise, you might look elsewhere for a more modern approach to C programming. You won't find much guidance in the way of developing large software projects in C, but playing around and implementing command line tools is all here.
Almost 30 years after publication, this is still the number one tutorial book on C. What other technology book can claim to still be relevant after 30 years? None that I know of ... The book is clear and concise, handing you all the important parts you need to know to get started. The writing is excellent. The approach is pragmatic. It is what a tutorial should be. There is a widespread debate between 2 camps concerning K&R; those who claim it is the first and last 'C' book you will ever need, the best computer science text ever written on the face of the earth, and those who claim it is overrated and mediocre at best. Although there certainly are no deep and esoteric computer science revelations to be found within its pages, it is simply the best at what it aims to do: introduce a programmer to the C programming language. Short and simple. THIS is why it's so loved. It stands head and shoulders above competing texts. So, is this the first and last 'C' book you will ever need? No, but it will teach you the fundamentals of C, a foundation that lasts a lifetime. C is still the language in which most of the world's critical infrastructure is implemented. Most of the stuff that MATTERS, that will still be around decades from now, is programmed in C (or it's superset C++). And unlike what some people claim, C is the most foundational programming language around (more so than C++), and definitely also the proper path to take if interested in C++ (maybe not the fastest path). Like the first chapter's title gives away, the book is really a tutorial introduction to C. Beware this is NOT the same as a tutorial introduction to programming. The assumption is you know how to program; this is not a beginner's book. If you want to learn how to program, Python is by far the best language to start out. In conclusion, I would like to address the claim of some people that it is littered with errors and spelling mistakes. This is only the case when you use the pirated version that is going around the net; it seems to be a completely retyped 'fan effort' that introduced a few typos (but I'd say it's still very usable and a commendable effort). The original is flawless; after all it benefitted from close to 30 years of debugging.
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.
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.
Really good explanation of the C language, as far as I can see, just beware for the odd thing e.g. Getline s now in the standard library and so has to be renamed in order for the code in exercise 1.9 to run. This leads me t believe it may be showing its age. Despite that I would recommend it.
I'm giving this two stars as the version of the language described is *very* different to the one currently in use. If you don't know what "K&R" C is and if you are not a collector, don't buy this book - it will not help you in any way for modern programming. The last time had the opportunity to use this version of the language professionally was in 1990. If you do know about K&R, you already know that it is a classic of programming, and you don't need my recommendation! It's very well written, and was the book to originate the idea of printing "Hello world!" as the first program, getting users started as soon as possible. It sits on my shelf between Richards and Whitby Strevens on BCPL, the later K&Rs, and a set of Stroustrop on C++.