Fog Creek Software
Discussion Board




How popular is VB .NET versus C#?

It looks like I'll be considering .NET for a future project, probably later this year. We have a large amount of legacy  VB6 code we'd like to migrate across if possible (mainly business logic sitting on top of databases and some C++), therefore the first thought was to do a straight port of that to VB .NET.

However, I'm no longer convinced that going down the VB . NET route is an obvious choice.

From reading about various comments on here and elsewhere, I get the following conclusions :

1) The difference between VB.NET and C# is minimal, merely minor syntatical differences. Therefore it's really not much difference technically picking one language over the other.

2) The difference between VB6 and VB.NET is so large your average VB6 programmer will have a large learning curve to keep up, and spaghetti VB code will be so hard to port that you might as well rewrite it. Therefore there's no clear advantage to using VB .NET for backwards compatibility with code.

3) C# seems to be a more popular language than VB .NET, certainly if the number of jobs for C# programmers advertised versus the number of jobs for VB .NET programmers advertised has anything to go by.

Does this mean that ultimately C# will prove to be the more popular language, meaning support for VB .NET will wither and die? Should I think about doing training the VB only programmers up in C# instead?

What do you lot think?

Better Than Being Unemployed...
Thursday, July 31, 2003

Go with C#.  You might try the VB6 to VB.Net converter tools, but from my experience they don't work well with anything moderately complicated and you'll do a lot of rewritting anyway.  C# is the better langauge to learn in the long run.  It gets VB people more familiar with c style syntax which will aid them in understand C/C++ and Java. 

chris
Thursday, July 31, 2003

I've noticed an awful lot of jobs being advertised in VB.NET though -- isn't there something to be said for having experience in it? Or can you take c# experience and tell the interview, "well they're _practically_ the same"? :)

jedidjab79
Thursday, July 31, 2003

We use C#, and we'll require all code to be in C# (for consistency), but when we advertise for a software engineer, we don't mandate experience in a specific language. Experience with .NET is worth 98% of the effort, and the language syntax is something you can pick up quickly and easily.

Personally, I would learn both syntaxes. It's not that difficult. Dive into it and learn with one language, then at some point just switch to the other. You'll see that the syntax is a tiny, tiny piece of the equation.

Brad Wilson (dotnetguy.techieswithcats.com)
Thursday, July 31, 2003

Brad: I only wish the agencies that did screening were as understanding as you heh. You often end up with someone looking at a checklist going .. hmm.. no, this person has no VB.NET, just something called C#. <Toss>

</rant>

jedidjab79
Thursday, July 31, 2003

That's why I say learn both. Put both on your resume. Gets you by the screeners and to the person who actually knows that the differences (today) are meaningless.

Brad Wilson (dotnetguy.techieswithcats.com)
Thursday, July 31, 2003

Some good points there. One of my concerns is that if we want to hire next year, asking for only VB.NET programmers will mean agencies screen out perfectly capable C# programmers by mistake - as jedidjab79 says.

Is the syntax between VB.NET and C# so similar that you could write a utility that converts the code from one language to the other?

Better Than Being Unemployed...
Thursday, July 31, 2003

I think presumably you could ask for both VB.NET and C# programmers, and if you get a guy who's mostly done C#, and is reasonably competent, get him to switch to VB pretty easily.

jedidjab79
Thursday, July 31, 2003

One big reason C# is superior is seldom stated: it's case sensitive and unalterably strongly typed (no silly Option Exlicit/Strict options). Besides this I've noticed lots of little things that the C# compiler catches that VB compiler never will -- like uninitialized and unused variables.

I think migration from VB.old to VB.NET is a spin, you'll end up going through it line by line anyway (for the most part).

Steven
Thursday, July 31, 2003

Better Than Being Unemployed wrote, "Is the syntax between VB.NET and C# so similar that you could write a utility that converts the code from one language to the other?"

Well, there are utility programs out there that already do that.  I believe some of them are free.  Having said this, I don't know how good they are since I haven't used any of them yet.


Better Than Being Unemployed wrote, "However, I'm no longer convinced that going down the VB . NET route is an obvious choice."

I agree. 

I think most programmers do take into account the differences in syntax, however, if I was asked to advise a company on which programming language to standardized on, I would probably tell them to go with C#.  VB.NET doesn't have the same advantages over C# that classic VB had on C++.

Imo, the non-trivial effort required to port classic VB production code to VB.NET is a big problem and it is probably a big reason why many companies haven't been posting lots of VB.NET related job ads.

One Programmer's Opinion
Thursday, July 31, 2003

I had an interview last month where both interviewers insisted the "C#" on my resume was a typo.  They finally called in a programmer who verified that it was a language.  They knew what VB.NET was though.  I wish I was kidding.

Lee
Thursday, July 31, 2003

I would imagine that if MS (or third parties) are going to come out with future toolsets that are going to support VB6 migration, their primary focus would be VB.NET.

Just me (Sir to you)
Thursday, July 31, 2003

There are rumors that only C# will support generics. If this is true and MS intends to offer more support to C#, then C# is the way to go. Syntax, case sensitivity and ‘Option Explicit’ are non-issues.

19th floor
Thursday, July 31, 2003

19th floor,

The next version of VB .NET will support generics - see Microsoft's recent road map at :
http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx

I quote:

"Fourth, Whidbey will deliver a debugging experience that is both powerful and familiar to the Visual Basic developer. With the reintroduction of Edit and Continue, developers will be able to modify and test source code without stopping and restarting the debugging session. This iterative development and debug cycle, combined with advanced error correction and code analysis in break mode, provide developers using Visual Basic with the most powerful and flexible debugging experience ever. "

"Finally, for the more advanced Visual Basic developer, language enhancements include support for operator overloading, unsigned data types, inline XML-based code documentation, and partial types. In addition, developers using Visual Basic will have access to a type-safe, high-performance, compile time-verified version of generics that promote code reuse across a variety of data types."

Mark

Author of "Comprehensive VB .NET Debugging"
http://www.apress.com/book/bookDisplay.html?bID=128


Mark Pearce
Thursday, July 31, 2003

Generics will be included in VB.NET along with several other things that were missing from the quasi-beta version 1 of VB.NET.

No anonymous methods or compiler provided Iterators but these aren't exactly earth shaking improvements to C#. Still no pointers and unsafe code but those will never be added to VB and I prefer to use C++ in the remarkably few cases where it is necessary anyway.

I learned .NET using VB because I prefer the VB style and that's what I've been using for the last few years. But when I did a project using C# a few months later I was up and running with it in a couple of hours and had a good grasp of most of the advanced language constructs in a day or two.

So unless your project uses one of the _very_ few areas where one is more suited than the other (late-binding, extensive unsafe code etc.) then just choose what you and your team prefer stylistically. The extensive arguments about one being better than the other are total bullshit.

http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx

Stephen Martin
Thursday, July 31, 2003

The answer to your question depends on political factors, not technical ones. As many have stated, C# and VB.NET are, for the most part, identical as far as capabilities go.

I recently did a 1-week consulting gig at a local credit union. Their IT department was moving to .NET so they could do web service stuff easily. They wanted to use C# for their own resumes, but chose VB.NET because every credit union uses VB, and dropping sample code in C# on them would just confuse them.

It's factors like that you need to look at.

Chris Tavares
Thursday, July 31, 2003

Thanks Mark and Stephen.

All articles about future implementations of generics in .Net had only the C# word in them. It made no sense to support generics only in C# but probably the articles catered to a C++ market.

Still, is just me or the C# list of new features seems to be a little better defined and more useful to the avid developer?


The answer to this discussion seems to reside in these two quotes:

“With its focus on language innovation, C# will remain the language of choice for many framework designers and software architects.”

“Like its predecessors, Visual Basic Whidbey will focus on enabling developers to rapidly develop applications that span all tiers.“

19th floor
Thursday, July 31, 2003

"Is the syntax between VB.NET and C# so similar that you could write a utility that converts the code from one language to the other?"

Seems to me that I heard Lutz Roeder's Reflector would de-compile .NET binaries into either C# or VB.NET (I know for sure that Anakrino will de-compile into C#).

Brad Wilson (dotnetguy.techieswithcats.com)
Thursday, July 31, 2003

*Read this e-book:*

Daniel Appleman, "Visual Basic .Net or C#... Which to Choose." 

Availble from Amazon.com or Desaware.com.  It covers all of these topics in much greater detail. 

I have to agree with the book's conclusions -- it really doesn't matter.  Picking one boils down to a preference for case-sensitive language and C-style syntax vs. non-case sensitive language and VB-style block coding.  The languages have almost identical features and performance.  You can argue around the margins about which trivial feature one has that the other doesn't, but for 99% of your projects, it doesn't make a difference.  If your programmers are more comfortable with VB syntax, stick with VB.Net.

Both languages have strong support from developers and Microsoft, and VB will be around for a long time to come. 

Robert Jacobson
Thursday, July 31, 2003

I had an interview with Microsoft a bit back... At one point they specifically said they were only looking for C# developers -- not VB.NET developers. This kind of makes you wonder which language will get more attention in the future (or not).

I agree, both languages are pretty much equal, but VB and VB.NET will always be knocked as a "lesser" language for whatever reason (mosty likely because it's not more "C-like"). Myopic, yes, but it's definitely the reality.

VB.NET coder
Thursday, July 31, 2003

"Is the syntax between VB.NET and C# so similar that you could write a utility that converts the code from one language to the other?"

Unless you use features that are only available in one language and not the other (like unsigned ints, case sensitivity, shift operators, operator overloading, unmanaged code in C#,  modules, array Redim in VB.NET, etc. -) , the answer is YES.  The last project I completed in .net did not use any language specific features.

Note: using unsigned data types and two methods that differ only on case results in code that is not CLS compliant. In other words, vb.net can't create a class that inherits from a non CLS compliant class.

AEB
Friday, August 01, 2003

I have the feeling that MS puts more effort into C#, that was one of my main reason to switch from VB.

And I think it is just stupid to have two virtually identical languages. What's the point?

Finally I think MS lost a lot of VB programmers by waiting so long with Edit and Continue. By the time it arrives, I will be so familiar with C# that I don't think I will switch back.

Ruby.NET would rock!!

Thomas Eyde
Tuesday, August 12, 2003

Have you tried the Evolution Access to VB.NET converter?
You may find it interesting :-)

Gonch
Monday, March 15, 2004

Edit and Continue will work for C# too.

The unused and uninitialized warnings make C# a better language for cleaner, less buggier code.

Matthew Cameron
Monday, March 22, 2004

There's a good VB.Net to C# Converter available at:
http://www.vbconversions.com

David Crook
Wednesday, May 12, 2004

*  Recent Topics

*  Fog Creek Home