Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Head First C#

samzenpus posted more than 6 years ago | from the read-all-about-it dept.

Programming 243

Michael J. Ross writes "For computer programmers who do not have a solid understanding of object-oriented programming (OOP), learning the C# programming language can be rather challenging, even if they have experience with C or C++, which at least would give them a head start over non-C programmers. Any developer in this situation may well want to begin the learning process with a book that aims to teach both OOP and C# in as gentle a manner as possible, with plenty of patient explanations and illustrative diagrams — such as those found in the book Head First C# by Andrew Stellman and Jennifer Greene." Read below for the rest of Michael's review.Published by O'Reilly Media on 26 November 2007, under the ISBNs 0596514824 and 978-0596514822, Head First C# is one in a series of "Brain-Friendly Guides." The introduction to this particular book discusses how the series attempts to present the concepts and technical material in a way that is far more intellectually compelling and memorable than the approach currently taken by most books. Some of their guiding principles include: making things visual, oftentimes using novel and even outlandish diagrams; using a casual and conversational style; engaging the reader through exercises and questions; and spicing up the discussions with humor.

On the book's Web page, readers will find links to download the book's sample code, participate in a forum dedicated to the book, register their copy of the book, read and submit any errata (of which there are many), and submit a reader review and read those of other readers.

The book's material is organized into 15 chapters, covering the topics in a progressive order that would probably be most helpful for the inexperienced developer: the advantages to programming visual applications in C# and the Microsoft Visual Studio integrated development environment (IDE); building a simple application to get started; the C# code produced by Visual Studio; basic C# language constructs; an introduction to objects and their components; data types, including arrays and references, and how C# allows you to work with them; protecting an object's data from unintended access, through encapsulation; extending classes through inheritance and subclasses; finding and using class interfaces, and the advantages of doing so; storing data in arrays, lists, and dictionaries; saving data in files and directories, as well as working with file streams and serialization; exceptions and debugging techniques; event handling; how to build complex applications; creating user interfaces with controls and graphics; object destruction and garbage collection; and connecting your C# programs to databases using LINQ. Interspersed throughout the book are three C# labs, which encourage the reader to put into practice their new programming skills, and thus better internalize the ideas of OOP and C# covered in the chapters preceding each lab. The lab applications comprise a racetrack simulator, a simple adventure game, and a re-creation of Space Invaders.

When they see this book for the first time, some prospective readers may be overwhelmed by its size, clocking in at 778 pages. Yet a sizable portion of those pages will read faster than those of the typical programming book, largely due to all of the diagrams and whitespace, which really help to break up the material and make it more digestible. However, what many might perceive to be a strength of the book, could be seen as a weakness by others. In fact, if the unnecessary diagrams and redundant material were to be removed from the book, it might end up only half its current size. But this may only be a deterrent for people who are carrying this book around, or who tend to be impatient and wish to get right to the point of any book they are reading, or who may be upset by the extra trees chopped down to double the number of pages (the book does not appear to have been printed on recycled paper).

Despite Head First C# being clearly intended as an introductory book to object-oriented programming in general, and C# in particular, the target audience especially may be frustrated by all of the errata and other sources of confusion that they will encounter. This is especially true when readers are doing their best to implement all of the sample applications, and struggling when, for instance, the code does not match the figure provided, or even the code on another page. For example, on page 50, the authors instruct the reader to drag a new PictureBox onto a new form, but readers will probably struggle to figure out where to drag it from. On page 105, the authors instruct the reader to flip back and look through the code, to fill in some class diagrams, but they don't clarify what code should be considered. Readers' comments on the online bookseller sites, list far more similar problems. In fact, that there are so many technical errors in this book is quite remarkable given that the technical review team comprised no fewer than 14 individuals! How could so many eyeballs miss so much?

The authors make a real point of reviewing material explained earlier, which generally is an effective approach for this type of book. But the repetition sometimes becomes excessive — enough to annoy even the greenest novice. For example, on page 445, we find the question: "Okay, I still don't get it. Sorry. Why are there so many different kinds of exceptions, again?"

On the other hand, the book has some real strengths, including those mentioned above for making the material more approachable. In particular, when the reader becomes accustomed to the visual style of presenting concepts, he or she will probably find it a faster approach to learning the ideas. Admittedly, veteran developers may still prefer the more narrative style of conventional programming books — especially when they encounter rather convoluted diagrams, such as that on page 292. Yet the illustrations are particularly potent for explaining interfaces, as done in Chapter 7.

Although the book will be of most value to newer programmers, experienced C# programmers will find topics of interest and perhaps even some language details and analysis that they have never previously encountered. For instance, some of the questions posed in the sections titled "there are no Dumb Questions," could be valuable — such as the comparison of File versus FileInfo, and when to use one over the other. Also, some of the utilities could help the reader for future development, such as the hex dumper program on page 432.

Sadly, Head First C# is weighed down by excessive redundancy and an errata-to-number-of-technical-reviewers ratio possibly unequaled by any other programming book. Yet, for any programmer new to object orientation and C#, this introductory book should prove an extremely comprehensible and reader-friendly resource.

Michael J. Ross is a Web developer, writer, and freelance editor. Contributor Greg Hanson is a C# programmer in Fort Collins, Colorado.

You can purchase Head First C# from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

cancel ×

243 comments

Sorry! There are no comments related to the filter you selected.

C# isn't a language... (0, Flamebait)

QwkHyenA (207573) | more than 6 years ago | (#24086999)

It's M$ goo. It's a "we lost our J++ lawsuit so we gonna rewrap our crap" thingy..

Re:C# isn't a language... (0, Flamebait)

j-pimp (177072) | more than 6 years ago | (#24087213)

It's M$ goo. It's a "we lost our J++ lawsuit so we gonna rewrap our crap" thingy..

Except it came out better this time.

Re:C# isn't a language... (3, Insightful)

Dogtanian (588974) | more than 6 years ago | (#24088311)

It's M$ goo. It's a "we lost our J++ lawsuit so we gonna rewrap our crap" thingy..

Except it came out better this time.

Flamebait? One could argue not. Admittedly my experience with C# is very limited, but the first time I used it about five years ago, it struck me as as blatant a copy of Java someone could make without getting sued... but without the baggage and with a few nice improvements.

MS don't deserve *too* much credit for this, since (unlike Sun) they were able to benefit from five or six years of someone else's experience when creating their language, but with the ability to start with a clean slate and no backwards-compatibility baggage.

(Java inevitably accumulated a fair number of dead ends and improved reinventions of the same functionality over the years.)

Re:C# isn't a language... (4, Insightful)

AppleOSuX (1080499) | more than 6 years ago | (#24088663)

So? Linux is a blatant copy of some other *nix.

Open Source software factories are constantly churning out copies of commercial software.

What's your point?

Re:C# isn't a language... (1)

QwkHyenA (207573) | more than 6 years ago | (#24088801)

Exactly. What he said. I also respect no language that does away with pointers. Heck, I don't really like C++ too much either. Polymorphism, Encapsulation, inheritance and abstraction scare me. Give me a Struct or a Union any day. Of course don't take my ramblings as gospel as I also cut my grass at home w/ a chainsaw.

Re:C# isn't a language... (0, Funny)

Anonymous Coward | more than 6 years ago | (#24087217)

Does the fact that you sound just like twitter not scare you to the depths of your soul? It should...

Re:C# isn't a language... (1, Funny)

Anonymous Coward | more than 6 years ago | (#24087559)

Mate. That probably is Twitter.

Re:C# isn't a language... (-1, Flamebait)

RightSaidFred99 (874576) | more than 6 years ago | (#24087343)

Really? Please, can you pontificate on something else you know absolutely nothing about? I'm really dying to get your opinion on Zimbabweyan culture or the physics of tea clumping. Is there any subject you know nothing about you're unwilling to address, so I know to stay away from them?

Re:C# isn't a language... (0)

Anonymous Coward | more than 6 years ago | (#24087701)

I would like to pontificate on the fact that the correct spelling is Zimbabwean..

Re:C# isn't a language... (2, Insightful)

dedazo (737510) | more than 6 years ago | (#24087787)

Please, elaborate as to how C# is "goo". What exactly do you mean? In the sense that you don't think the language is designed correctly? The runtime doesn't do it for you? The compiler? The type system? The platform itself?

Because "teh M$ goo" is not exactly enlightening, other than in the "I hate Microsoft" sense, which is your prerogative of course, but has nothing to do with the technical merits of their products. Especially when you

we lost our J++ lawsuit

base your opinions on incorrect premises, since J++ (and J#) have nothing to do with the Sun complaints that brought the antitrust trial, which is what I assume you are referring to here.

Someone actually modded you up, which means that someone out there assumes you were not merely trolling (which is what it looks like to me, frankly). So a more detailed explanation of your claims would be double plus good.

SECOND! (-1, Offtopic)

Anonymous Coward | more than 6 years ago | (#24087007)

There is also a second post after the first!

Head first, see sharp (5, Funny)

Anonymous Coward | more than 6 years ago | (#24087009)

Ouch, my eyeball!

Re:Head first, see sharp (0)

Anonymous Coward | more than 6 years ago | (#24087503)

Sure, C#'s all fun and games, until somebody loses an eye!

And what's the sequel to "Head First C#?" "Picking Safety Glass Out of My Scalp for Two Frigging Years C#?"

C# is fine, (5, Funny)

pitchpipe (708843) | more than 6 years ago | (#24087013)

and C and C++ are all good languages, but I like C@!&$. It's the $h!7.

Re:C# is fine, (5, Funny)

CastrTroy (595695) | more than 6 years ago | (#24087181)

Personally, I prefer C!@|!$. You should try it. Check you spam box for places to get it.

Re:C# is fine, (3, Funny)

Anonymous Coward | more than 6 years ago | (#24087659)

I like Cb better.

Re:C# is fine, (2, Funny)

Critical Facilities (850111) | more than 6 years ago | (#24088847)

True, Cb is good, but D minor is the best, as we all know it is the saddest of all keys.

Re:C# is fine, (2, Funny)

iapetus (24050) | more than 6 years ago | (#24089207)

No, that would be Sneaky Pete's Key.

Poor Sneaky Pete. <sniff>

Head First seems too limited (4, Informative)

CRCulver (715279) | more than 6 years ago | (#24087023)

Granted, in this case I don't know the language C#, but in general I never really understood the Head First series, unless you really like printed introductions to languages. It would just make more sense to use free Internet resources to take your first steps in C#, and then get O'Reilly's e.g. C# 3.0 in a Nutshell [amazon.com] as a good desk reference. Tech books are expensive, so it just doesn't make sense to invest in a primer that, after you finish with it, is a paperweight.

Re:Head First seems too limited (2, Interesting)

azadder (1118711) | more than 6 years ago | (#24087249)

I never really understood the Head First series

I definitely agree. My first encounter with this series was while looking for a nice C# primer at a local B&N's. I browsed through some of the Head First series and found it difficult to read/follow. I am sure these types of books are for someone, but they definitely did not give me as straightforward approach as I would have wanted.

Re:Head First seems too limited (1)

kestasjk (933987) | more than 6 years ago | (#24087393)

If you don't know C# you might not know that C# in a nutshell is also rather limiting. on C# is much more .NET oriented, and much longer and more thorough for only slightly more money. [amazon.com]

Re:Head First seems too limited (2, Interesting)

kestasjk (933987) | more than 6 years ago | (#24087409)

Apress' take on C# is much more .NET oriented, and much longer and more thorough for only slightly more money..

How did I not notice that?

Re:Head First seems too limited (1)

MiniMike (234881) | more than 6 years ago | (#24087579)

How did I not notice that?

HTML in a nutshell?

Re:Head First seems too limited (3, Insightful)

jonaskoelker (922170) | more than 6 years ago | (#24087571)

it just doesn't make sense to invest in a primer that, after you finish with it, is a paperweight.

Except for K&RC2, which you can read for pure entertainment :)

Are you kidding me? (0, Flamebait)

WED Fan (911325) | more than 6 years ago | (#24087887)

Granted, in this case I don't know the language C#, but in general I never really understood the Head First series...

OMG, or, OMFG, Are you actually commenting on the book, or the review, or the publisher and not slamming C#? I am outraged. OUTRAGED! O U T R A G E D!

Sir, this is /.! Kindly start slamming C#, .NET, MS, Bill Gates, Bill and/or Melinda Gates, The Bill and Meliinda Gates Foundation, Ballmer, monkeys, chairs. But, sir, do not post on the book that was reviewed in the above article.

Re:Head First seems too limited (2)

Tablizer (95088) | more than 6 years ago | (#24088093)

It would just make more sense to use free Internet resources to take your first steps in C#, and then get O'Reilly's e.g. C# 3.0 in a Nutshell as a good desk reference. Tech books are expensive, so it just doesn't make sense to invest in a primer that, after you finish with it, is a paperweight.

For raw learning, I still find paper easier on the eyes. Plus, its easier to put notes in the margins and read it while waiting for a doctor appt. or the like. E-books and web-pages are better for references, though.
             

Re:Head First seems too limited (2, Insightful)

thetoadwarrior (1268702) | more than 6 years ago | (#24088911)

Because the head first books ease you into the language and are literally for beginners. Imo, there is a difference between learning OO programming with no experience and moving from from OO language to another and people with no experience need more hand holding usually.

One argument people have against the Head first series is how many pictures and other supposedly pointless material is in the books but it's all about repetition and makes it a bit more fun to read which is what most newbies will want rather than something that feels a bit more dry and is like reading a tech manual. So even if it doesn't have as much info, if it keeps you hooked, then it gives you a good start.

Re:Head First seems too limited (2, Insightful)

dmiller1984 (705720) | more than 6 years ago | (#24089109)

Granted, in this case I don't know the language C#, but in general I never really understood the Head First series, unless you really like printed introductions to languages. It would just make more sense to use free Internet resources to take your first steps in C#, and then get O'Reilly's e.g. C# 3.0 in a Nutshell [amazon.com] as a good desk reference. Tech books are expensive, so it just doesn't make sense to invest in a primer that, after you finish with it, is a paperweight.

You're reading it from the perspective of someone who already has a good knowledge of programming in general, though. While I haven't read the Head First C# book I do have their Ajax book, and while I do not find it to be a good general reference it is great for my high school students to read. They have far less experience programming than I do and they pick up on these easier from the Head First book than they do from most.

Redundent -- read selectively. (3, Interesting)

nathan.fulton (1160807) | more than 6 years ago | (#24087063)

This book happens to be in our club's collection. Someone gave it to us, I think I found it redundant, and times. but then, most language-centered programming books are, to a certain extent. The first person in our group who read it went through and hi-lighted the page numbers with redundant material on them in blue, and hi-lighted the important pages in yellow. We were able to learn the language's syntax and nuances without reading through long-winded explanations about core concepts in OO or reviews of concepts just covered that way. Generally, I've always found the "language bible" books more helpful than these types of books. Does anyone share my sentiment?

Re:Redundent -- read selectively. (4, Informative)

kalirion (728907) | more than 6 years ago | (#24087119)

Did you read the intro? I have a couple Head First books (preps for Sun's EJB and Servlet exams) and I believe in the intro it states that the book uses repetition of important concepts to make them "sink in".

Re:Redundent -- read selectively. (3, Insightful)

moranar (632206) | more than 6 years ago | (#24087545)

They also state "If you are looking for a reference manual, this isn't for you". So criticizing the series for not being good reference manuals is a bit rich.

That without even touching the fact that, as you mention, they explicitly say they'll be redundant to teach the subjects better.

Re:Redundent -- read selectively. (4, Funny)

hansamurai (907719) | more than 6 years ago | (#24087583)

I've always found repetition to be a great way to learn and study. Repeating things over and over again often burns it into my mind. If Head First wants to use repetition then more power to them, as I've always found repetition to be a great way to learn and study.

Re:Redundent -- read selectively. (0)

Anonymous Coward | more than 6 years ago | (#24087669)

Parent should be modded +"a touch" funny for the repetition gag.

Re:Redundent -- read selectively. (5, Interesting)

Shados (741919) | more than 6 years ago | (#24087135)

I agree, but at the same time, you have to be careful. Different languages have different takes at things someone may think as "obvious". A while ago I went to an interview for a .NET dev job, and the people interviewing me were very obviously all former C++ programmers recycled in C#. One of the questions they asked me was: "How do you do multiple inheritance in C#".

My answer was the obvious: "There isn't any, you can only inherit from one class". They started arguing with me about how it WAS possible, and actually common, to do multiple inheritance in C#. After a bit of discussion, I realised that they were still thinking in C++ term, where an interface is nothing more than a fully abstract class, so even if you only use "interfaces", you ARE doing multiple inheritance (while in C#, there are -core- differences between a fully abstract class and an interface). They had skipped that part of the book thinking they didn't need it :)

Re:Redundent -- read selectively. (1)

hitmark (640295) | more than 6 years ago | (#24087873)

stuff like this is whats keeping me for fully wrapping my head around programming...

These were C++ programmers... (1)

Unoriginal_Nickname (1248894) | more than 6 years ago | (#24088921)

...and I guess someone who uses a wood chisel to open a paint can is a handyman. The differences between C++ polymorphism and C# interfaces are extreme and I find it baffling that someone who could claim even a passing familiarity with both languages could genuinely confuse the two.

Great Series (3, Interesting)

Flyin Fungi (888671) | more than 6 years ago | (#24087073)

I always loved this series of books. My professor recommended this book to me and it has helped me understand the language much better then any other book. It's interesting, funny, and insightful! A very different take on presenting material then other programing books. As a college student I have a hard time reading through dull school text books. Sometimes I don't even have to open or own a text book in order to get through the class. Although you don't need to buy a book anymore to learn a language with the huge resources the internet has to offer.

Head First makes some great beginner books. (2, Informative)

dealmaster00 (904299) | more than 6 years ago | (#24087083)

A few years ago, when I was relatively new to programming, I read Head First Java and that really helped me understand the Java language and OOP in Java. Even if you aren't a beginner, the Head First books are still pretty decent, but make sure you have patience because most of the explanations/examples are "dumbed down" for the beginner. Also the harder stuff tends to be at the end of the book, so you can hold out for that.

Head First Series = Kick Ass (0)

Anonymous Coward | more than 6 years ago | (#24087085)

I can vouch for this series, it totally rox. In fact, I don't know why more books don't focus on OOAD basics when teaching a language. If they did, then maybe I would know more "Senior Engineers" who have matured enough to stop focusing on code reuse and start focusing on design reuse.

Inheritance is so easy to misuse, more people should know that!

Re:Head First Series = Kick Ass (2)

WorldInChaos (1250700) | more than 6 years ago | (#24087231)

I have read the OOP book in this series and I learned lots from it. I had done PHP in a very non-OOP way, so seeing this book, visually, and having many examples that I could relate to really helped me learn fast. It was easy to understand and easy to read. It was repetitive, but that was helpful for me. It also showed different methods/scenarios for using the same principle, helpful if you don't understand why/how a certain thing works - as seeing it from different angles can help understanding. The HeadFirst series is easy to read, yet can teach "advanced" concepts with relative ease. It was a great help for me learning OOP, and I will most likely but this C# book. It is sad to hear about all the errata, but the idea/message will get through. I was bummed I wanted to comment, because I also wanted to mod the parent up, oh well...now you all can enjoy my 10 cents.

I am reading this now (1, Interesting)

Anonymous Coward | more than 6 years ago | (#24087099)

As an experienced programmer looking for a friendly intro to C#, I have enjoyed it, but I would have to concur that O'Reilly's C# in a Nutshell will be my day in day out reference. But, I am glad that O'Reilly is coming out with these user friendly references that make new concepts/languages more entertaining and fun. Head First Design Patterns is another one that some may fine easier to handle than the traditional Gang of Four book.

easy way to fill a book (4, Insightful)

Bill Dog (726542) | more than 6 years ago | (#24087127)

Yet, for any programmer new to object orientation...

How many can there be left these days?!? It's too easy to accumulate enough material for a good-sized book by starting from scratch and assuming the reader only knows how to read. Anyone could write a beginner's book on a computer language, without knowing the language too in depth, by just padding it with lots of remedial review material, that 99% of the readers don't need and don't want (to wade thru or pay for).

Re:easy way to fill a book (4, Insightful)

east coast (590680) | more than 6 years ago | (#24087419)

How many can there be left these days?!?

I'm sure more roll off the old assembly line everyday. Just because you and your peers are seasoned vets...

Also, this book came out at a real great time. With MS finally opening up to the hobbyist/novice programmer with their Express edition of their tools there is going to be a lot of n00bs out there.

Sadly, it seems that too many here can't recall when they were still struggling with the concepts of OOP to see that there is a real audience for this level of writing.

Re:easy way to fill a book (1)

CastrTroy (595695) | more than 6 years ago | (#24087489)

Wouldn't the n00bs already be familiar with object oriented techniques since every language they have ever used had OO as a major feature. I would much more expect that seasoned veterans would be more likely to not be familiar with OO concepts, especially if they are experienced in Assembly, C, or PHP (yes I know PHP supports OO, but it's not really necessary to understand). Either way, I would rather have people learn object oriented concepts from a book about OO design, then to learn about it in the context of learning about a specific language.

Re:easy way to fill a book (2)

east coast (590680) | more than 6 years ago | (#24088059)

Wouldn't the n00bs already be familiar with object oriented techniques since every language they have ever used had OO as a major feature.

What do you mean by "every language they have ever used"? These are n00bs. You know, they guys who want to give something beyond VBA in Access a go? I mean real n00bs, not people who started coding in 1993. It's a bit late in the day to automatically put guys who started by learning Java in the n00b category anymore.

Either way, I would rather have people learn object oriented concepts from a book about OO design, then to learn about it in the context of learning about a specific language.

I won't disagree but I won't agree either. Especially for the hobbyist. I can see where different people are going to have luck with different learning techniques and it really doesn't bother me since little of this code will ever get out to the public-at-large and much less (if any) of it will be used in real productive environments.

There's certainly nothing wrong with learning and writing a little code instead of playing WoW or going on the nightly pr0n hunt.

Re:easy way to fill a book (1)

expatriot (903070) | more than 6 years ago | (#24089253)

I do some VBA programming, for automating something in Word or Visio, and while the language has many faults, even there you are exposed to objects. In Visio for example, there are properties and methods. No comparison to C++ of course but even so there is exposure to objects even in VBA.

Re:easy way to fill a book (1)

chromatic (9471) | more than 6 years ago | (#24088331)

Wouldn't the n00bs already be familiar with object oriented techniques since every language they have ever used had OO as a major feature.

Which OO languages have people who have never programmed before used?

Re:easy way to fill a book (2, Insightful)

Mongoose Disciple (722373) | more than 6 years ago | (#24088349)

Wouldn't the n00bs already be familiar with object oriented techniques since every language they have ever used had OO as a major feature.

Well, not necessarily. As a consultant who's done a fair bit of maintenance coding on projects that I didn't do any of the original development or design for, I can tell you that a surprising number of people use a perfectly good object oriented language to write programs that have only one object or method. (Or similarly technically use an OO language to write code that would hurt even people who wouldn't consider themselves to be OO purists.)

Re:easy way to fill a book (3, Informative)

plasticsquirrel (637166) | more than 6 years ago | (#24087469)

Yet, for any programmer new to object orientation...

How many can there be left these days?!? It's too easy to accumulate enough material for a good-sized book by starting from scratch and assuming the reader only knows how to read. Anyone could write a beginner's book on a computer language, without knowing the language too in depth, by just padding it with lots of remedial review material, that 99% of the readers don't need and don't want (to wade thru or pay for).

From what I have seen, there are many programmers who do not use OO languages. But what is disturbing is the number of programmers who do use OOP to some extent, but don't use it without even understanding its basic concepts.

Dijkstra used to say that BASIC mutilated programmers' minds. But today, I think that C++ and VB have taken that role.

Re:easy way to fill a book (2, Interesting)

east coast (590680) | more than 6 years ago | (#24088177)

Dijkstra used to say that BASIC mutilated programmers' minds. But today, I think that C++ and VB have taken that role.

I would agree with this but only with a bit of qualification. I think that old BASIC programmers still teaching novice programmers OOPLs have done a great deal of damage by bringing their old design concepts into a very different arena of coding. Once you have more and more of the 20+ year OOP coders out there teaching the masses and give those students time to mature will we know if things are getting better. There's an unavoidable and unfortunate gap between when the basis of coding are set in the novice coders mind and the time when we really get to see how well it has manifested itself in the practice of a matured programmer.

Re:easy way to fill a book (2, Interesting)

alan_dershowitz (586542) | more than 6 years ago | (#24087473)

I work with people who don't even proceduralize their code. I've got a report with a 500-line SQL statement in it.

Re:easy way to fill a book (2, Insightful)

Colin Smith (2679) | more than 6 years ago | (#24087651)

Yet, for any programmer new to object orientation...

How many can there be left these days?

Almost all of them...

 

If you don't know OOP by now... (0)

Anonymous Coward | more than 6 years ago | (#24087133)

...then chances are that was a deliberate decision. Good choice. OOP is the straitjacket that restrains new programmers from doing anything right.

Before you mark me troll, keep in mind that Linus Torvalds agrees with me. See here: http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918

Re:If you don't know OOP by now... (4, Insightful)

EastCoastSurfer (310758) | more than 6 years ago | (#24087395)

In that post Linus seems to rail more against C++ and not OOP in general. Good design is good design regardless of a language. You can do OO like design in C or even ASM if you follow some rules.

OO is not a panacea, and just because some is OO doesn't make it a better design than non-OO. Each problem is unique.

Re:If you don't know OOP by now... (0)

Anonymous Coward | more than 6 years ago | (#24087417)

Appeal to "authority".

Linus Torvalds is a talentless hack. Just because he created something that's popular, that doesn't mean he actually knows what the hell he's doing.

Re:If you don't know OOP by now... (1)

alan_dershowitz (586542) | more than 6 years ago | (#24087513)

Torvalds was trashing C++ not OOP (though he has trashed OOP before too.) I'm an OOP programmer and I agree with everything he says. C++ is a shit language, but that's not an indictment of OO. C++'s OO is horrible.

Re:If you don't know OOP by now... (0)

Anonymous Coward | more than 6 years ago | (#24088245)

I believe that you agree with linus and not the other way around.

Review (0)

Anonymous Coward | more than 6 years ago | (#24087193)

Why are books reviewed here like a year later than they where published?

Re:Review (1)

east coast (590680) | more than 6 years ago | (#24087295)

Slow readers? It's just a guess.

Re:Review (1)

Westley (99238) | more than 6 years ago | (#24087507)

Well, for a start that's clearly not true in this case - HFC# came out in November 2007. 8 months isn't a year.

However, if you want a review of a more recent book, Jim Holmes has submitted one for my own C# book (C# in Depth) which came out just a few months ago. It's in Firehose right now. Whether it makes it to the front page is a different matter, of course.

Doesn't take much intelligence to program in C++ (0)

Anonymous Coward | more than 6 years ago | (#24087239)

And only negligibly less to program in C#. One wonders why the author believes learning C# would be so difficult for C++ programmers--unless he refers to the additional, unnecessary cognitive load that Micro$oft adds to whatever they excrete.

Re:Doesn't take much intelligence to program in C+ (1, Insightful)

Anonymous Coward | more than 6 years ago | (#24087567)

It's because C++ breaks programmers minds so badly in such a way that they feel like they have to overcomplicate everything using stupid template tricks and stupid pointer tricks.

C++ programmers who move to C# often fail to comprehend how overcomplicated they tend to make things.

Challenging? (4, Insightful)

PPH (736903) | more than 6 years ago | (#24087245)

Why must a well designed language be challenging?

I came at Java with some C plus some experience with a (proprietary) object oriented AI system. Java was trivially easy to pick up.

Re:Challenging? (1)

RightSaidFred99 (874576) | more than 6 years ago | (#24087309)

That begs the question. C# isn't really challenging to pick up. It's on par with Java, though since it's inherently a more modern and full featured language (fact, not opinion) it is somewhat more complex to learn. If it takes you a week to pick up Java, it might take you 1.5 weeks to pick up C#. You'll more than make up that week due to the crazy sweet .NET runtime libraries. Not that Java is any slouch, either - I'm constantly surprised how quickly the Java people are able to move the Java environment along.

Re:Challenging? (1)

NJRoadfan (1254248) | more than 6 years ago | (#24087437)

Whats strange is that I found Objective-C harder to pick up then C#. The first OOL I learned was C++, then Java. C# really isn't all that different from Java, thats the way Microsoft designed it. Objective-C threw me off since it doesn't use the typical C++/Java/C# style class structure.

Re:Challenging? (2, Insightful)

Westley (99238) | more than 6 years ago | (#24087661)

C# 1 was quite a simple language. C# 2 added significant complexity (and power, don't get me wrong) and C# 3 has done the same again.

I wouldn't be without the benefits of C# 3, but it does take it away from the "pick it up easily in a week or so" category in my view.

Re:Challenging? (1)

Jugalator (259273) | more than 6 years ago | (#24087387)

Why must a well designed language be challenging?

I don't think it is, I think it's far easier to learn than C++ thanks to all the backwards compatibility cruft being out of the way. I'm not sure that's what the author meant either, but that it can be challenging if you don't understand OOP basics. Like C can be challenging to learn if you don't have a good grasp of function oriented programming.

Re:Challenging? (1, Insightful)

Anonymous Coward | more than 6 years ago | (#24087537)

Why must a well designed language be challenging?

Because the primary design goal behind C# is to lock you into Microsoft's proprietary .NET platform. Things like APIs, support, etc. are secondary with C#, which leads to problems that manifest as technical challenges, among other things. I'm not kidding, nor am I being sarcastic or flip about it.

Re:Challenging? (-1)

gbjbaanb (229885) | more than 6 years ago | (#24087809)

and I think you'll find its not that well designed, unless you call "steal all of Java's stuff and run the old J++ libraries through a converter". Read some of the blogs by the guys who implemented it, especailly Chris Brumme's. Its an eye-opener when he starts talking about how he wishes they'd made different decisions that's made supporting it a real pain, not to mention the good bits where he contradicts MS's hype (eg. think exceptions are free in C#? Seriously think again)

Don't believe the marketing hype from MS, C# isn't the best thing ever (I remember the heated discussions about determinstic finalisation in its early days, that was a joke where MS told us what we really needed, and we told MS that wasn't good enough. Shame it only produced the cocked-up compromise of IDisposable).

So far my experiences with C# have been beset by poor performance and code bloat. I don't think anyone would willingly code in C# without Visual Studio... another lock-in.

Re:Challenging? (1)

bigstrat2003 (1058574) | more than 6 years ago | (#24088051)

I don't think anyone would willingly code in C# without Visual Studio... another lock-in.

Sure, in the same sense that no one would willingly code in Java without (insert IDE of choice here). IDEs are really useful tools, and Visual Studio happens to be a really nice IDE. I could code in C# using Notepad, and wouldn't really have a problem with it if that's all that was available. Not like the libraries are horribly difficult to use or something. Since I have Visual Studio available, I choose to use that.

Re:Challenging? (1)

LDoggg_ (659725) | more than 6 years ago | (#24088589)

You missed his point.

I can name 3 good IDEs off the top of my head for java. Eclipse, NetBeans, and IntellJ. Two of which are open source.

With C# you get Visual Studio and the vendor lock in that goes with that.

I could code in C# using Notepad, and wouldn't really have a problem with it if that's all that was available.

Ugh. If you're gonna be on windows and have to use just a text editor and command line tools for coding, at least use something like notepad++ for syntax hilighting on your csharp files. There's even a portable version if you don't have admin rights to do an install.

Re:Challenging? (1)

bigstrat2003 (1058574) | more than 6 years ago | (#24088699)

I can name 3 good IDEs off the top of my head for java. Eclipse, NetBeans, and IntellJ. Two of which are open source.

What's stopping others from developing good C# IDEs, though?

Ugh. If you're gonna be on windows and have to use just a text editor and command line tools for coding, at least use something like notepad++ for syntax hilighting on your csharp files. There's even a portable version if you don't have admin rights to do an install.

Obviously there are far better tools than Notepad out there, even if you insist on coding with a text editor + command-line tools. I'm just saying that, if I was required to for some stupid reason, I could live with coding C# in Notepad.

Re:Challenging? (1)

LDoggg_ (659725) | more than 6 years ago | (#24088875)

What's stopping others from developing good C# IDEs, though?

I imagine it's just the lack of desire to compete with Microsoft.
Technically and probably legally there isn't anything stopping some company from writing another IDE. Developers not toolmakers are the ones that get locked in by choosing C# at this point.

If you go with Java or Python or Rails or PHP or C++ you have a broad choice of vendors for operating systems, platform implementations, and IDEs.

Re:Challenging? (1)

clgoh (106162) | more than 6 years ago | (#24089087)

There is also SharpDevelop. It's free and open-source.

http://icsharpcode.net/OpenSource/SD/ [icsharpcode.net]

Re:Challenging? (1)

caywen (942955) | more than 6 years ago | (#24087829)

You need to specify to whom the language is challenging in the question. Maybe you meant "Why must a well designed language be challenging to experienced developers" ? or "Why must a well designed language be challenging to new programmers" ? See? Very different questions.

Re:Challenging? (1)

naoursla (99850) | more than 6 years ago | (#24089073)

C# was trivia to pick up with a C/C++/Java/Lisp background.

I like this series as a whole (1)

SirLurksAlot (1169039) | more than 6 years ago | (#24087307)

but this particular book doesn't do anyone any favors unless they are an absolute beginner. I picked it up when I started my current position (.NET shop, lots of C# and *shudder* classic ASP using VBScript) mainly because their books on Design Patterns and Servlets and JSPs were decent. I quickly discovered that if you know just about any other C-style variant that C# is a snap to pick up. This book does a great job of hand-holding and providing lots of examples of classic OO concepts, but I would never use it as a desk reference. Their style works very well for subjects which take some thought to wrap your head around (such as design patterns), but there is entirely too much noise to signal for learning a language for my taste. Personally I'd rather have quick access to the language reference and the pertinent APIs, but I suppose if someone was just getting started this book might be appropriate.

Re:I like this series as a whole (1)

Tablizer (95088) | more than 6 years ago | (#24088321)

This book does a great job of hand-holding and providing lots of examples of classic OO concepts

At least one of their Head-First books spouts misleading info related to OOP. It is a coffee-shop example and tries to build a hierarchical class tree of the different coffee "types". There are at least 2 problems with this.

The first is that customers generally prefer a mix-and-match choice rather than be forced to group by hierarchies. Trees are not very flexible in a buffet-like environment or under constant change. (Sub-typing in general is a poor business modeling technique in my experience. It may work fairly well for display objects such as GUI widgets, but doesn't for biz. Set-based thinking is better for biz IMO, but OO doesn't support sets very well unless you reinvent a relational-like engine.)

Second, a good commerce system would allow user-defined categories (at "admin" level) rather than hard-wire them into code classes so that only a programmer can add and change products. Hard-wiring may be good job security for the programmer, but its poor industry practice. I didn't see any such disclaimer.
     

How come nobody uses anonymous delegates? (2, Informative)

Saint Stephen (19450) | more than 6 years ago | (#24087357)

Anonymous delegates came out in C# 2.0 (I think), and now we have lambda expressions. Umpteen ways to do delegates, and hardly anybody I know uses them and gets confused as heck when they see code I write that uses them. It's because F10 through the debugger "looks wierd" when you use them and people aren't used to seeing functions inside functions :-)

There's lots of stuff in C# that people never use.

Yeah, head first. (5, Funny)

Anonymous Coward | more than 6 years ago | (#24087383)

Getting head first is the only way I'll program in C#!

C++ != OOP???? (2, Insightful)

Anonymous Coward | more than 6 years ago | (#24087475)

"For computer programmers who do not have a solid understanding of object-oriented programming (OOP), learning the C# programming language can be rather challenging, even if they have experience with C or C++..."

If you are an experienced C++ developer who doesn't know enough about OOP to get by in C#, then I'd say you need more help than any mere book is going to provide.

C++ without solid understanding of OOP? (5, Insightful)

fph il quozientatore (971015) | more than 6 years ago | (#24087527)

For computer programmers who do not have a solid understanding of object-oriented programming (OOP), learning the C# programming language can be rather challenging, even if they have experience with C or C++

Well if you have "experience with C++" but no "solid understanding of OOP", there might already be a problem with your programming skills.

Re:C++ without solid understanding of OOP? (1)

sinserve (455889) | more than 6 years ago | (#24088511)

"Blub is good enough for him, because he thinks in Blub" -- Paul Graham.

"Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind." -- Alan Kay.

Re:C++ without solid understanding of OOP? (1)

jadrian (1150317) | more than 6 years ago | (#24089105)

What's the problem? C++ is far from being a pure object oriented language. If someone who knows C makes migrates to C++ to use some nice features he doesn't have in the first it should be perfectly fine.

Another recipe book (3, Interesting)

Animats (122034) | more than 6 years ago | (#24087593)

These 700+ page books on programming languages have too much bloat. Usually because they're full of recipes, plus a rehash of introductory programming material.

A really well written 50 page book on C# would be more useful. Especially if it came with a little summary card with the syntax. Code examples should be on an associated web site.

Of course, it's a Microsoft product, so it has "strategic complexity", not minimalism.

Re:Another recipe book (1)

Lord of Hyphens (975895) | more than 6 years ago | (#24088019)

You're thinking of the Pocket Guides--a useful little O'Reilly series that work well as an in-hand reference.

They're useful enough that I tend to look at them first when wishing to pick up new syntax.

Re:Another recipe book (1)

aztektum (170569) | more than 6 years ago | (#24088039)

For clarity, because I was confused after reading your comment: C# is a Microsoft product. This book is buy O'Reilly

C# Precisely (0)

zensonic (82242) | more than 6 years ago | (#24087717)

Instead of teaching a subject by a massive 778 pages of text, you should go for the consise description of C# as described in Peter Sestoft and Henrik Hansens book:

http://www.amazon.com/C-Precisely-Peter-Sestoft/dp/0262693178

With 182 pages it is quickly read, yet you can also easily iterate over the text again and again as deeper and deeper understanding of C# is needed. A real gem on any developers bookshelf!

Re:C# Precisely (1)

Westley (99238) | more than 6 years ago | (#24087881)

Unfortunately it's somewhat out of date. While it does cover C# 2, it was published a year before C# 2.0 (and .NET 2.0) were released - which means it won't be accurate when it comes to things like boxing nullable types.

It also (for obvious reasons) doesn't cover C# 3 at all. But yes, it does look like an interesting book...

Re:C# Precisely (1)

zensonic (82242) | more than 6 years ago | (#24088047)

Given that Peter Sestoft was Beta tester on C# 2.0 you can take it for granted that the book covers C# 2.0 as it was at the time of release. If you find anything that is inaccurate in the book I am sure the author would appriciate the feedback :-)

Re:C# Precisely (1)

Westley (99238) | more than 6 years ago | (#24088229)

Given that Peter Sestoft was Beta tester on C# 2.0 you can take it for granted that the book covers C# 2.0 as it was at the time of release.

No it doesn't. The behaviour for boxing changed after the book was published. It was changed in the the August 2005 CTP, I believe.

C# 2.0 was finally released as part of .NET 2.0 in November 2005, over a year after the book was published - which means it's more likely to be about 15 months since the final copy was written.

If you find anything that is inaccurate in the book I am sure the author would appriciate the feedback :-)

I suspect the authors aren't that bothered at this point, given that the book is coming up to being 4 years old.

Mind you, judging by the table of contents, there's very little about nullable types - the chapter looks like it's only two pages long. That's not going to be enough to cover lifted operators and conversions, boxing etc.

Jon

Alternate resource (5, Funny)

Frostalicious (657235) | more than 6 years ago | (#24087823)

Head first was pretty good, but I still prefer my old standby - "Balls Deep Into C#"

Bah. What can C# do that Java can't (1)

caywen (942955) | more than 6 years ago | (#24087883)

I mean, I can write a C# compiler in Java, can I not? Oh wait, I can write a Java compiler in C#. Holy crap, I can write anything in assembler. I just found the best language.

WTF (0)

Anonymous Coward | more than 6 years ago | (#24087983)

Seriously: trying to rot your brain? Cb is the most godawful language ever. It's made by Microsoft! Get a clue! There are only two OO languages. Smalltalk and Objective-C. Objective-C is dazzling. Cb is just more Microshite shite. Settle for 2nd best and YOU will be 2nd best. At best.

Found this via a story last week (1)

prestomation (583502) | more than 6 years ago | (#24088001)

Last week we had that story about Textbook Torrents. This was one of the ones I found there!

Advantages of knowing C# (0)

Anonymous Coward | more than 6 years ago | (#24088009)

None. The cool kids program in Java, Ruby, not C# C, C++, not C#, Scala, Groovy, not C#....

Re:Advantages of knowing C# (1)

Is0m0rph (819726) | more than 6 years ago | (#24089023)

Wrong, no one cool actually programs in Java.

I'm a /.er reader and ... (1)

Evildonald (983517) | more than 6 years ago | (#24088579)

i think c# and M$ products are rubbish.. blah blah blah... Get a new line guys.

this FP for GnaA (-1, Offtopic)

Anonymous Coward | more than 6 years ago | (#24088581)

then Jordan Huubard

Please explain exactly what is wrong with C# (4, Insightful)

Conspiracy_Of_Doves (236787) | more than 6 years ago | (#24089211)

Can someone please explain what is wrong with C#? Something other than the fact it was created by Microsoft or simply that it is 'rubbish'.

What features of the language do you have a problem with? Ok, so there's no multiple inheritance. What else?

I've been doing ASP.NET via C# for a living for about 18 months now, and I've found it to be a perfectly servicable language. What's the problem with it?

I hate Microsoft's business ethics just as much as the next /.er. I'm still going to judge their products based on their own merits.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>