I started typing a lengthy comment to Jeremy Miller's post on 'What do you want in C# vNext?', but it seems silly typing a book into that little comment box, so I decided to make it a blog post. Also, Ayende has his take on the question already up.
On Mixins
Mixins certainly would be great to have. Maybe even Traits, too... if they pan out like the sound like they might.
On Symbols
Bob Gromme (the first commenter to Jeremy's post) is right, the C# compiler and the CLR are quite efficient at dealing with similar strings. You can make dictionaries case-insensitive to deal with casing problems too, if that's your concern. Ruby Symbols sounds more like a response to specific problems created in an interpreted environment that are less a problem in a compiled environment... or maybe I'm missing something.
On Hashes
OK, but please, please, PLEASE don't use some crazy special 'fast' syntax for on-the-fly Hash declarations. IMHO, this is worst part of having to work with Perl, Python, Ruby, and similar type languages w/r/t declaring arrays and hashes on the fly using just brackets or something non-obvious. At the very least, have a keyword like Hash{} or Hash[].
On Always Virtual Methods
About always-virtual: isn't that what interfaces are for? As I vaguely recall, all-virtual caused a design problems when I was doing Java. I'm not sure you want that. And who are all these people mocking concretes, and why? Legacy code? There has to be better way of dealing with this problem besides introducing a major OO design change and basically emasculating the JIT inliner.
My Additions
Returning multiple outputs from a method would be handy in some cases, but would be horribly abused, I'm afraid.
Beyond that, I'd actually like to see the C# guys take a sabbatical and explore other languages and frameworks to get some fresh ideas and have the rest of the MSFT dev tools guy work on making Visual Studio more than just a 'At least it doesn't suck as bad as its competitors' release like 2008 is turning out to be. The language has about everything I want or can leverage at this point, but I'm still frustrated by the tools either getting in my way, or not springing me forward as much as they should.
Microsoft: STOP writing the dang wizards and build-your-whole-app-with-the-click-of-a-button-software-factory thingees. Make some good, revolutionary changes to VS like jaw-drop refactoring, code flow enhancements (just-in-time track-laying), better integrated testing support (sorry, MSTest just doesn't cut it), and/or even better debugging especially in multi-threaded/multi-core scenarios.
Technorati Tags:
.NET,
C#