If I gave you $200 to spend on VB, how would you spend it?

Published 30 July 07 07:18 PM

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?

by VBTeam
Filed under:

Comments

# Marco Chilá said on July 30, 2007 11:30 PM:

I give US$100.00 to keep language write facility. And I would give you another US$100.00 to keep getting better intellisense on the next versions. Just it. Quite simple.

# El Moola said on July 30, 2007 11:51 PM:

I'd give you $400 to get rid of it.

# Greg said on July 31, 2007 12:37 AM:

$100 on keeping features:

 - $50 on Intellisense and the instant feedback system, it's really slick.

 - $50 on the cool shortcuts - "With", "CXX (ie:  CDate, CStr, etc.).

$100 on new stuff:

  - $20 - Ternary operator (oh wait, that's coming in the next version.)

  - $50 - This is an IDE thing, but it would be nice to have a VB equivalent to the Refactor context menu in C#.

  - $30 - Education for those C# snobs out there.  Seriously.  ;o)

Thanks for all the great work!

- Greg

# Doug said on July 31, 2007 12:58 AM:

$50 for creating an ecma standard for VB.NET (like C#).

$50 for supporting open source and cross-platform versions of vb.net, such as the mono one: http://www.mono-project.com/VisualBasic.NET_support

Support a cross-platform IDE to develop visual basic and C# apps in (like eclipse).

Create a pluggable compiler framework based on the vb compiler for people who want to create statically typed languages for the clr.  This is different from the DLR, which is basically the ironpython compiler framework generalized a bit for other scripting languages.

# grauenwolf said on July 31, 2007 1:21 AM:

$100 - Being able to use VB on any platform. It isn't fair that I can't use it to program non-Intel platforms like the XBox 360.

$50 - Select Case on Objects and Types. This trivial little feature would save me a ton of time.

$50 - Dynamic Interfaces. Without this LINQ is far less useful than it could be. And besides, explicitly declaring interfaces is lame.

$50 - All the Dynamic/DLR-related goodies, including a "Dynamic Object" type that would work even with option strict is on for the rest of the file.

# mayers said on July 31, 2007 1:50 AM:

There are exactly two features that I have been literally *begging* for since Whidbey Beta 1. It never made it, nor did it make it for Orcas. Thus I have been ultimately disappointed with both VS 2005 and 2008.

1) Generic variance: $95

Ref:

http://blogs.msdn.com/rmbyers/archive/2005/02/16/375079.aspx

http://blogs.msdn.com/rmbyers/archive/2006/06/01/613690.aspx

http://research.microsoft.com/research/pubs/view.aspx?type=inproceedings&id=1215

2) Generic operator overloading: $5

(Not possible because overloaded operators are static and an interface can be defined with static methods, thus no way to constrain a generic type.)

I am mainly a C# developer; however, I must constantly drop down to the IL level to implement these features. If VB can get this implemented correctly, I will switch to VB.

There are other things that I would like to see, however implement nothing but these two features and I will be very, very satisfied. Drop Linq and anything else for these two features and I would still be extremely satisfied. Until then, I remain extremely dissatisfied.

# Craig Mills said on July 31, 2007 4:56 AM:

I would like to see something original. As a language, I can simply convert VB and C# code without any difficulty. The differences are so minor that I do not see the point in maintaining two nearly identical languages differing only in syntax. There are even automated tools to do this for you.

Give me unique language features (not IDE) that entice me to use VB over, for example, C#. I'll put my full $100 there.

# VBTeam said on July 31, 2007 12:48 PM:

Wow, thanks a lot for the awesome feedback everyone, looking forward to seeing more!!!

# Schneider said on July 31, 2007 1:46 PM:

$100 Ability to use VB on any platform.

$50 for creating an ecma standard for VB.NET (like C#).

$50 CLI optimizing.

$50 Improved FX Cop features.

$50 Help Simplify language even more.

# Gijs Wassink said on July 31, 2007 4:19 PM:

150$ get rid of the underscore continuation character.

50$ posibility to outline:

dim Test     as string  = "..."

dim Testing as string  = "........"

even when pritty listing is on.

50$ comments after parameterlist:

private sub Test(A as interger  ' 50$ No byval  

                       B as long        ' is the default  

                       C as string)    ' .............

50$ make all End If => End (less verbose)

50$ overloading on return value

I use Basic from MBasic and VB from v1.0 and I love it.

Keep up the good work, thank you guys

# CG said on July 31, 2007 9:21 PM:

$50 to bring back my VB6 Immediate window behavior (i.e. looping in the immediate window while in design mode/debug mode.) For instance:

Dim i as Integer: For i = 1 to 100: Debug.Print i: Next

$50 to make features available in C# and VB at the same time. (Think anonymous delegates)

$100 to defend VB as a valuable language. Even with the CLR folks still bash VB. Why doesn't MS take a stand? Why are advanced features (XNA?) only available in C#? Are parts of the CLR written in C#? Why not VB? Is there really a problem with VB? I love using VB. It is a good fit for my thought processes. VB6 had the biggest install base, yes? Why does it seem like nobody cares? Can anybody even name some major software that was written in VB.NET? Is it really just a TOY language? Should I just give up and switch to C#? Or worse, C++/CLI? Is the C# team really three times the size of the VB team?

# Kain said on August 1, 2007 2:10 AM:

Similar to one of the comments above.

$100 for making unique VB features instead of duplicating all of the new features of C# with a different syntax. If all you do is copy C# with each new version, then there is no need for both.

# Csaba Urbaniczky said on August 1, 2007 7:13 AM:

$100 on keeping features:

+ $30 on Intellisense and the instant feedback system.

+ $20 on the implicit block structure so “Begin End” and/or “{ }” is not needed.

+ $20 on using CR as implicit statement separator so semicolon is not needed.

+ $30 on most of the syntactical sugar like “If someLogic then DoIT” , “End If”, “End sub” etc. (But see below.)

$200 on new features:

+ $10 on removing the redundant DIM keyword.  This should be legal code: “Int32 ix = 42”.

+ $50 on better implicit documentation of sub/function variables. ‘=could replace the clumsy XML style now in use for Intellisense,

+ $40 on an optional “Catch” functionality in the uppermost  level in sub and functions so less block intends are needed.

+ $10 on more meta information like “Function.name”.

+ $10 on clear distinction between arrays and function/sub variables; someArray[ix] and  SomeSub(aVariable) respectively.

+ $25 on all the best dynamic goodies from Ruby that makes Rails possible

+ $25 on simpler but more powerful framework by using dynamic goodies.

+ $30 to the VB team so this will be implemented! Keep going!

/Csaba

(Q: Is there a size limit for comments?)

# Csaba Urbaniczky said on August 1, 2007 7:15 AM:

$100 on keeping features:

+ $30 on Intellisense and the instant feedback system.

+ $20 on the implicit block structure so “Begin End” and/or “{ }” is not needed.

+ $20 on using CR as implicit statement separator so semicolon is not needed.

+ $30 on most of the syntactical sugar like “If someLogic then DoIT” , “End If”, “End sub” etc. (But see below.)

$200 on new features:

+ $10 on removing the redundant DIM keyword.  This should be legal code: “Int32 ix = 42”.

+ $50 on better implicit documentation of sub/function variables. ‘=could replace the clumsy XML style now in use for Intellisense,

+ $40 on an optional “Catch” functionality in the uppermost  level in sub and functions so less block intends are needed.

+ $10 on more meta information like “Function.name”.

+ $10 on clear distinction between arrays and function/sub variables; someArray[ix] and  SomeSub(aVariable) respectively.

+ $25 on all the best dynamic goodies from Ruby that makes Rails possible

+ $25 on simpler but more powerful framework by using dynamic goodies.

+ $30 to the VB team so this will be implemented! Keep going!

/Csaba

(Q: Is there a size limit for comments?)

# Csaba Urbaniczky said on August 1, 2007 9:07 AM:

This example may clarify some of the suggestions above. It would be nice if this function was valid code:

Function ListAllSerialPorts(  ''= Purpose: …

       '= Assumptions: …..

       ByVal aCombo as ComboBox '= …

       ) as Boolean '= true if …

'=  Effects …

'=  Remarks …

       hasFreePorts = False

       aCombo.Items.Clear()

       For each aSerialPort in My.Computer.Ports

If not aSerialPort.IsOpen then

hasFreePorts = True

aCombo.Items.Add(aSerialPort.PortName)

end if

         next

Catch function ex as Exception

        MsgBox("EXCEPTION  " & Function.name & ": " & ex.Message)

Finally function

        If not hasFreePorts then aCombo.Items.Add(noFreePortId)

       aCombo.SelectedIndex = 0

       Return hasFreePorts

End try function

(I apologise for the messed up indention and the duplication above. )

/Csaba

# Csaba Urbaniczky said on August 1, 2007 9:15 AM:

The following example may clarify some of the suggestions above. (Yes there is a size limitation so I have cut in the example ) It would be nice if this function was valid code:

I apologise for the messed up indention and the duplication above

/Csaba

# John Morad said on August 1, 2007 10:17 AM:

I will give you $1000 to turn off VB....it's not even language..

# Chris Jones said on August 1, 2007 7:37 PM:

$50 for removing line continuation mark _

$50 for removing the need for Dim

# Jack said on August 2, 2007 2:45 AM:

$100 for My class. It rock!

$50 for reduce bloated VB language. Get rid of crap keyword like Dim and all the un need keyword

$50 for running VB.net on everything including Xbox 360. it is not fair that only C# programmer get to have all the fun.

# Matt said on August 2, 2007 12:11 PM:

Things to keep

$30 The very verbosity others have complained about. End If/End Function etc. are part of the reason that VB is so readable. You get to the bottom and you know what's ending without having to trace back through an ugly mess of nested indents with curly braces. Unless you're writing VB in Notepad, there's no extra typing anyway.

$30 Case insensitivity, with the IDE keeping the case consistent.

$30 Automatic code formatting. Eliminate as much individual style as possible. If I have to pick up someone else's code and read it, I want to spend my time figuring out what steps they're taking, not stumbling through their wacky indenting style.

$10 Intellisense

Future priorities:

$20 Do even more to improve readability and minimize code style creativity. For instance a lot of coders have different ways of dealing with a line running off the screen or long lists of arguments. The IDE should take care of the wrapping. The more aspects of code style you can eliminate from the coder's control, the better.

$15 Maintain parity with C# features. I can't have C# snobs lording it over me for a whole version until VB catches up (e.g. Iterators). There should be absolutely no reason to use C#, ever, except maybe masochism.

$40 Code that writes code. I'm not so sure I want to go back to the days of Eval, but at least it was something. There ought to be some way to do dynamically generated functionality. It would fill a lot of gaps.

$25 More high-level ways to safely handle complex multi-threading scenarios.

# bill said on August 2, 2007 1:20 PM:

Why do people dislike vb so much??Isn't the purpose of it to make things easy as possible for the programmer

# VBTeam said on August 2, 2007 5:23 PM:

Wow, that's so awesome, I love how people are engaging! You are helping us do our job better, thanks for doing that!

Keep posting so that we can get as many opinions as possible and identify what are really the most important features for the VB community!

# Boris Prpic said on August 2, 2007 9:19 PM:

$30 - Implicit casting

$40 - Case insensitivity

$30 - Great IntelliSense in VS2008

===

$30 - Maintain parity with C#

$50 - Portability to Linux :)

$20 - Do something to VB reputation

# ABO said on August 4, 2007 11:17 AM:

$50:

Instead of getting rid of the underscore, perhaps leave it up to the editor to add it automatically when I end a line with comma or ampersand etc.  So I second the idea above to leave it up to the IDE to do the code formatting  when splitting up across lines.

$50:

Automatic properties - I would have expected them in VB long time ago

# Ken said on August 5, 2007 10:03 AM:

I like it how it is right now.  I'd pocket the $200 bucks.

# Wallclen said on August 5, 2007 6:17 PM:

I would give $100 to have an VB check to see if my system had the required componets for a new project i'm considering working with, and then retrieve them if needed for what ever system I was on. Strickly for developers systems.

# Fduch said on August 6, 2007 8:43 AM:

$5 ability to kill My infrastructure for Class Library projects without manually editing project files.

$10 C# iterators

$20 better array and collection initialyzers

Dim a as String()()={{"a","b"},{"c"}}

Dim b as Point()={(x1,y1,z1),(x2,y2,z2)}

$10 keyboard shortcut to show types/namespaces list to write some static metod call

$10 for less bright ASP.Net color scheme. (I swear I saw it the first time I installed Beta2!)

$20 I don't know how it can be done, but... underscore!

$25 better anonymous methods, lambdas and expression trees support. And it would be really cool if I could get expression tree from my existing function and modify it

# CG said on August 6, 2007 2:00 PM:

$50 - leave current features alone (except to add or fix functionality)

$20 - make the TextFieldParser class part of the BCL

$30 - add "Treat Consecutive Delimiters as One" to the TextFieldParser class (think Excel)

$40 - ability to use types declared in the current project to My.Settings

$60 - show available shadows/overloads/overrides on ALL available methods/properties within context when keyword is typed (similar to overrides keyword) instead of having to lookup the signature of the item you are trying to shadow/overload/override.

# Leo Brown said on August 6, 2007 2:26 PM:

I would give $100 for a more comprehensive combo box that would do columns, column sorting along with type ahead feature.  

# Denise Moore said on August 6, 2007 10:38 PM:

I would spend $100 on making things simpler.  For example, I tried to use VB Express 2005 to create an .EXE file for our internal use.  Where did the created .EXE file go?  The IDE was little help.  And, no, it didn't actually produce an .EXE file but deploy and manifest files.  I finally (sort of) figured it out, but with little help from the VB IDE.  Another example, the process of using databases seems to have changed in a major way.  Using the help features hasn't produced much of actual help, though apparently there's a powerful new super helpful feature called the Binding Component.  A clue!  (I hope.)  Because the data samples of the 101 Code Samples are installed somewhere, but how to actually access them isn't clear ...  Sigh.

# Graeme Williams said on August 7, 2007 4:49 PM:

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

# Alex Loret de Mola said on August 13, 2007 5:39 PM:

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.

# Nigel Vandyk said on August 13, 2007 6:05 PM:

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.

$10

That would be $200 well spent!

# KG said on August 14, 2007 5:22 PM:

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

# Stephen said on August 20, 2007 2:18 PM:

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

# Denny said on August 21, 2007 3:51 PM:

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

Thanks!

# KG said on August 21, 2007 5:27 PM:

I forgot. I also love project imports and background compilation in VB. It would be nice to see those in C#.

# aapje said on August 25, 2007 5:30 PM:

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.

# Ben said on August 27, 2007 3:30 AM:

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

New Comments to this post are disabled

This Blog

Syndication

Page view tracker