What do you want in the next version of VS/C# (part 4)
Ok. I tabulated the vote that came in after I asked everyone to contribute. It took a lot longer than I expected since I got a total of 667 (aren't I glad that isn't 666) votes come in. Here are the final results. Of course, I can't gaurantee anything based on this, but it is pretty fantastic information to hear about. Also, if you don't see a certain option listed here feel free to ask why. The main reasons are that I might have felt it was subsumed by an existing item, it's something we already have in VS2005, I didn't understand what you were asking for (even after asking for clarification), or I just missed it :-). First off, here's all the raw data:
Feature | Votes | Feature | Votes |
---|---|---|---|
Edit&Continue | 31 | Better constraints for generics | 10 |
Better support for nesting other languages in C# | 23 | Warnings for certain goto behavior | 8 |
Better control over all code generation. | 23 | Better syntax for casting | 8 |
handling of null events | 22 | Better mock object support | 8 |
Tuples/Generic lists of variable length | 22 | Better thread debugging | 8 |
Covariant return types | 20 | Delegates on properties | 7 |
Expose the compiler with a managed API | 19 | Generate field/property/constructor/class/etc. | 7 |
intellisense for indexers/conversions | 18 | Fix up usings | 7 |
tell you when you're using a disposable type unsafely | 18 | VI mode | 6 |
Non-null types | 17 | Functions in module scope/Top level functions | 6 |
C#=Vb | 16 | Better MSDN documentation | 6 |
Error correction/spell checking | 16 | More flexible color schemes | 6 |
Private backing store for properties | 16 | Better XML serializer | 6 |
Automatic constructor stub generation: | 15 | Better support for chords/keybindings | 6 |
Pre/postconditions | 15 | User filtered catch handlers | 6 |
Static import of classes | 14 | Method scoped variables | 6 |
support for checking enum values | 14 | VS macros in C# | 5 |
const support | 14 | Find code duplication | 5 |
Support for mixins | 13 | Read/Edit mode | 5 |
Virtual operators/operators on interfaces/better operators | 13 | IntPtr operators | 5 |
Nicer syntax for anonymous delegates | 13 | API For accesing the profiler from managed code | 5 |
Expose the refactoring engine | 12 | No regions on interface implementation | 5 |
inlined array syntax | 12 | Warnings for implicit vs explicit implementation | 3 |
Managed Add-ins | 12 | Fix up doc comments when doing a refactoring | 3 |
special constructs for asynchronous operation | 12 | Method virtual by default | 3 |
Collapse all code comments | 11 | Support for method groups in doc comments | 3 |
C-omega support | 11 | Expose formatting/colorization engine | 3 |
Generic properties | 11 | Obfuscator Api | 3 |
Attributes on local variables and code blocks | 11 | Simplified iterator syntax | 3 |
Better control over completion list (sorting and filtering) | 11 | Schema for XML comments | 3 |
First class generics | 11 | Global exception tracking | 2 |
Better incremental find | 10 | More flexible interface implementation support | 2 |
Better constraints for generics | 10 | Aspects | 2 |
In a nicer graph form, I've split it up into the 50% that have the most votes and the 50% that have the least votes. note: I'm pretty sucky at creating graphs, so if you have a better way to do it, feel free to take the data and create your own. Send it to me and I'll put it up with these :-)
One thing I learned: Never conduct a web poll by soliciting emails. It's ridiculously time consuming to collect and tabulate all votes. It's also error prone. I ended up printing out everything and checking things off one by one in order to make sure i didn't miss any votes.
As part of the vote I asked people to tell me about things they didn't want. I left out those results because there just weren't many opposing votes. I'm guessing that that's because, for the most part, everyone either wanted a feature or was just OK on it. The only features that really solicited any negative responses were some of the more controversial onces. Like E&C, C#=VB, virtual by default, and const support. However, there wasn't (in my opinion) a significant negative view on these compared to the amount of positive/uncaring views on them.
Some things that suprised me about the results:
- I wasn't expecting "Better support for nesting other languages in C#" to be so popular. I'm guessing that people are using regex's, SQL statements and XML a lot and would like that to be a nicer experience.
- I didn't realize how much people were annoyed with dealing with null events in C#. We didn't do any work on this and I think that was a mistake given the simple things we could have done that would have made people happier here
- There were a lot of responses that talked about the IDisposable pattern was extremely important and how it was so easy to mis/forget the pattern. People really, really, wanted IDE support here.
- I was expecting more interest in "virtual by default". That seems to be a very polarized issue that people have strong opinions on. I was surprised to get so few votes for it.
- Very few people wanted a global exception handler (i.e. events whenever any exception was thrown/caught). I was expecting that to be more popular as well.
Thanks very much for letting us know about all of this. It's going to be really helpful in our future choices for C#!!
Comments
- Anonymous
July 05, 2004
After playing with VS.NET C# Express 2005 abit, I find it very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very, did I mention very?, annoying that almost all dialogs of VS.NET are not RESIZEABLE.
The dialogs are often very tiny, I'm on 1600x1200, I have to click and scroll and click and scroll just to see a single row in a dialog or check some option. Very very very, ok I start to repeat myself, you get the picture. :)
IF this could be added to the final version, it would be great. Almost all developers I've spoken to about the C# Express product tell me the same. - Anonymous
July 05, 2004
Frans: Please file these issues at:
http://msdn.microsoft.com/ProductFeedback
Please indicate which dialog you are referring to. A screen shot would also be helpful to show how bad it is.
Shameless plug: the dialogs that the C# team is responsible for (not many) are all resizable :-) - Anonymous
July 05, 2004
Cyrus: ok, I've already filed 2 of them (options dialog and the Indexes/keys dialog of SqlExpress), I'll file more of 'em. Thanks :) - Anonymous
July 05, 2004
"nesting other languages in C#"
would that be nesting IL in C#? - Anonymous
July 05, 2004
Daniel: Yes. IL nesting is just another non-c# language.
Note: I would like to hear about what you would want to be doing with IL inlined in code. - Anonymous
July 05, 2004
Whohoo! E&C and I bet you didn't even count my repeated votes for it :)
Seriously, give me that and I really like the spell checker idea for strings and labels and other text elements on WinForms/WebForms.
Oh ya, and get rid of the 5 crashes of VS.net 2003 I've had this morning!
Give me all of that, and I will come and kiss the entire VS.net dev team (and C# team too!) :) - Anonymous
July 05, 2004
James: Did you submit your crashes to watson? :-) - Anonymous
July 06, 2004
optionally to enable throws clause. - Anonymous
July 06, 2004
Evil80: Could you explain what you mean by that? - Anonymous
July 06, 2004
> I would like to hear about what you would want to be doing with IL inlined in code.
hmm...after thinking about this for the past 10 minutes, I honest cannot find a good thing I want to do with this other than the coolness factor. I guess IL will circumvent some restrictions c# has, like using operators in generics. (granted, it's something you shouldn't do) so cyrus, what cool stuff do you do with IL? - Anonymous
July 06, 2004
I submit the crashes that actually produce an error that I can submit to Watson. But half the time (I'm running Windows XP SP1 + patches) VS.net just disappears and I get no error report window or anything (and yes, Win XP is set to prompt for the errors and send the error log) - Anonymous
July 06, 2004
Daniel: Kind of need more than just "coolness factor" to consider this :-)
Otherwise, it's just much much easier to just write the IL in a separate file and link to it from your main program.
I try to avoid IL myself :-) - Anonymous
July 06, 2004
The comment has been removed - Anonymous
July 06, 2004
I'm still waiting for my DVDs to arrive for Beta 1 (Yes, I'm one of the "official" beta testers :))
As soon as I have it, and if I can convert our project to it now (finally!) then I'll let you know if it crashes the same way!
Thanks! - Anonymous
July 06, 2004
yeah - I'm waiting for my dvd's too!
(of course, I'm not one of the "official" testers <grin> - Anonymous
July 06, 2004
Excellent work Cyrus. Thanks a lot
Now the next question. WHEN !
AFAIK mixins and inline IL are planned for Orcas, how about the others ? - Anonymous
July 06, 2004
Panos: "AFAIK mixins and inline IL are planned for Orcas"
Fascinating :-)
Where did you hear that information? - Anonymous
July 06, 2004
- Hejlsberg about generic-mixins
http://wesnerm.blogs.com/net_undocumented/2004/01/multiple_inheri.html
<quote>
Anders Hejlsberg indicated during a PDC panel that, while MI support is not planned for a future version of .NET, the CLR team is looking at supporting mix-ins, which is a type of MI based on generics. Mix-ins provide a kind of implementation inheritance that interfaces currently lack
</quote>
Just to add to the above, if mixins allowed operators, then maybe, it could be the perfect constraint for a generic type, with the current implementation of generics, simple operations (+.-,/,*) are problematic and inefficient
2) I was remembering wrong things, what its planned is not exactly "inline" and its not in Orcas, but in Whidbey
Hejlsberg about inline IL
http://msdn.microsoft.com/chats/vstudio/vstudio_032103.asp
<quote>
Can’t say that I’ve ever found much use for it [inline IL]-perhaps cause we don’t support it J Seriously, I think ILASM covers that just fine, and in Whidbey we’ll allow you to link C# and ILASM into a single assembly.
</quote>
How is that different, than using modules its beyond me
- Anonymous
July 06, 2004
Panos: Linking into the same assembly is far far off from supporting inline IL :-) - Anonymous
July 06, 2004
Exactly identical featuresets across all the languages that ship with the IDE. It annoys me that though one has a /roughly/ consistent front-end to C++/VB.NET/C#/etc., there are different featuresets for all those languages. If C# has a given refactoring, VB and C++ should do so too. I know it's hard to do for C++, but it's not impossible.
I want to be able to nest projects within folders within solutions. - Anonymous
July 07, 2004
Cyrus : It's still inlining, but at a higher level ;-) - Anonymous
July 07, 2004
you mention that you were surprised no-one wants a global exception handler?
Well - I for one don't particularly care about that, because I can replace the default error handler, and really don't want to interact with any exception that was successfully caught - it feels a little weird...
However, what I would like (although maybe it's possible? - dunno?) - I'm still using VS2003 officially at work, and so are using "using" to in a way simulate anonymous methods.
For instance
using (Transaction.Called("Create Cheque"))
{
...
Commit();
}
and of course, I rollback a current transaction if it is NOT committed when it is disposed. That works well, and a hashtable against threadid and stackframe accessed by CurrentTransaction allows me to nest these things and still remain threadsafe/eventsafe... but one thing I couldn't figure out how to do at all was to tell whether my object was being disposed because the block had finished nicely, or because an exception had occurred. I tried searching the stackFrame, but the caller is the same regardless. If I could do that, I could get rid of the need for Commit!
(Of course, with anon methods this desire goes away, I then just say InTransaction( "Create Cheque", {blah} ); ) - Anonymous
July 07, 2004
Is it possible to link IL and C# into the same assembly? Would that be possible with code from any language? - Anonymous
July 08, 2004
TraxBax!! - Anonymous
July 09, 2004
The comment has been removed - Anonymous
July 09, 2004
Keith:
"I am baffled by the "want to embed other languages inside C#"? "
The previous posts went into this in much more detail. This was referring to the issues people deal with commonly when trying to embed domain specific langauges like regexps, sql, xml, with C#. Currently it's a pain and it would be quite interesting if it could be done better.
"If you gave us everything we all wanted then C# would quickly become a bloated P.O.S."
Note: this was not a question of "what do you want to see in teh C# language" but what do you want to see in C# the whole shebang. So, if we could advance the editor into making it trivially easy to manipulate regexps from withing C#, then that would solve the problem.
I'll add your votes to the entire list :-)
Oh, and I'm curious... would be enough to just say "every single method can throw these possible errors?" considering that the instant you perform any IL instruction you have the potential to OOM, Overflow, or EEE. - Anonymous
July 09, 2004
Keith: " I am baffled by the "want to embed other languages inside C#"? "
I highly recommend reading the earlier posts on this topic so that you understand what all the suggestions are :-) - Anonymous
July 09, 2004
"Oh, and I'm curious... would be enough to just say every single method can throw these possible errors? considering that the instant you perform any IL instruction you have the potential to OOM, Overflow, or EEE."
In Java there is a distinction between checked exceptions and non-checked runtime exceptions. The same could apply in this scenario. OOM, StackOverlow, EE exceptions, etc are all unpredictable. However if I write to a registry key that I don't have permissions to write to, I'll get a SecurityException. That is 100% predictable. I think of them in the old SEH terms of hardware exceptions are like runtime non-checked exceptions whereas checked exceptions are like SEH software exceptions. So no, I only want to know about the "predictable", checked exceptions.
Sorry about jumping in this late. I just subscribed and my reader apparently didn't pick up your original post on this subject. - Anonymous
July 16, 2004
This is more of a VS.NET request than C#, but I want to be able to reference an exe in VS.NET. see (http://haacked.com/archive/2004/07/16/819.aspx) - Anonymous
July 16, 2004
Haacked: You can now reference an exe in vs2005 :-) - Anonymous
July 08, 2005
discount pharmacy http://www.bestrxpills.com - Anonymous
July 19, 2005
The comment has been removed - Anonymous
July 22, 2005
The comment has been removed - Anonymous
July 23, 2005
A heap of wheat, says the Song of Songs
but I've never seen wheat in a pile :)
did you like it? - Anonymous
July 24, 2005
Nice one, but what about der weg ? anywya, congrats from me. - Anonymous
June 09, 2009
PingBack from http://toenailfungusite.info/story.php?id=6046