What do you want in the next version of VS/C#
-
Heath: A few points. First: " but the fact remains that many of these enhancements (like the new keyword completion; keywords are something anyone programming in C# should at least know already) simply foster lazy programming " I disagree. Having keywords in completion lists is intended to benefit those of us who find typing to be an incredibly slow cumbersome process compared to what our minds have already written out. Why type out the entire word "protected" when "pr" will do? Second: "With attitudes like that, it's no wonder why software stability is going down hill and that the means to make the software stable is being pushed into the frameworks" ... "many programmers using RAD don't think (or flat-out just don't know) what's going on in the background and write extremely inefficient code. They said it in nicer terms, but it's clear what they were getting at." I've heard that argument before. The first time was moving from assembly to C. Then it was C to C++. Then C++ to C#, etc. etc. :-) Inefficiency is a matter of perspective. I could write a code block that takes 100 times longer to do something than something you write. However, in the grand scheme of things, my way takes only .01 seconds. Is it inefficient? Sure. Do I care? No. I measure effciency in terms of my productivity, not just the final resulting code. And, if the code is too innefficient, then I will profile and improve it, either at the code level, or at the design level. But I won't put the pedal to the metal unless it's necessary. Third: Why would you need to burn express to a DVD? It's only 25 MB :-) Also, external/internal help is irrelevant here. Both require you to leave the code you are currently typing. What we are working on is trying ot make it so you have to go to help less and less. Fourth: As the the MD5 thing. I recently blogged about an feature I added to the IDE and was soliciting feedback on it. You can read about it here : http://blogs.msdn.com/cyrusn/archive/2004/06/22/163114.aspx The basic idea would be that he could have typed: "MD5" and we would have told him about the available types related to that. I've been trying to work on ways to incorporate "discoverability" into the IDE so that one can learn more of the BCL (which can be a daunting task). -- Cyrus (http://blogs.msdn.com/cyrusn)
Metasyntactic wrote: Third: Why would you need to burn express to a DVD? It's only 25 MB I'm talking about the full Visual Studio 2005 Enterprise build up on MSDN Subscription Downloads. At over 3.5 GB (IIRC), I'll definitely need it on DVD. I hate having to swap out CDs (with an installation process that long, it's nice to just walk away for a while). Learning the BCL can be a daunting task, but even with discoverability features the best way for people to learn is to at least browse through the BCL. This is what I recommend quite frequently. At least gaining familiarity with what's available might help down the road when you need a particular class. I realize that you work at Microsoft and know your stuff and I only know what I read in your blogs and what I've learned from experience in the trenches (studying the .NET Framework in-depth - down to the IL, PE/COFF EATs, etc.) and working with the people using it. If experience answering questions has taught me anything, it's that far too many programmers are trying to take the easy way out and IntelliSense plays right into that. Sure, it can help productivity, but it should be no replacement for learning. Education requires reading and experience, and there's no substitute for that (I'm sure that even old assembler hacks would agree, if any are still sane :)). In fact, just the other day a former coworker of mine and a good friend who works for another company now was commenting that they picked up code from some company that was in the process of creating DLL hell...with assemblies. They didn't know what the GAC was; they didn't know what strong naming was or how to do it; they really didn't much of anything except that they were programming in C# (the concept of the CLI was unknown to them). This is a company selling major software at a high price. My friend told them about the GAC and how it could solve the problem. Now how does IntelliSense or the new discovery feature you're conceptualizing help that? People need to read. Every day the regular forum members including myself are confronted with questions like "What does method XX do?" IntelliSense provides the summary and param info, but does not (nor could it, concievably) show the remarks and examples. Again, I'm not opposed to IntelliSense. It can help boost productivity but it it should not be a replacement for reading (even if it's just skimming the BCL docs to see what's available).
-
Heath: I work a few doors down from Anders. Nothing is set or certain about the future of the platform or the language. We're constantly trying to improve both and we're looking toward the community to find out what people want. Also, I'm not sure where you are getting this thing about "throws". It wasn't in the list and it was never discussed by anyone as being something they wanted... Note: there isn't anything on that list that we're opposed to doing. Well, except for any feature that would break existing code (like making methods virtual by default). Also, almost none of them are new ideas either. However, the reasons we haven't done them so far relate to a combination of factors. Including how much time we have, how much customers want the feature and how much benefit we think they will get out of it. So, as you can see, it's the same as generics for us. We've been aware of it for a long time, we haven't had the time to do it, and now we're trying to figure out what users want the most so we can factor that into our decisions. Again. I ask that if you have issues with the things on this list that you bring your objections over to the feedback section on the blog and carefully explain your position. Different points of views can then be discussed with the others who have contributed so far. These discussions will play a large part in hte choices we make in the future. And if you don't give us this feedback then it's likely we'll pick things from this list that you will not want. -- Cyrus (http://blogs.msdn.com/cyrusn)
As far as the "throws" bit, this was discussed in the multi-part series of articles Anders did with some online mag (it was a while back, so I don't remember the details). "Throws" was brought up several times. Sure nothing is written in stone with the future of either C# or the CLI but the last thing I'd want to see is a bloated framework. Metasyntactic wrote: Again. I ask that if you have issues with the things on this list that you bring your objections over to the feedback section on the blog and carefully explain your position. Different points of views can then be discussed with the others who have contributed so far. Perhaps. I'm not fond of a large discussion in a flat format (non-nested). Unless people are quoting other responses (or something along those lines) it's very difficult to follow. Sites like CodeProject and Slashdot (while I hate their constant and often groundless/mindless Microsoft bashing) are much easier to follow. I will check it out, though. Normally I just read the blog item and skim the comments.
Microsoft MVP, Visual C# My Articles
-
As far as the "throws" bit, this was discussed in the multi-part series of articles Anders did with some online mag (it was a while back, so I don't remember the details). "Throws" was brought up several times. Sure nothing is written in stone with the future of either C# or the CLI but the last thing I'd want to see is a bloated framework. Metasyntactic wrote: Again. I ask that if you have issues with the things on this list that you bring your objections over to the feedback section on the blog and carefully explain your position. Different points of views can then be discussed with the others who have contributed so far. Perhaps. I'm not fond of a large discussion in a flat format (non-nested). Unless people are quoting other responses (or something along those lines) it's very difficult to follow. Sites like CodeProject and Slashdot (while I hate their constant and often groundless/mindless Microsoft bashing) are much easier to follow. I will check it out, though. Normally I just read the blog item and skim the comments.
Microsoft MVP, Visual C# My Articles
I'd like to clarify the part on "throws". While we might be against the specific way that exceptions have been handled in other languages in the past, we are very open to addressing this issue if enough people are interested in it. So, if you had seen something in the list like "better support for exceptions (like 'throws')" that wouldn't mean "we're going to add throws exactly like it's been done in the past with all the same problems that we've seen crop up. It means that we're going to work on a solution that helps out with the problems that users are having. I do appreciate you looking at the articles. Constructive feedback there is a chance to get the outcome you would like out of all of this. -- Cyrus (http://blogs.msdn.com/cyrusn)