Hacker News new | past | comments | ask | show | jobs | submit login

I have to disagree. I've used C# professionally since its release. At first I totally agreed with you. It seemed like the language was growing like a weed and was becoming totally unmanageable. The release of C# 3 basically led me to say "what the hell, Microsoft?"

But one major counterpoint to all of this is the features added to C# 3 may seem like huge bloat at first, but when you realize they all exist to support LINQ, you end up seeing them as a pretty cohesive package. C# 3 was by far the biggest growth spurt the language has seen to date. Implicitly typed local variables, extension methods, lambdas, expression trees, etc, all exist solely to make LINQ possible. The fact that they are usable outside of LINQ is just an artifact. And honestly I think it's a good artifact, I feel all of these features have benefited the language. The more I use the new features (whether in the context of LINQ or not) the more I noticed my code becoming cleaner, more succinct and much easier to read.

C# 4 doesn't quite have the same major killer feature that 3 had to warrant its additions. But at the same time, most C# 4 features are meant for special cases (dynamic primarily makes COM interop much simpler, for example) and don't leak into day to day programming that much. Abusing these features is just a judgment call a programmer is going to have to make.

I do think MS treads a very fine line here. It would be easy for C# to fall over the edge and become "the kitchen sink", but as a very avid user, I honestly think they (so far) tread that line very carefully and quite well. Let's see how C# 5 turns out.




I have liked where the language has gone as well. I actually think that C# is a lot like Scala, with more mainstream uptake. It is not a small language, it is not simple, but it is a true multi-paradigm toolkit. You can do straight-out functional programming, lazy evaluation, OO, all out of the box. You can mix metaphors where appropriate, and the potential to end up shooting yourself in the foot is much reduced from that of C++. My biggest gripe has always been the vendor lock-in, there just don't exist the set of tools that ship with Java, particularly for profiling and configuring the VM.


It is not a small language

Guy Steele, in his famous talk at OOPSLA '98: http://video.google.com/videoplay?docid=-8860158196198824415 explains why "small" languages are not good.


Careful... While that talk was indeed brilliantly conceived, I'm not sure how much it applies in this context.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: