A group blog from members of the VB team
I spent the last few weeks using VB, and I kept thinking things such as “Wow, this is really awesome, I wish all other languages had that!” or “I’m sure there is an easier way to do this”. I simply can’t help it - just as with any other language, when I start using it I notice a few things that are really cool, and a few things that can be improved.
So, I had my very own list of what was really cool and what could be better, but then I wondered – how did other VB developers feel? And, what is a better way to answer a question like this than actually asking the community? Why not put a blog post and see what people think about the VB IDE/language features?
To make things really simple, I prepared two questions for you:1. If you had $100 to spend on keeping existing VB features unmodified, how would you spend it?2. If you had $100 to spend on adding new things to VB / improving existing functionality, how would you spend it?
And then if we take everyone’s $200 and add these numbers together, we will get a pretty accurate picture of what we are doing right and we could do even better. So, help us do our job better!
Just as an example, here is my answer to the first question. I tried to keep the list as short as possible, but there are some things that I really wanted to mention, so I couldn’t make it shorter than that :)
Preserving current functionality:- $40 – Ubiquity. I can use VB to create Web apps, Windows Forms apps, Smart Device apps, MS Office scripts, etc. You can learn one language and pretty much do anything with it – that is really the best part about VB to me!- $30 – Really smart Intellisense and instant feedback while I’m writing code – I can see syntax errors without explicitly compiling my project. I just love that!- $20 – My! Yesterday I had to write a small script and I don’t really think I could have written less code in any other language. My.Computer.FileSystem.ReadAllText, My.Computer.Network.DownloadFile, My.Computer.FileSystem.SpecialDirectories.MyDocuments, etc. – just a few of the really, really cool things in My.- $10 - The “dynamic” part of the language and the syntactic sugar – implicit late binding, optinal parameters, with…end with, etc. It makes a huge difference!
So, what are your lists?
$40 for a separately installable IIS. All the ASP .NET features in the world aren't worth anything if users don't have a web server to run them on.
$25 for the ability to create an application that will run without installation, in its own directory.
$25 for application users to be able to *place* a bound control on a form (i.e., after adding a field to a database).
$10 for the ability to modify application-scoped settings in My.Settings.
I'd give my hundred to devote some time to correcting those who consider VB to be "not even a language", beyond the mere fact that VB is, by any educated definition, a programming language.
You can go ahead and continue considering VB to not be a "real" language, but don't whine to people who were more open-minded and realized that VB's actually a useful way to get certain tasks done quickly and effectively.
Those of us who are more open minded will continue to create excellent RAD applications in VB.NET that can use 95% or more of the features in languages like C#, and can easily and directly be converted to other CLR-based languages if that remaining 5% incompatibility becomes an issue.
We'll continue to create our solutions ahead of time and ahead of budget constraints. Our interns and new developers will continue to look at our code and understand, immediately, what's going on thanks to VB's "neophyte-friendly" syntax.
I would like the ability available in VBA and VB6 to step through the code, find the bug and drag the cursor back to the previous line and step through confirming the code is correct. I would give this feature $100 because it would save literally hours of debugging.
I would also like a way of testing functions and subroutines in a 'sandpit' before using them in the main program. This must be worth $20
I would like a simple way of printing a form because often a copy of a vb form is good enough.$30.
I would like to see Help with a few more examples that explain how to use a function in the context it is normally used. Not a super deluxe example that shows 6 different features at the same time nor a trivial one-liner. And can Help appear more quickly when you press F1? $30.
Can we have a better way to manage unmanaged code - Can we have something better than having to write wrappers in C++ and then trying to access them from VB.NET? There must be an easier way! $10
Finally, I would like the equivalent of the Access style Combo boxes and List boxes. Yes, I know the new types are superior but the old ones are easier for database users to code.
That would be $200 well spent!
Features to keep:
Truly automatic code indenting. Unlike C#, VB NEVER allows a line to be wrongly indented. $20
"My" namespace $20
Verbose syntax (If - End IF, sub - end sub, etc...). Lots of people hate this, but I find it makes things easier to read. $20
Dim keyword. Compare the following C# and VB declarations: $20
MyReallyLongDataType x = new MyReallyLongDataType()
Dim x as new MyReallyLongDataType()
Things to toss:
() instead of  for indexing arrays / collections. The parens look too much like a function call. $20
Things to add:
VB6-style immediate window, where I can declare variables & execute loops in design time. $50
Something REALLY cool implemented in VB (say, a top-quality XBOX game), to prove to those C# snobs that VB is an awesome language. $500
$50 move good things from VB into the core .NET framework (e.g., the My namespace).
$50 batch build functionality to force full rebuild of debug and release code.
most important to us -> $100 for a tool to find all compiled VB6 exe, com, dll, etc on a machine. We have to audit all our severs by March 2008 to remove all applications using VB6 code (except for the OS, Office, SQL Server and Exchange since they are core MS products). This is for business reliability so that our production environment does not rely on code older than 4 to 5 years.
$400 to keep doing what you're doing in VB. It's great!
The 3 top things I'd like to see in C# (in this order):
1. Make wiring up events as easy as it is in VB.
2. Add the 'My' keyword to C#.
3. Add 'With' construct ability to the language.
I forgot. I also love project imports and background compilation in VB. It would be nice to see those in C#.
I would like VB.Net to become more of a consistent language. What I mean is that when possible there should be ONE way to do things.
For example, VB.NET knows MsgBox and MessageBox. Why not try to push developers to the new MessageBox method as also used in C#? Just put a red line on the MsgBox MSDN pages saying this method is obsolete please use MessageBox.
A language should be consistent, to make it a real language and promote collaboration.
$100 to FIX existing features:
I'd spend all my money on making integration with Visual Studio more robust and stop crashing on large projects, support for more earlier compile time detection of aspx pages (non web-project files based), and give me back EDIT & CONTINE!
$100 to add features:
Agile developers need better refactoring tools. Let's add more refactoring support so that we can shape better code/developers with less work?? C# has it, VB still has some catching up here.