My 16-year-old nephew visited me in the middle of August, and I learned something from him: apparently, nobody his age reads books any more. When he walked into my home office, he was aghast at the number of books that I have, wondering aloud if any one person could possibly read that many volumes. Granted, I have not read every book completely, but I know what is in each one and it stands (or sits on the shelf, as it is) as a ready reference.
It seems that he simply uses Google as his primary reference source for practically everything. Although I use Google extensively for reference when I just need to look up something. However, using online searches and even reading online articles to learn new information (this article notwithstanding) is not a winning strategy for me.
I recently acquired two new books--one about Visual Basic 2008, and the other about C# 3.0. Both of these are outstanding, and I'm judging them against several other books that I have covering each language.
"Visual Basic 2008 Programmers' Reference" (Rod Stephens, Wrox, ISBN 978-0-470-18262-8) is one of those big, fat, don't-drop-it-on-your-foot type of books. It covers most of the new features of Visual Basic 2008 and how VB2008 interacts with the .NET Framework 3.0/3.5. Unlike other books of its type, Stephens' book doesn't spend much time covering the introductory details to the language; he assumes that you already have some familiarity with Visual Basic.
Where the book excels is in its approach to introducing, describing, and showing how to use Visual Basic with new .NET features. I bought it primarily because I do most of my work in C# and wanted a solid reference that would help me understand what the VB equivalents are to C# code; I was pleasantly surprised to find that the book includes many discussions and examples that will help me with both VB and C#.
The other book, "C# In Depth" (Jon Skeet, Manning, ISBN 978-1933988368), is nowhere near as imposing; your foot is safe. The book was well reviewed and promised discussions on some of the new features, so I figured it would be a safe acquisition. Simply put, "C# In Depth" is perhaps the best computer book I’ve read. Skeet's approach fits the exact mental model of how I need things explained to me. He starts by describing and showing the problem that a particular technique is intended to solve rather than using the lamentably more common technique of throwing a lot of technology at you and assuming that you'll figure out where it fits. Better than that, he shows how C#, and by extension the .NET Framework, has evolved from the 1.0 version to the present 3.0/3.5 Frameworks.
His illustrative example in Chapter 1 is a masterful model of how to start with something the reader is familiar with and then steadily move the topic along to newer, far-less-familiar techniques. He points out how and why coding was done in the idioms of the Framework at each particular version (1.0, 2.0, 3.0/3.5), without ridiculing what was then the current and accepted practice. By the time I had finished seeing how he took a 1.0 solution forward to 3.0/3.5, I couldn't wait to revisit my old code to see where I could update it.
This book is not intended to help you learn C#; it is targeted towards C# programmers who have perhaps at least one solid year of development experience with the language. If you are proficient with C#, I recommend this book without reservation. It is the best ones I've found to help you get from one version of the Framework to another. It does not attempt to cover all of the new features--just the most important ones that you'll wish you could find good explanations for.
--Craig Pelkie (craig@web400.com) has worked as a programmer with IBM midrange computers for many years. He has also written and lectured extensively on AS/400 and System i technologies, including client/server programming, Client Access, Java, WebSphere, .NET applications for the System i, and web development.