-
- James Coplien, ``Advanced C++'', Addison-Wesley.
This book is only for experts, but it has some good ideas in it,
so keep it in mind once you've been programming in C++ for a few years.
-
- James Gosling. ``The Java Language.'' Online at
``http://java.sun.com/'' Java is a safe subset of C++. It's main
application is the safe extension of Web browsers by allowing
you to download Java code as part of clicking on a link to
interpret and display the document. Safety is key here, since
after all, you don't want to click on a Web link and have
it download code that will crash your browser. Java was defined
independently of this document, but interestingly, it enforces a
very similar style (for example, no multiple inheritance and
no operator overloading).
-
- C.A.R. Hoare, ``The Emperor's Old Clothes.''
Communications of the ACM, Vol. 24, No. 2, February 1981,
pp. 75-83. Tony Hoare's Turing Award lecture. How do you build
software that really works? Attitude is everything -- you need
a healthy respect for how hard it is to build working software.
It might seem that addding this whiz-bang feature is only
``a small matter of code'', but that's the path to late, buggy
products that don't work.
-
- Brian Kernighan and Dennis Ritchie, ``The C Programming Language'',
Prentice-Hall. The original C book -- a very easy read. But the
language has evolved since it was first designed, and this book doesn't
describe all of C's newest features. But still the best place for
a beginner to start, even when learning C++.
-
- Steve Maguire, ``Writing Solid Code'', Microsoft Press.
How to write bug-free software; I think this should be required
reading for all software engineers. This really will change
your life -- if you don't follow the recommendations in this book,
you'll probably never write code that completely works, and you'll
spend your entire life struggling with hard to find bugs.
There is a better way! Contrary to the programming language types,
this doesn't involve proving the correctness of your programs, whatever
that means. Instead, Maguire has a set of practical engineering
solutions to writing solid code.
-
- Steve Maguire, ``Debugging the Development Process'', Microsoft Press.
Maguire's follow up book on how to lead an effective team, and
by the way, how to be an effective engineer. Maguire's background is
that he is a turnaround artist for Microsoft -- he gets assigned to
floundering teams, and figures out how to make them effective.
After you've pulled a few all-nighters to get that last bug out
of your course project, you're probably wondering why in heck you're
studying computer science anyway. This book will explain how
to write programs that work, and still have a life!
-
- Scott Meyers, ``Effective C++''. This book describes how
50 easy ways to make mistakes C++; if you avoid these, you will
be a lot more likely to write C++ code that works.
-
- Bjarne Stroustrup, ``The C++ Programming Language'', Addison-Wesley.
This should be the definite reference manual, but it isn't.
You probably thought I was joking when I said the C++ language was
continually evolving. I bought the second edition of this
book three years ago, and it is already out of date.
Fortunately, it's still OK for the subset of C++ that I use.