Top critical review
6 people found this helpful
For Dummies with a background in programming.
on 2 January 2013
The reviewer is a 60 year old Electronics Engineer experienced in programming embedded PIC devices in ASSEMBLER using MPLAB all the way back to the 6502 and even hand assembling code in the days of the OHIO Superboard II.
I design PCB's with PROTEL99SE and write embedded PIC systems using MPLAB.
Sadly, as with most authors, the temptation is to demonstrate your skills in juggling by throwing in the odd chainsaw.
This book is certainly not for Dummies or for C# virgins.
Being far from a Dummy in the field, I find C# from a standing start extremely hard going, in the MOST part due to the lack of an explanation of the core basics in English (not American who speak a different version.
The code examples certainly work and, if ALL you want to do is type these in and run them, that's fine BUT where this and in fairness, many programming publications lets themselves AND the readers down is that there is no guidance on how or why code is structured the way it is OTHER than the typical rattling out of some analogy about Namespaces and Classes leaving the actual Dummy or even an intellectual one asking "What does that mean "?
The space between the curly brackets after NameSpace and before the first class (containing the MAIN() function) is actually rather important and nowhere does this book explain why.
THIS is where you put your definitions IF you want them to be visible anywhere in your code. Though I would call these "Global variables", the C# die-hards insist there is no such concept in C#; nor is there a "GOTO" in C or C# (actually, there is)
IF you like the concept that a newly baked cake from the kitchen can revert back to a pile of uncooked ingredients once you move the cake to the dining room, then you will love C#. A NEW instance of the cake being the basic ingredients NOT the cake you have baked.
Your cake must be defined as a STATIC cake so you CAN move it from room to room without it reverting back to the packets of ingredients and defined in the right place (see above) because your Static cake may not exist in the upstairs bedroom if you 'create the instance' in the wrong place.
It's all in the Syntax which can be unhelpful in this instance (A joke.. get it ?).
Sadly fellow readers, when you try to get into C# you must accept the cliquishness that suffuse most high level programmers and their publications.
It is as if the authors have forgotten that they themselves had to learn from scratch which is why you don't see books called "How to ride a bike". Where do you start ?
BUY this book by all means.
You will learn a lot BUT for each new fact you learn there will be 2 or more questions unanswered. Trust me on this one.
What finally did it for me in this book was the index entry for the "ref" keyword as in...
ftdiStatus = myFTDi.PinStatus(ref pinValue);
... when you turn to the relevant page you read ...
"You don't use the REF keyword when passing a reference-type object".
... And that's your lot on that subject.
You will need more than one book on C# to fill in the gaps as you need simple code examples and more than one to explain some concepts.
The book does, annoyingly, TRY to set you up for a learning pulse by saying, say,
DateTime dateTime = new DateTime;
Which is unhelpful because, you need to KNOW that the line reads as...
The TYPE "DateTime" is to be assigned to OUR name which we are UNHELPFULLY calling 'dateTime' using the existing CLASS of DateTime which we are using to create the NEW instance of our dateTime with all the characteristics of the class 'DateTime"... which of course,is grammatically correct in C# but reads like rubbish in English words IF you don't get the syntax and context.
Confused ?... well, you should be. The author INSISTS on doing this throughout the book and DateTime is the WORST example to use because DateTime is a CLASS and a TYPE, yes, it's a desert topping and a floor wax at the same time.
Also, note the much misused reliance on the reader(YOU) spotting that DateTime and dateTime are DIFFERENT entities. (note D and d)
DateTime fred = new DateTime; tells you something the earlier example doesn't; the bit which is MINE to define and play with.
A DUMMY needs to learn the core syntax of C# and this book lacks the language to express these concepts to people who may very well be experienced programmers from another field... or dummies in fact.
When you read a review that says... "I was an illiterate drunk with no education and a low IQ until I bought this book, Now I work for NASA and write code to detect and destroy Near Earth Objects all thanks to this book" ... you can pretty much ignore it.
I have C# for Dummies 2012 on order from Amazon as well as "Beginning Microsoft Visual C# 2008 (Wrox Beginning Guides)".
It does get easier and you need to put in more effort than turning the pages.