Partager via


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
  1. 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