The ‘dragon’ book. This is the first book on compiler design and parser generation that I read (though that was a borrowed copy of the previous edition). It provides a great introduction and got me interested in lex (and flex) and yacc (bison). There is a second edition of this book. I’m guessing that the previous version had a different title.
One of a number of COM books from Microsoft that covered the ongoing development of the technology before they shelved it to work on .NET.
I have found the ‘Effective C++’ books by Meyers to be indispensable when trying to get a development team with varying levels of experience up to speed. They’re also handy as a starting point for ‘best practices for C++’ lists, and if you’ve got a team of more than a couple of engineers you need such a list.
This book has some useful advice (and there may be a newer edition…I’ve got to take a look soon) but doesn’t seem to dive as deep or think as broadly as the C++ books. It has some useful advice around the basics of making C# work and work well though and if I had a major component of a product based in the managed environment I’d likely use this as the starting point for a C# best practices list and recommend that the team members read it or something similar. There is a third edition of this book on pre-order.
The book for numerical computing recipes covering a broad range of topics with excellent examples and sufficient detail to get the job done. This edition is implemented in C++ instead of C in the previous editions (or fortran 77). This book has been of great value many times in my career.
Managed C++ is an interesting twist on the intersection between the CLR environment and native code development. I’m not sure I’d use it in a real system as .NET programmers are likely to be more comfortable with C# or VB.NET but it is worth being aware of for the possible cases where this middle ground might simplify things. This looks like a revised edition of this book.
One of the first broad based texts on computer graphics that I read. A bit to generic to be useful for practical issues, but a nice overview of the topic. There is a third edition of this book.
This is one of my favorite ‘advanced topics’ books on C++ programming (along with its companion volume). I have run discussion groups based on this book at two previous workplaces with good results. An excellent place to go looking for ‘best practices’ items for C++ programming as well.
A decent overview of object oriented design techniques.
Object oriented design as described by Grady Booch. There is a third edition.
The ‘Box’ book that acted as the initial ‘primer’ on COM technology. Covers the basics of how COM works but the technology evolved far beyond the initial version described here.
There was a time when I became very interested in fonts, typefaces and the associated technology. This was one of the books that came highly recommended as a source of wisdom in the typographic world.
There are certainly many subtleties to properly designing and using typefaces that I took away from that dive into letter forms and the knowledge continues to serve me well.
The core volume of the ‘Comer’ books on IP. This one covers all of the internal protocol details (see volume two for implementation advice and code fragments). Anyone who wants to write networked code needs a book like this one (or just buy this book and be done). There is now a sixth edition.
It does lack significant IPv6 information (and I’ve got less knowledge at the moment on that front than I’d prefer…something that needs looking into soon). I tend to fall back to the RFCs (as they are the source documents for all of this) when I need the real details. Trying to come up to speed on something as complex as IPv6 through the standards documents would be challenging though…got to go and find a book soon.
The original ‘patterns’ book. I have used the patterns described here on a regular basis without really thinking about it. The real benefit of this volume (from my perspective) is to provide a shared vocabulary that allows engineers to talk about these patterns of activity in a concise and consistent manner. It has been quite some time since I last read through this one and I should probably revisit it soon.
Moving to a new job and a new development team is going to move communications back to front and center. The last few years I’ve been working with a team that I’ve known for quite a while and we haven’t been replacing attrition. Getting back to a more expansive environment will be good, but I’m looking at the things I need to knock some rust off of before I get there. Shouldn’t be a big issue, but I can’t ignore it.
One of the better early references on MFC that I bought. Clear and easy to work through.