on July 15, 2002
I'm the publisher of "C# in a Nutshell" and given my admitted interest in the success of this book I would not ordinarily post a comment in this space. However, a previous reviewer suggests that we should have stated more explicitly which .NET namespaces and types the book covers and explained
the rationale behind our decisions. He also faults us for omitting a number of important namespaces, including System.Web and System.Remoting.
If this view is widely shared, then clearly we need to add such information to the next edition. But since a revision lies somewhere in the future, for those of you considering purchase of "C# in a Nutshell" today, here are some answers.
First, the complete list of the 22 .NET Framework namespaces documented in the 450-page "C# in a Nutshell" API Quick Reference is a follows:
These namespaces comprise more than 700 types, and thousands of members, which are listed in a quick-lookup format that complements, we believe, the syntax used by the official Microsoft documentation.
O'Reilly customers who have purchased "Java in a Nutshell" or other Nutshell titles already know that the series aims to provide experienced professionals with usable quick references that are reasonably complete, but not exhaustive. In the case of C# (and Visual Basic .NET), our idea was to first match the coverage of the Java Standard Edition core classes found in our best-selling "Java in a Nutshell," and to then add additional namespaces that were core to programming the .NET platform itself.
The first criterion clearly required us to document the System namespace, as well as more specialized namespaces for threading, collections, reflection, diagnostics, and so on. The second led us to include serialization, COM interop, and the Microsoft.Win32 types needed to interact with the Windows
platform. In addition, because XML is so core to .NET, we included the most important XML namespaces as well.
We decided early to exclude the specialized .NET libraries for building Windows and web applications, web services, and data-access applications. We felt these libraries deserved volumes of their own: "Windows Forms in a Nutshell," "ASP.NET in a Nutshell," and "ADO.NET in a Nutshell."
We had a hard time deciding what to do about remoting, enterprise services, security and a number of other important .NET libraries. In the end, we decided these would be of interest mostly to enterprise application builders and should also be presented in a Nutshell of their own, much like "Java Enterprise in a Nutshell."
In the end, we hope our readers will appreciate "C# in a Nutshell" as a reference for C# programmers that also documents the core runtime .NET libraries most programers need to complete their basic tasks: manipulating strings,
performing mathematical operations, doing I/O, and so on. In this respect, the book resembles existing core volumes on C, C++, and Java, where one would expect coverage of the C standard library, STL or the Java 2 SDK, Standard Edition.
Thanks for the feedback -- we rely on our customers to tell us when we've missed the mark. We'd welcome additional feedback from Amazon.com readers about "C# in a Nutshell." And as the previous reviewer has suggested, we'll try to be clearer about our choices in the next edition.
(I'm giving the book 3 stars in an attempt to avoid unfairly influencing its rating.)
on June 11, 2003
This is an excellent reference designed to give you precise definitions and usage for the C++ language features and library according to the C++ Standard. Unless you are a novice, it will save you time. In the past, when I needed to lookup something, I used to gladly dive into the Stroustrup's "C++ Programming Language" or Josuttis's "The C++ Standard Library". While indispensable and authoritative, these volumes are *NOT* designed for easy reference work; reading them takes time, and what should have been a 30-second lookup inevitably turned into a 30-minute reading. The "C++ In A Nutshell" helps to solve this problem, in addition to putting all the relevant resources at your fingertips in one volume.
on November 13, 2003
Most of the "reference" books I've seen for C++ have been more advanced primers (lippman/lajoie, pratta, josuttis). This is the first book I've seen for someone who knows C++, has been using it for some time, and needs a library and language reference. A welcome addition to my desk, especially since I learned C++ in 1992 and sometimes still need a gentle push away from archaic usage.
The language reference is concise but appears complete, and I disagree with the reviewer who said it is poorly organized (the library reference is alphabetical by library, the language reference follows the same convention everyone else does: Basics,Declarations,Expressions,Statements,Functions,Classes,Templates,I/O,Containers). The library reference is very, very valuable, often providing usage and code snippets as well as syntax.
This won't replace all the books on your shelf (you do have Effective C++ and More Effective C++, right?) but it will be a well used reference if you are a professional software guy (or faking it).
on April 16, 2003
The Nutshell series published by the O'Reilly group has become so ubiquitous in the IT world that it needs very little introduction. As the preface of C# in a Nutshell states, the aim of the series is to become the desktop reference for whatever technology is covered by each book. In this case, O'Reilly aims to make this book the must-have reference for all C# programmers. This review will focus on the points that any good reference book should address, namely: brevity, completeness, correctness, and usefulness. Unfortunately, my own personal knowledge of C# is restricted to what was discussed in .NET Essentials (another O'Reilly publication), so I won't be able to be as critical of the correctness as I would like. My conclusions are thus based on short tests that I ran to check the validity of the claims made in the book.
C# in a Nutshell scores high marks in both the brevity and correctness categories. Humorous as it might be to label an 830-page book as brief, it actually qualifies as such. The main discussion of the language is kept to the first 270 pages, with an average of about 20 pages devoted to each subject. Only the essentials are discussed, and that will usually be enough when you need to quickly look up how to do something. The remaining 560 pages are devoted to a Quick Reference of the .NET framework classes. While reading the text, I never came across any glaring inconsistencies, such as conflicting descriptions of how to accomplish a task, which leads me to suspect that the text is mostly correct. The few actual tests I ran worked as expected. On a superficial level, I found the content credible.
When it came to completeness, I wasn't as impressed. As a reader, I have somewhat of a personal bias: I'm pretty familiar with both C++ and Java. I also suspect that this knowledge is shared by a large percentage of this book's audience. As a consequence, I found myself wishing that the advanced features particular to this language had been covered more thoroughly, and that the description of features shared by C++, Java, or both, had been trimmed down a bit. I found the sections on Custom Attributes, Serialization and Threading to be especially light, given that they are all core features of the C# language. I also found the two sections dealing with integration of legacy components (DLLs and COM) to be somewhat inadequate for professionals who actually need to deal with these issues. However, I do understand the balancing act that has to be done to keep this book brief. I would have wanted more emphasis on the unique features and considerations associated with this new language, and less on the basics. On the other hand, the authors should be commended for the range of topics they manage to touch on in such a small number of pages. Certain topics, such as Diagnostics and Command-line tools, are fully described and could easily have been forgotten.
My real beef with the completeness of this book is related to the 500+ page SDK Quick Reference. Let's start with the good: The descriptions of the classes and their uses are verbose, and useful. The Quick Reference is logically divided up according to the .NET package divisions, and each description includes a very good UML diagram showing you where each class fits into the grand scheme of things. Now the bad: Though the class interfaces are fully detailed, there is no description whatsoever of the actual method parameters, and how they will be used internally. From a programmer's perspective, this is extremely annoying. Here's an example of what I mean: The class System.Timers.Timer has a property called interval that can be set through the constructor, or through property accessors. Without a proper description, one might imagine that this property relates to the interval at which the Timer does what it does (in this case, throws an Event.) However, we have no idea what units the interval property is using. Do we specify the units in seconds? In milliseconds? In nanoseconds, even? We have no idea, and we can only figure it out by trying it ourselves. You can imagine how frustrating this would be for properties where the answer is not so easily discovered.
The second major issue I have with this book is the unadvertised omission of the System.Windows.Forms and System.Web namespaces in the Quick Reference. It seems as if these GUI-related namespaces have been saved for Programming C#, but I found their omission in this book to be questionable, at the very least. I wouldn't complain if the namespaces were at least described briefly in the Quick Reference, but they aren't even mentioned once. This choice renders the book practically useless on its own for anyone who wishes to add a visual interface to his or her program, which, unless you're writing server code, is nearly everyone. I think that if the goal of this book is for it to be the only desktop reference you'll need, then in this respect it has failed. Similar to the Java in a Nutshell / JFC in a Nutshell combo, you'll probably need both this book and Programming C# for a complete reference from O'Reilly.
All in all, it is hard not to recommend this book for anyone who plans to work with C#. Its description of the language basics is thorough, the advanced features are at least brought up and discussed, and the reference, for all its flaws, will be considered useful by most. In particular, I appreciated the UML diagrams included in the book, placing it one step ahead of the Microsoft documentation. However, the book is somewhat incomplete, and you will most likely want to get Programming C# (convenient, isn't it?) and keep that bookmark to Microsoft's online documentation, at least to look up what the function parameters actually do.
on October 20, 2003
O'Reilly has done it again. C++ in a Nutshell is a great reference. The first 275 pages are a technical introduction to the language. The next 50 pages provide a preprocessor and language reference. The final 400 pages provide a reference to the library. Those last 400 pages are the real gem. Sections are organized by header file (e.g. <sstream>). A full prototype of each major class is provided and each function is explained individually. Also, the index is complete, so it's easy to find information on a class or function you're looking for. Descriptions are complete, but concise---all the information you need and not a char more.
This book isn't for beginners, but if you've had experience with C or C++ and are looking for a complete, well-organized reference to C++, this is the book to get.
on March 19, 2006
I always like O'Reilly books and are usually what I purchase. The "In A Nutshell" may be misleading to some. Just think of it as "C++ A Language & Library Reference." If you are a beginner looking for a how to, this isn't the one for you. "Thinking in C++" by Bruce Eckel (great book), or "Practical C++ Programming" would be the one a beginner would want. However, when you are ready to explore the inter-details about what C++ classes provides, this would be a good one to add to your collection. The first half describes C++ in general, while the last half details the language reference. I like how the reference is structured, grouped by the easy to find header declaration at the bottom of the page. Quickly finding what you need is a great feature here. You can only do so much "std::cout << "hi" << std::endl; without a reference and this one covers the missing details. Not for beginners, but an excellent reference.
on July 9, 2010
If you have used the extraodinarily good "C# in a Nutshell" and are hoping to find a simllar book for C++ you will be disappointed.
This book is useful as a reference for people who have had it explained to them and need a reminder. Every time I have tried to look up a definition for the
first time in this book I have been bamboozled, because the definitions are too succinct, I wasnt quite sure what they meant. But when I had read an explanation
elsewhere and came back to this book for a reminder, I found it useful.
You could argue that the fault is that the C++ language is so complicated it's quite a challenge summarising it into the available space.
However some negative reviews have pointed out that there are a few gaps, indicating that it could do with a more polished new edition.
Still, it's a very useful book, and I cant think of anything that can replace it.
on September 16, 2002
As usual, O'Reilly delivered an excellent "in a nutshell" book for a C# programmer. Many complain that some of the namespace were left out, like ADO.NET ones. All I have to say is that only the major things were covered and that is the most exciting thing about the book itself - it doesn't carry any unneccessary information at all.
20% of the book covers the C# features, includin data handling, data types, inheritance, delegates etc. Another 20% tell us about some advanced C# tecniques. The rest of the book is completely devoted to the classes that belong to the major namespaces.
It's a comprehensive on-hand guide to every C# programmer out there! (Another O'Reilly book - "Programming C#" by Jessy Libery would be useful as well.)
When I need to learn a language, the last thing I want is a book that tries to teach it to me. Their teaching jut gets in the way of my learning.
This book serves my needs ideally. It is a reference, not a tutorial. It covers the whole language and most or all of the standard API, in a book of modest length. Of course, that sacrifices detail. Fine. When I need information, I'll look here to find out what system facility does my job, then use the system help for details. This book really is the index that the help system lacks.
This goes on the shelf next to Flanagan's "Java in a Nutshell." I have no higher praise for a language book.
on December 20, 2002
If you have picked this book to learn C# because you don't have much time, most likely you will find that it's a hard nut to crack. In my view, it's a handy reference book for intermediate C# progrmmers who want to review key features of the C# language, essential programming concepts using the NET framework classes and the details of any of the 700 .NET Framework Classes in 21 important namespaces without using MSDN online libaray. If you often find yourself printing topics from Visual Studio NET Online Help and read them on weekends, then this book is for you.
Section I (chapter 1- 4) summarizes key concepts of the C# language, illustrated with succinct code.
Section II (Chapter 5 to 19) covers programming using the Framework Class Library, such as String, Collections, Streams and I/O, Serialization, Assemblies, Reflection, Custom Attributes, Garbage Collection, Threading and Interop.
I felt that each topic discussion is a little too brief and many important topics mentioned in the overview section of the book are not discussed at all, such as graphics, data access with ADO.NET, Remoting, Window Forms, Web Application, globalization, Configuration.
In section III, some useful .NET Framework SDK tools are covered, which is very helpful.
The last section is detailed listing of the most important core types/classes of the .NET framework. I like the UML diagrams illustrating class hierarchy and relationships.
Personally I would like to see some code samples under important types.
The book is 832 pages thick, I hope the future edition will add the missing topics mentioned above and more code, making it a 1,000 page reference book. -- Reviewed by Timothy D.