What’s on my mind for VB10 (and yours?)

WARNING: This is a speculative post. Caveat emptor.

Last week, one of the VB MVPs asked on a private alias what our thinking was about VB10. As I kind of indicated in my previous entry, I don’t think we have a clear idea yet of what’s going to be on the table for the next rev-VB 2008 was kind of an aberration in that LINQ was in gestation long before VB 2005 even shipped. But I can say what’s at least on my mind:

  • Hosting or, more generally, opening up the compiler services to the outside world.
  • Decreasing lexical “noise” when looking at VB code.
  • Increasing the extensibility of the language so that it takes less work to extend the language and can be done by libraries (Ruby is an example of what I’m thinking of here, but only a general example).
  • Addressing UNDONE tasks from Orcas (object initializers, statement lambdas).
  • Addressing persistent annoyances (line continuations is a good example here).
  • Addressing whatever else comes up from the community as we release VB 2008.

I know that I’ve already added the usual caveats above, but I want to make double clear this is just what’s on my mind at the moment-in other words, things that I’m personally thinking about. These are not official team priorities, planned for the next rev, or anything like that. The next version could look radically different than the list above. I should also add that I mostly think about the language, so that’s why this list doesn’t talk about the IDE.

I’d be interested (in keeping with the last bullet point) what people might be specifically in for the next release. What’s at the top of your list these days?

63 thoughts on “What’s on my mind for VB10 (and yours?)

  1. Fduch

    1) !!! iterators like the ines in C# (I even invemted them myself not knowing C#ers got them long ago)

    2) Lambdas that can do everything anonymous metoda in C# can do.

    3) initializers

    P.S> David, that’s already done. Your so-called "VB7" is VB6. It’s even supported on Vista while the rest of VS6 is not. It’s great isn’t it?

  2. fclm

    1)Almost everything above.

    2)Visual Basic as small language without ‘obscure corners in grammar’, unknown/redundant features. No ‘Module’/’Class’; just ‘class’. No ‘Function’/’Sub’; just ‘def’. Etc.

    3)Indexers syntax by square brackets.

    4)’MyClass.new’ instead of ‘new MyClass()’.

    5)Enforced organization like ‘shared’, ‘private’, ‘protected’ being applied for a group instead of individually and being declared no more than once in per class.

    6)Type inference made to the edge, like in Boo.

    7)Some features constructed inside the language like List, Dictionary, Random, print…

    (4) and (5) would make OOP a lot easier for beginners.

  3. fclm

    Editing my previous post:

    On item (5): ‘shared’ be declared no more than once per class. ‘private’/protected may be declared twice(once for the shared sector and once for the non shared). ‘public’ as default, would be forbidden to be declared.

    On item (7): Include Python’s tuple(‘return var1, var2’).

  4. Joshua Frank

    String literals like in PHP:

    Dim MyString = "Value"

    Dim OtherString = "This is a string containing {MyString}"

    OtherString –> "This is a string containing Value"

    String.Format is sometimes really tedious.


    Also, multi-line strings:

    Dim (or Const) SomeString = _

    "Line 1

    Line 2

    Line 3"

    You can do this with string concatenation, but having to append "& vbCrLf & _" to every line is a pain.

  5. Joshua Frank

    Two very high priority items that should work but don’t and have no decent workarounds:

    1. Lambda’s that don’t return values (i.e. Action(Of T)), without which ForEach is less useful than it should be.

    2. Multi line lambdas. Some things just can’t be expressed in one line, no matter how clever you get with extension methods….

  6. Steve B

    I agree with David on all the VB.COM comments. I have been working in both .NET and VB Classic for 7 years (?) now and I still turn out smaller, faster, easier to deploy applications in Classic than .NET. That’s pretty sad consider .NET has been through several revisions now.

    That said one thing that is still my largest gripe in .NET development. Bring back the SDI interface. Even on my 1600×1200 screen I can’t see as much code as I could when I could maximize just the code window at 1024×768 in 1999. Let me float all the windows separately so I can access my desktop or keep a notepad visible. I truly believe that whomever thought forcing the MDI interface on the developers had no experience actually developing. This is the #1 reason I curse the existence of the IDE team on a daily basis. 🙂

  7. Paul

    1. Unsafe code blocks (I still live in hope)

    2. Compiler Extensions which can be created in classes (Why of why are they only able to be created in the old vby (and never used) modules

    3. Compiler Extensions to suppot can be shared members to so we can extend classes like Debug & SystemInformation etc.

    4. Select Case for objects

    5. Or ing and Anding like (x+=1) so (or similar) syntax may look like x Or=&h1, x AndNot=&h2 etc.

    6. Comments inbetween statements

    Foo(True ‘Set Active State To True’, False ‘leave this as false’)

    7. Line continuations "_" should be scrapped where possible. i.e. functions, method calls etc

    8. Do not under any surumstances include and of the rubish that was in vb6 like none zero based arrays. It’s fantastic knowing that everything starts at zero.

  8. RRVenkat

    Well. Too many C, C++, and Java guys moved to .NET platform. Inturn adapted C# as future. Now everywhere we see C# samples, C# articles, C# websites blah blah… VB is turning to second class language. Somebody working in both languages know C# has atleast one or few keywords which VB is missing or tougher to get around. Why???
    New requirements is different. Do we see future in existing features in VB terms? In VB terms we should have more easier way to get a silverlight 2 application databinding working. But the whole architecture to get databinding (LinqtoSQL) into silverlight 2 is turning to C# way of doing. Does all VB people like the way??? NO!!!
    Do we have a wizard yet to generate a silverlight 2 app from SQL server with workflow implementation??? This is how it should have been!!!
    Till date how easy to implement themes???
    Does any middle class VB developer still use lamda expr in real life?
    Can a simple program to capture video memory as image be displayed in a simple image control like the way we did until VB6? Isnt it becoming C# made to look somewhat like VB? Justify!!!
    What new features we want? This question is an eye wash. MS is going in the direction to push VS Team Foundation server adding many collaborative features. But in real WYSIWYG of VB is extracted out called Microsoft Blend!!! and sadly stripped off in main IDE!!! for people who worked in VS2008 .NET3.5 and .NET3.5SP1 how do you work with properties and use mouse on the design area???
    How easy to create an IVR program compared to VB6 and speachSDK5.1?
    How easy to direct voice input into AT commands to voice modem? How easy to automate telephone?
    How easy to make or use Barcode / RFID ?
    Printer.Print ???
    Silverlight 2 application with Windows authentication or login management using linq to Sql and login controls???
    … many many many. Working in VB language since 1995…Dont i deserve to demand more???

  9. Pingback: Daniel Stolt's Blog

  10. Pingback: Daniel Stolt's Blog

  11. Shimmy Weitzhandler

    Entities (entity framework should be able to inherit from external base classes and provide functionality to override/overload etc. existing methods, functions and properties.

    It’s really really important.

  12. Deny Fernando

    i hope vb 10 have new feature to deploying/converting winform application to webform (web application, ASP) like the feature in Power Builder 11.0. Not just the feature like click once, but more simple and powerfull.


Leave a Reply

Your email address will not be published. Required fields are marked *