Home
Archives
About us...
Advertising
Contacts
Site Map
 

ruby in steel

 

  The Microsoft Interview
   Bitwise talks to VB Product Manager, Jay Roxe
Jay Roxe See also:
Dermot Hogan on 'The Strange Death of Visual Basic'
Visual Basic:: Past, Present Future
"I have to confess that I rather like VB .NET"
(Editorial)
Everything has to come to an end at some time. So why are some people kicking up such a fuss about the phasing out of VB6? We asked Microsoft Product Manager for Visual Basic, Jay Roxe, to respond to users' concerns. Here's what he had to say....

bitwise: Previously, VB had a clear and distinct advantage over C++ for RAD. Now, there seems little to choose between C# and VB .NET in this respect. So (bearing in mind that, in the words of the head of the C# Quality Assurance Team, Eric Gunnerson, ‘C# is the native language for the .NET Common Language Runtime’) why would anyone choose VB .NET over C#?

Jay Roxe: As somebody who worked as a developer on the CLR team for more than 4 years, I can say that both are great languages. Both are designed to provide the full-power of the .NET Framework to developers, but there is a difference in philosophy. C# has been targeted at the more-code focused developer, while VB is targeted at a developer who will work with the tool more extensively while crafting their code. You can see this in Visual Studio 2005 – C# has put investments into things like iterators while Visual Basic has invested in features like AutoCorrect and the My namespace. Both languages are picking up features like Generics, Edit and Continue and the new drag-and-drop data binding. VB 2005 is the natural choice for VB6 developers that want a single environment that can handle the challenges associated with Windows, Web, Office and mobile development.

I’d also like to take a second to address Eric’s quote and the idea that there is a native language for the .NET Common Language Runtime. Portions of the CLR are written in C# and portions are written in VB – both languages are first-class citizens on the CLR as are C++, J# and many others. There is no native or preferred language for the CLR, as a matter of fact there are over 90 languages supported by VS, all with equal access to the same great framework.

bitwise: Many VB 6 people feel that they have, in effect, been dumped by Microsoft. Why won’t Microsoft support VB6 for as long as people are using it? After all, IBM is still supporting O/S2! What can we deduce from this about the relative attitudes of IBM and Microsoft towards their customers?

Jay Roxe: Visual Basic 6.0 is still supported by Microsoft. This past March, Microsoft transitioned from free to paid support for Visual Basic seven years after the product originally released. We are providing extended support through March 31, 2008 and then custom support agreements through March 2012. The important thing to note is that Microsoft is still supporting Visual Basic.

If you want to compare the VB support lifecycle to that of OS/2 or other IBM software, do it carefully. According to IBM’s website, the most recent version of OS/2 Warp shipped in December 2001 and will be supported through December 2006, for customers on current maintenance contracts (in other words, they are paying annual fees). This is two years shorter than Microsoft provided free support for VB6 and Microsoft will continue to provide paid support for another 7 years. IBM’s stated support policies lag Microsoft’s, and if you look at IBM’s actual historical support record for the most current and recent mainstream products, the total lifecycle averages 40 months – less than half of the period that Microsoft provided for free support on VB6.

bitwise: In an interview for Bitwise, David Intersimone from Borland commented, “recently Microsoft announced that they weren't going to do any more work on VB 6 or beyond for Win32. That really everybody should develop to .NET. That's their decision to tell their customers. What we're telling developers is, you can still use Win32 development and .NET development at the same time. That we know the reality is developers and users are going to be using native code and managed code for many years to come." Borland has gone to great lengths to offer this support - they even wrote a version of their Win32 VCL class library for .NET so that, much of the time, old code can be loaded and compiled into .NET with few (if any) alterations. All that Microsoft did was provide a migration wizard which, when operating on real world code, produces masses of comments but precious little migration. If Borland can offer first class migration support for Delphi developers, why can’t Microsoft offer the same support to VB developers?

Jay Roxe: We’re glad to see that Borland also recognizes the tremendous advantage that developers gain by programming on the .NET platform.

Visual Basic .NET developers have been doing amazing things. We’ve created a number of case studies from developers that have had success in bringing their skills and code forward and in doing new development using VB.NET. One interesting example is Crutchfield, an online electronics reseller, who successfully integrated three disparate Visual Basic 6.0 systems using Visual Basic .NET. Developers can find out more in the case study:
http://www.microsoft.com/resources/casestudies/CaseStudy.asp?CaseStudyID=16444

In terms of developers who have successfully upgraded their skills to Visual Basic .NET, I’d suggest looking at the American Healthway’s case study at:
http://www.microsoft.com/resources/casestudies/CaseStudy.asp?CaseStudyID=16380

bitwise: On a more technical level, the support for unmanaged memory in VB .NET is pretty poor. C# has "unsafe" code for this purpose. With VB .NET you have to go around the houses to read a byte stream from a USB device for example and convert it into a structure. There is no equivalent to the VB 6 Fixed String concept which could be used to define an array of bytes or whatever at a given offset within a structure. Why not?

Jay Roxe: The overall assumption shared by this question, and many of the C# questions in this interview, is that C# is the gold standard for .NET languages. At Microsoft, we don’t believe that this is true – every language is a first-class citizen on the .NET Framework. Indeed, when it comes to the unsafe code question that you asked above, you could equally well have asked the C# team why they chose not to support filtered exceptions, the My namespace, or any of the other VB-specific features.

The purpose of any high-level programming language (and I include VB6, VB.NET, C# and many others in this group) is to remove developers from the challenges associated with directly managing memory. Huw, you said this well in your article for DNJOnline earlier this year(http://www.dnjonline.com/article.aspx?ID=mar05_vbvscsharp): “The trouble with pointers is that they are inherently unsafe. They make it easy to corrupt memory, overwrite data and crash your applications.”

bitwise: In .NET 2.0, VB .NET does not handle generics in the same way as C# - it is considerably less functional (specifically there is no yield keyword or equivalent in VB.NET so iterating over a generic list is less elegantly handled, requires a good deal more coding and provides no extra benefits). Surely, this is symptomatic of VB.NET’s status as a second class language. Comments?

Jay Roxe: The yield keyword is unrelated to generics; it applies to iterators which are a different feature. The implementations of Generics in Visual Basic and C# are equivalent and both provide a full-featured implementation. We believe that generics will prove to be a very powerful feature for developers targeted the .NET Framework interested in writing reusable and strongly-typed code.

The C# team chose to invest in iterators, which is a feature that makes it easier to implement the IEnumerable or IEnumerator methods. Iterating over the collection is usually accomplished using the For Each (or foreach) construct and has the same functionality in both languages. Iterators are useful for developers who are implementing their own collections. However, with the introduction of generics, I believe that many developers will find that they are authoring fewer of their own collections and relying more on the collections which we have provided within the .NET Framework.

The Visual Basic team chose to invest in a number of different features such as the My namespace, AutoCorrect and others. The My namespace is a powerful addition to the Visual Basic language that provides a speed dial into the .NET Framework, extensions to the application framework and access to common application requirements such as Forms, Resources and Settings.

I don’t believe that differences in the languages make one a second-class citizen. The teams have chosen to invest in different features, but this provides advantages to developers because it gives them a better opportunity to select the tool that’s right for the job.

To see the roadmap for the languages going forward, I would suggest that developers read the Developer Tools Roadmap at: http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx

Developers looking for information specifically on VB 2005 and C# should look at the respective MSDN developer centers at http://msdn.microsoft.com/vbasic and http://msdn.microsoft.com/vcsharp.

bitwise: Why did Microsoft throw out widely used language constructs such as control arrays and GoSub? The functionality contained in these VB6 language constructs are not easily replicated in VB .NET. (Note, here I am specifically referring to a VB6 ‘control array’ and NOT an array of Controls which is in both VB6 and VB .NET).

Jay Roxe: Visual Basic .NET offers developers many more language constructs than were available in previous versions of the product – examples of this at a micro-level include XML documentation, unsigned types, and object oriented development.

Examples at the macro level are more obvious and include the ability to create Windows, Web, Office and Mobile applications using the same tool and set of skills. Today’s Visual Basic is the best tool for the developer looking to create those line-of-business applications.

When we started the design process for Visual Basic .NET 2002, we looked at the most common errors that had plagued developers in earlier versions and on which they’d sent us the most feedback. GoSub was one of the things that was most likely to cause difficult-to-diagnose bugs in programs. After taking community feedback for several years, we made the decision to remove GoSub.

In many cases, developers can get the same functionality offered by Control Arrays by defining a single event handler for a large number of controls – something that is elegantly handled in VB due to the Handles clause. We’ve also encountered places where there are a few more difficult cases and are working with developers to address those challenges.

Starting with Visual Basic .NET, we’ve published the language specification. Included in this specification is a piece on the definition of language compatibility. I’d invite interested developers to take a look at that specification at:
http://www.microsoft.com/downloads/details.aspx?familyid=ca6e29d9-47d5-472a-9e65-7d9e4e98be0f&displaylang=en.

bitwise: Finally, several long-term VB developers who have contacted Bitwise have told us that they no longer feel able to trust their business interests to VB and are either considering or are actually in the process of transferring development to other languages. Obviously for companies which may have developed many hundreds of thousands of lines of VB code this necessarily involves a huge amount of effort and considerable expense. But, given the lack of response by Microsoft to numerous complaints from sections of the VB community, they are making the correct decision. Aren’t they?

Jay Roxe: We’ve spent a great deal of time working with the community including our MVPs and others to ensure that Visual Basic continues to evolve to meet their development challenges. Ask any VB.NET developer if they would ever go back to VB6. Developers and corporations that have made the switch report tremendous advantages in terms of both developer productivity and the performance of their applications. For example, a study by Doculabs showed that a VB .NET/ASP .NET application was three times faster and supported twice as many users than the same application written in Visual Basic 6.0 and ASP. Any seasoned Visual Basic 6.0 developer will tell you about their deployment headaches. With Visual Basic .NET, simply copy the application to the machine and it works! Visual Basic 6.0 applications can break other VB6 apps or even interfere with the system. By simplifying deployment challenges, Visual Basic .NET and the .NET Framework reduce costs and workload for most IT organizations.

With advances in the industry and increased spending on IT budgets, developers are expected to address ever more complicated technical challenges. For example, more developers are being asked to create solutions that integrate Windows, Web and Office solutions. Mobile solutions are gaining an increasing amount of popularity. When we looked at what developers are being asked to do, we knew that we needed to enable Visual Basic developers and companies that had bet on Visual Basic to address those challenges.

Microsoft is proud to be a part of the tremendous community that has grown around Visual Basic 6.0 and Visual Basic .NET. By many estimates, Visual Basic is the most used language in the world. When we evaluated the decision to move the Visual Basic language onto the .NET Framework, we committed to making Visual Basic a first-class language on the platform.

We are continuing to demonstrate our commitment to this community with many of the programs that we’ll be executing over the next year. We are working extensively with developers to ensure that they can continue to utilize the investments that they have made in Visual Basic 6.0 solutions. With Visual Basic 2005, we are introducing the concept of RegFree COM which allows developers to utilize COM components in their Visual Basic 2005 code without having to register the component on the local machine – indeed they can even run different versions of the components side-by-side on the same machine. This enables developers to reuse components that they wrote in Visual Basic 6.0 without facing deployment challenges. We’re also launching a series of worldwide educational events to help developers bring their skills and code forward to Visual Basic 2005. This autumn, Microsoft’s Patterns and Practices group will be publishing best-practices guidance on moving applications from Visual Basic 6 to Visual Basic 2005 including an assessment tool designed to help developers and their managers estimate the cost of making the transition.

I am firmly committed to helping developers to be successful in transitioning their skills and code from Visual Basic 6.0 to Visual Basic .NET. Microsoft is continuing to invest in the language and tools for VB.NET. I would invite developers who have suggestions on ways that we could continue to support them in this transition to mail me directly at jroxe@microsoft.com.

Developers interested in trying Visual Basic 2005 can download Visual Basic 2005 Express edition at http://labs.msdn.microsoft.com/express.

Some sites that developers may be interested in looking at include:
Doculabs comparison between VB6/ASP and VB.NET/ASP.NET:
http://msdn.microsoft.com/vbasic/productinfo/advantage/default.aspx
The Visual Basic 6.0 Resource Center:
http://msdn.microsoft.com/vbrun.

 

July 2005

 


Home | Archives | Contacts

Copyright © 2006 Dark Neon Ltd. :: not to be reproduced without permission