What do you think?
Rate this book
Written for experienced C programmers who want to quickly pick up some of the insights and techniques of experts and master the fine arts of ANSI C, this volume passes on the wisdom of a highly experienced C compiler writer and his colleagues to help programmers reach new heights, and avoid common software pitfalls along the way. Using an original approach and a humorous style that makes deep knowledge both easy and accessible, it gathers into one place, tips, hints, shortcuts, guidelines, ideas, idioms, heuristics, tools, anecdotes, C folklore, and techniques that are often penciled in margins and on backs of papers by those working in the programming trenches—working on many different kinds of projects, over many, many years. Each chapter is divided into self-contained sections. Includes extended discussions of major topics such as declarations and arrays/pointers; offers a great many hints and mnemonics; covers topics that many C programmers find confusing; and features one of the best introductions to C++, and the rationale behind it. Throughout, technical details are interspersed with many true stories of how C programming works in practice, and each chapter ends with an amusing C story or piece of software folklore. For software engineers and computer programmers who are writing, developing, testing, debugging software on either IBM PCs or Unix systems.
802 pages, Kindle Edition
First published June 24, 1994
Some people claim that C++ classes will revolutionize software reuse. Reuse is a nebulous goal in software. Inheritance is not necessarily the panacea that it seems. Those with long memories are reminded of inflated claims made for Ada a decade ago. Let's make an analogy by saying that a computer program is like a book. Then you have libraries of both. And you want to reuse some routines in one of your programs. This corresponds to some paragraphs in the book.
The problem is that you can't create any kind of new worthwhile text by cutting and pasting entire paragraphs from other books. The level of abstraction is wrong. You can share text on the level of individual words or letters (this corresponds to individual lines of code or characters), but the effort involved in laboriously cutting them out is higher than the effort involved in deriving them afresh for the new work. And in just the same way, software reuse at the library level has empirically turned out to be less than originally envisioned.