Browsing in a bookstore recently, I was discouraged to see the dryness of so many C and C++ texts. Few authors conveyed the idea that anyone might enjoy programming. All the wonderment was squeezed out by long boring passages of prose. Useful perhaps, if you can stay awake long enough to read it. But programming isn't like that!
Programming is a marvellous, vital, challenging activity, and books on programming should brim over with enthusiasm for it! This book is educational, but also interesting in a way that puts the fun back in functions. If this doesn't seem like something you'll enjoy, then please put the book back on the shelf, but in a more prominent position. Thanks!
OK, now that we're among friends, there are already dozens and dozens of books on programming in C - what's different about this one?
Expert C Programming should be every programmer's second book on C. Most of the lessons, tips, and techniques here aren't found in any other book. They are usually pencilled in the margin of well-thumbed manuals or on the backs of old printouts, if they are written down at all. The knowledge has accumulated over years of C programming by the author and colleagues in Sun's Compiler and Operating Systems groups. There are many interesting C stories and folklore, like the vending machines connected to the Internet, problems with software in outer space, and how a C bug brought down the entire AT&T long-distance phone network. Finally, the last chapter is an easy tutorial on C++, to help you master this increasingly-popular offshoot of C.
The text applies to ANSI standard C as found on PCs and UNIX systems. Unique aspects of C relating to sophisticated hardware typically found on UNIX platforms (virtual memory, etc.) are also covered in detail. The PC memory model and the Intel 8086 family are fully described in terms of their impact on C code. People who have already mastered the basics of C will find this book full of all the tips, hints, and shortcuts that a programmer usually picks up over a period of many years. It covers topics that many C programmers find confusing:
- What does
typedef struct bar {int bar;} bar;
actually mean?
- How can I pass different-sized multidimensional arrays to one function?
- Why, oh why, doesn't
extern char *p;
match char p100;
in another file?
- What's a bus error? What's a segmentation violation?
- What's the difference between
char *foo
and char(*foo)
?
If you're not sure about some of these, and you'd like to know how the C experts cope, then read on! If you already know all of these things and everything else about C, get the book anyway to reinforce your knowledge. Tell the bookstore clerk that you're "buying it for a friend."