|
|
I'm certainly not an expert on a plethora of languages but I do have
some views on the points you raise.
1) On Garbage Collection, I regard this as a huge factor in favour of
C# and .Net. The way that the language, type system, IL and GC are
interwoven is superb. It very substantially reduces the opportunity to
create difficult to eradicate memory allocation / deallocation bugs.
Surely a C++ guru will know how to avoid or at least find and fix such
problems but in .Net the problem to a large degree simply isn't there.
End result in my experience is that it is actually practical for a
non-guru to produce large sophisticated and functional programs.
And in regard to speed loss from GC, I really have not observed a
problem. You might think it is a huge overhead but it has not yet shown
to be an issue at all for me. I imagine that in certain types of
applications it could be an issue in which case there are coding styles
and techniques to minimise any impact and still remain within 'managed'
code.
So it doesn't seem to be an issue at all. People coming from other
language backgrounds seem to have an impression that it is massively
slower or a huge impost. It seems like the opposite to me.
2) Similarly this seems like a C vs C# pedigree thing. Interfaces is
certainly one answer. The other i guess is that with the XML comments,
Intellisense, Object Viewer, Class diagrams and other IDE goodies it is
pretty easy to see the class jierarchy, properties, methods etc.
Story - My brother-in-law is a 20+ year veteran of C, C++ in embedded
systems and under Windows using OWL and MFC. My background is more PC
and Mainframe assembler, a bit of C, lots of SQL and passing
acquaintance with C++ (which I detest) and Java.
As I got into C# and .Net I found it to be very well thought out, rich
and powerful.
Whenever we would discuss programming stuff he would raise two big
things - GC and lack of header files (and therefore class prototypes).
Here is a typical conversation that was unresolved for both of us:
Him: How do you do X in .Net ?
Me: Ah, that is still just like X
Him: How do you do Y in .Net ?
Me: You don't really have to or want to do that
Him: I like to do that
Me: But why when you don't need to
Him: Well its good to because ...
Me: But that isn't a problem in .Net because ...
Him: Well I like to do it and it is a good idea
Me: I can see that in C++ but they've really done away with that
problem in C# / .Net
Him: Well that can't be because I've seen problems when you don't do that
Me: Yeah in C++ but you don't need to in C# and if you really want to
you could probably do it using ...
Him: Well I like to do it
Me: Ok.
Guess what ? Recently he's started really using VB.Net and now C#.Net
and he pretty much raves over the improvements. Suddenly there is no
more discussion about the resistance points but we have fun talking
about all of the neat new things and how well it all fits together.
Then there is the framework which to me seems more comprehensive and
consistent than anything for Java.
And I think that LINQ, anonymous types, extension methods etc in .Net
3.0 / 3.5 are really extending the framework in powerful ways while
maintaining and extending the core.
Call me a C# / .Net fanboy but don't call me one for Microsoft. I
reckon they should put the C# guys starting with Anders Hejlsberg in
charge of the next OS they do.
Post a reply to this message
|
|