Comments
bruce.armstrong wrote: Somebody just said it better than I did, and with more chops to say it: Open Letter to Mark Zuckerberg, Sheryl Sandberg & Facebook Mobile
Cloud Expo on Google News

SYS-CON.TV
Cloud Expo & Virtualization 2009 East
PLATINUM SPONSORS:
IBM
Smarter Business Solutions Through Dynamic Infrastructure
IBM
Smarter Insights: How the CIO Becomes a Hero Again
Microsoft
Windows Azure
GOLD SPONSORS:
Appsense
Why VDI?
CA
Maximizing the Business Value of Virtualization in Enterprise and Cloud Computing Environments
ExactTarget
Messaging in the Cloud - Email, SMS and Voice
Freedom OSS
Stairway to the Cloud
Sun
Sun's Incubation Platform: Helping Startups Serve the Enterprise
POWER PANELS:
Cloud Computing & Enterprise IT: Cost & Operational Benefits
How and Why is a Flexible IT Infrastructure the Key To the Future?
Click For 2008 West
Event Webcasts
Opinion: Why C# Is Not a "Better" Language Than VB.NET
"People who talk that way about VB.NET are confusing three issues," says Michael Stiefel

When the speakers on the .NET track of SYS-CON's Web Services Edge 2005 East conference got together, Carl Franklin and I were talking about why people think that C# is the "official language" for .NET.

I told Carl that, even though most of my consulting is in C#, I think that attitude is wrong. I believe it is important to elaborate why I feel this way.

People who feel that VB.NET is an inferior language to C#, or that somehow C# is a "better language", or the "official language" for accessing the .NET Framework Class Library are just plain wrong. My personal opinion is that I prefer C# to VB.NET because I like the compact syntax among other things, but that is a personal judgement.

People who talk that way about VB.NET are confusing three issues.

First, suitability to access the Framework Class Library (FCL). Every example in my book Application Development Using C# and .NET has been translated into VB.NET and works exactly the same way. I have used the same courseware for both C# training and VB.NET training with the only difference that the examples were in the different languages. From the point of view of the FCL, everything C# can do, VB.NET can do as well.

Second issue: suitability to a given task. Equality before the FCL, or the Common Language Runtime is not everything. Perl.NET can do things that C# cannot. Does that make Perl.NET a better language than C#? No. It just makes it a better choice in some cases. If you need to use unsafe mode, you need C#. You cannot overload operators in VB.NET. You might find VB.NET's late binding feature more convenient than using the reflection API in C#. You might like background compilation in VB.NET. It is is possible, that for certain features the IL that C# generates is more efficient than the IL that VB.NET does. I do not know if this is true, but even if it is, it probably does not matter for most applications. After all, in some performance situations managed C++ is better than C#. For people interested in the differences between the languages look at O'Reilly's C# and VB.NET Conversion pocket reference.

FInally: de gustibus non disputandum est, there are matters of personal preference. I like C#'s compactness. I think it has certain advantages, but that is a matter of taste. Taste is important even in technical matters, but do not confuse taste with other factors, or mistake taste for intuition.

I wish VB.NET programmers a long and productive life. VB.NET programmers should not feel inferior.





[Read Michael Stiefel's blog, on which this Opinion piece is based, here.] 

 

About Michael Stiefel
Michael Stiefel, principal of Reliable Software, Inc. is a consultant on software architecture and development, and the alignment of information technology with business goals. His current work involves training in distributed applications development, and in software best practices, in .NET, C#, Web services, C++, SQL Server, COM, DCOM, and MTS. He advises on IT strategy and planning, including budgeting, hiring, and growth management.
Michael is involved with design and implementation of middle-tier and back-end components for transactional n-tier Internet and Intranet applications including Web services. He also is responsible for requirements analysis, project plan development, and design document development. He serves as an Expert Witness for intellectual property cases.

Stiefel was a Principal Software Engineer for Prime Computer, developing a mechanical CAD/CAM database system. He also worked for Microsoft assisting their Fortune 500 clients in developing client/server solutions.

He is a Visiting Scholar at Massachusetts Institute of Technology in the Science, Technology and Society Program and conducts undergraduate seminars on the practice of engineering.

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1

It depends alot on which language you used before coming to .NET platform. VB programmers are more comfortable with VB.NET while C/C++ programmers are more comfortable with C# because of syntax.

It's too bad that VB.NET has to fight against the reputation of VB6 which preceded it. MS truly rebuilt VB.NET to be a world-class development language yet it still has the reputation of being a second-class language. While I agree that C# gives you a little more functionality than VB.NET (as mentioned earlier), it's a pretty small difference that is probably only utilized by less than 5% of the C# developers.

I think the languages are close and I think programmers should be able to pick one or the other with impunity:

http://www.rogerjack.info/2004/10/programmer-and-his-languages.html

{{{ Good article and the point on "fit for purpose" is well made. However, look at the way even MS positions VB programmers. VS 2005 IDE has no support for re-factoring in the VB.NET profile. According to some MS people this is because VB folk do more RAD and less hardcore components and re-factoring is more suitable for component development hence is only available in the C# profile. }}}

Santosh, you say you aren't a VB programmer. Why not let VB programmers speak for themselves.

Good article and the point on "fit for purpose" is well made. However, look at the way even MS positions VB programmers. VS 2005 IDE has no support for re-factoring in the VB.NET profile. According to some MS people this is because VB folk do more RAD and less hardcore components and re-factoring is more suitable for component development hence is only available in the C# profile. I am not a VB programmer, but i do think this is quite insulting to those developing components in VB.NET. Can you not develop pwerful class libraries in VB.NET? They even didnt have XML comments in VS2003 for VB folk. Why all this discrimination from MS itself?

I totally agree. The languages are more less exchangable.
But: If I'm looking for a high skilled OO programmer (who's really an OO expert) it's way much easier to find such a developer in the C# world. Because most of the C# developers have been C++ or Java developers before (or still do it). They use OO languages for a long time and are really high skilled.
VB.NET developers very often come from VB. Nothing against VB developers. They write great software. But comming to the OO skill, very often it's quite new for VB programmers.

That's why I prefer C# programmers. Because often, they are more skilled regarding to OO.

In VB.NET, you cannot create user controls for the Compact Framework. In VB.NET, you can't do implicit or explicit conversions. In VB.NET, you can't do operator overloading. I write commercial components in C# because C# has slightly more capability. I used to use VB.NET but there are just some things you can't do with it. VS.NET 2005 will close the gap somewhat.


Your Feedback
Sameer Rafiq wrote: It depends alot on which language you used before coming to .NET platform. VB programmers are more comfortable with VB.NET while C/C++ programmers are more comfortable with C# because of syntax.
Brian Bischof wrote: It's too bad that VB.NET has to fight against the reputation of VB6 which preceded it. MS truly rebuilt VB.NET to be a world-class development language yet it still has the reputation of being a second-class language. While I agree that C# gives you a little more functionality than VB.NET (as mentioned earlier), it's a pretty small difference that is probably only utilized by less than 5% of the C# developers.
Roger Jack wrote: I think the languages are close and I think programmers should be able to pick one or the other with impunity: http://www.rogerjack.info/2004/10/programmer-and-his-languages.html
grundSaft wrote: {{{ Good article and the point on "fit for purpose" is well made. However, look at the way even MS positions VB programmers. VS 2005 IDE has no support for re-factoring in the VB.NET profile. According to some MS people this is because VB folk do more RAD and less hardcore components and re-factoring is more suitable for component development hence is only available in the C# profile. }}} Santosh, you say you aren't a VB programmer. Why not let VB programmers speak for themselves.
Santosh Benjamin wrote: Good article and the point on "fit for purpose" is well made. However, look at the way even MS positions VB programmers. VS 2005 IDE has no support for re-factoring in the VB.NET profile. According to some MS people this is because VB folk do more RAD and less hardcore components and re-factoring is more suitable for component development hence is only available in the C# profile. I am not a VB programmer, but i do think this is quite insulting to those developing components in VB.NET. Can you not develop pwerful class libraries in VB.NET? They even didnt have XML comments in VS2003 for VB folk. Why all this discrimination from MS itself?
Claudio Grazioli wrote: I totally agree. The languages are more less exchangable. But: If I'm looking for a high skilled OO programmer (who's really an OO expert) it's way much easier to find such a developer in the C# world. Because most of the C# developers have been C++ or Java developers before (or still do it). They use OO languages for a long time and are really high skilled. VB.NET developers very often come from VB. Nothing against VB developers. They write great software. But comming to the OO skill, very often it's quite new for VB programmers. That's why I prefer C# programmers. Because often, they are more skilled regarding to OO.
Jon Person wrote: In VB.NET, you cannot create user controls for the Compact Framework. In VB.NET, you can't do implicit or explicit conversions. In VB.NET, you can't do operator overloading. I write commercial components in C# because C# has slightly more capability. I used to use VB.NET but there are just some things you can't do with it. VS.NET 2005 will close the gap somewhat.
Latest Cloud Developer Stories
Navigating the complex web of regulatory and compliance requirements related to the processing and storage of sensitive enterprise data in the cloud is a huge challenge for business. The cloud is borderless – so how do you cover your business risk and security requirements when y...
As a Bronze Sponsor of Cloud Expo New York, HP is offering special passes to SYS-CON's 10th International Cloud Expo, which will take place on June 11–14, 2012, at the Javits Center in New York City, New York. HP is a technology company that operates in more than 170 countries a...
The latest generation of cloud computing is now capable of addressing the needs of the enterprise mission-critical applications. These applications require computing infrastructure that is secure, optimizes performance, and is highly resilient. In his Opening Keynote at the 10t...
The convergence of cloud and mobile trends has created demanding new challenges for IT departments to support global users accessing applications from many different devices. In addition, as more mission-critical applications are deployed to the cloud, sensitive data must be prot...
As an exhibitor at Cloud Expo New York, AT&T is offering special passes to SYS-CON's 10th International Cloud Expo, which will take place on June 11–14, 2012, at the Javits Center in New York City, New York. AT&T Inc. is a premier communications holding company and one of the mo...
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON Featured Whitepapers
ADS BY GOOGLE