Michael Flanakin's Web Log

Comments and complaints on software and technology in general

  Home  |   Contact  |   Syndication    |   Login
  159 Posts | 18 Stories | 181 Comments | 497 Trackbacks

News

This weblog is no longer being maintained. For the latest, check out www.michaelflanakin.com!

Article Categories

Archives

Post Categories

Image Galleries

Miscellaneous

I don't know how many times I've read articles and opinions on the whole VB vs. C# conflict, but it's really getting ridiculous. This latest spat (1, 2) seemed to be started by three articles in Visual Studio Magazine: Patrick Meader's Why C# Developers Earn More, Juval Löwy's Pick the .NET Language for You, and Kathleen Dollard's VB.NET Provides Power and Productivity. Each article is a good read, but I must make a minor point: The guest "opinion" made by Juval is not an opinion.

I have talked to Microsoft personnel who have been confessing the future of VB to be very different than C#'s for nearly a year, now. You will find that, for the most part, the only people who say that VB and C# are the same, or any derivation of the idea, are VB developers. One point that everyone must realize is that most Microsoft developers working in .NET are using C#. This is for a reason. I will not say what that reasons are, but there are several. I have said it before, and I'll say it again: I don't think VB is going away any time soon. I do think know it has a different path, however. And, in this, Juval is right. He was pointing out the differences that will be instilled in the Visual Studio so that developers know what they're getting into. Microsoft is trying to lure VB6 developers to .NET by instilling more RAD features into the UI. Well, these are generally features that C# developers don't want. I'm not going to say that they're not beneficial, but C# developers tend to be more of the "coder" type, where as VB developers are more "drag n' drop" type. You can't deny it - you know it's true. These features will be included when you are working in VB projects, and the C# feature set will be included when working with those types of projects. This is basically transparent to the user and there aren't too many differences right now, but the point Juval is trying to get out is that you need to be aware of the future of the tool so that you choose a language accordingly.

Read the letters, if you get a chance. Either way, there are a few things I'd like to say in response to them:

  1. There was no reference to VB6 developers moving to C#, just C++ to C#. Most of the C# developers that I know, including myself, were using VB6 because of the job market - more jobs were available. I know that I personally chose C# for numerous reasons, which I won't get into here, but I also have to say that I'm not the normal VB6 developer - I understand and praised the introduction of OO with .NET. Most VB6 developers should not be programmers, in my opinion. To quote a great speaker (and, I may be off on this), "Giving .NET to VB developers is like giving razor blades to babies."
  2. As a prior VB6 developer, I made good use of COM objects and classes. While this did increase the complexity of the code, it also helped a lot. As a matter of fact, it was the only way to do business, in some situations. This was a very mild version of OO for reasons I'm sure we're all aware of, but it was still useful. And, with these COM objects comes the DLL hell that was claimed to not apply to most VB6 developers.
  3. VB was not originally intended to support classes, but one of these letters seems to say that, because of this, VB should not be used in an OO environment. I may be misreading the letter, but that has to be one of the most ignorant comments I've seen in regards to the VB-C# argument. Extending the language to support OO was not an issue. The problem with VB.NET is the legacy developers...yes, I said legacy.
  4. Nobody said that C# was intended to be an end-all, be-all solution to development. Granted, Microsoft would love it if that happened, but it won't, and nobody thinks that (I hope). VB and C# are Microsoft's focus because that hits their main audience. I don't think Microsoft will ever ignore the other supported languages, but you have to take it for what it's worth. And, a lot of that is marketing. But, the fact is that every .NET-supported language has its own lifecycle. Don't expect changes in one to be implemented in the other without a fight.

I can keep going, but I think I've said enough...for now. I personally think that C# is a better language and would suggest that anyone considering .NET look at C# first. I can give a considerable list of reasons for this, but that's for another day. Right now, I just want to leave you with this: take heed to Juval's foresight. With upcoming versions of Visual Studio, we will see changes and those changes will not be intended to align languages. Microsoft wants to market .NET as a way to support multiple types of development. If they can say that there is a .NET-supported language to support all major types of systems, they will. THAT is Microsoft's dream. Imagine: .NET on phones, toasters, computers, TV's, tanks, and planes. The land of embedded systems remains practically untouched by Microsoft. Do you think that they don't know this? Of course they do. And, they are trying to get there. By widening the purposes of different languages, Microsoft is able to push its technology as a more viable solution.

[Original post Tue Nov 04, 07:01:59 PM UTC]

posted on Friday, November 14, 2003 7:34 PM

Feedback

# re: C#-VB Rivalries 11/22/2004 11:19 AM Zini
I like your comment but in some ways you are perpetuating what you are refutting by saying that you are "not the normal VB developer". Because really I think you are the typical VB coder.

I disagree with you that most VB developers are the "drag n' drop" type. I think that is an incorrect broad sweeping assumption that many share but personally I have not seen much proof of it. This could be just my experience but I have come into contact with many different people as a consultant for 5+ years. I am\was a VB6 developer. Most (almost all) of the projects that I have worked on and created leverage quasi-OO features provided to developers using VB, DLLs and classes.

I would say that just because VB developers can leverage the drag N' drop and bound control functionality does not mean that all do it. In fact I would not call a drag and dropper a coder I would call them a hack.

I feel that the normal professional VB developer that I have known is one who understands coding, OO concepts and can (should) move to C#. Also, most of the projects and code I have seen in VB6 have not been spagetti code with ADODC bound controls and the like. Honestly (just as an example) I have never worked on a professional project that uses the Data Control.

You can drag and drop and use all the UI garbage Or you could just keep using the same generic Data Access Layer, File import export object, excel export object, etc etc etc... you coded once long ago and use it over and over again.

Which is what I and many (almost all) of the VB6 pros I know have been doing for years in VB5/6.

It is a fairly ignorant how many people perpetuate the idea that VB developers are all a bunch of sloppy, spagetti code writing morons who do not understanding anything about coding. In my experience those people (who code improperly) do not last long.... period.

I really think it is an almost techy-aristocratic-academic snobbery surrounding VB6. Its ridiculious...

The great things about VB6 is\was it is easier to train someone and get them up to speed on a project. It is\was faster to code UI and perform various functions. It had a great support base and help when searching on the web. Also because of the huge following the support base of coders was outstanding ... it is much easier to find someone to help on a project. Bottom line was VB6 made good business sense.....But those days are over.

That being said I have not even really wasted my time on VB.NET. My training, money time, projects beginning the first edition of .NET are in C#.

I think that C# is the future for Microsoft coders not VB.NET. Honestly from my experience, for the most part the only real difference to the coder in .NET (on a practical level) between C# and VB.NET is a bunch of syntactical differences and it is easier to find code examples in C#. I realize there are other differences but I am talking about the actual experience of coding.

Anyway I think the hayday of VB for professional developers ended with VB6. The sooner VB developers realize this and move on, the better. VB.NET is a concession, the differences are not huge now between C# and VB.NET but I believe they will become more apparent as time goes not. I believe VB.NET will become something for hobbyists and MS Office coders..... and C#\Microsoft will eventually rule the world...... just like Microsoft wants....

But that is just my opinion and I could be wrong.....

;-)



# re: C#-VB Rivalries 11/22/2004 7:11 PM KBeyer
You may laugh at this, but I actually began learned programming in Java. It wasn't until 2 years later I discovered VB6.

Obviously VB6 had better performance for Win Apps back in the day compared to java, and it was much easier to debug.

I wholeheartedly disagree with your assumption of VB programmers as 'not programmers'. VB is a great tool. I work in both VB and C#, and the C# compiler is still just a half effort compared to the VB compiler (if you have used both, you know what I am talking about) - hopefully the compilers will be on par in Visual Studio 2005.

I do agree on your point that the inclusion of legacy functions via the MicrosoftVisualBasic namespace does introduce the possibility of many vb6 coding methods to be brought into a .Net frame of mind, which is disastrous. Why include MsgBox when the MessageBox class exists? Well, because people moan and Microsoft listens.

I won't be as flippant to say VB.NET won't be around as long as C#. There are many places for the VB.NET developer in organizations that do not focus primarily on software tools or complete products. Many organizations pay well for an in-house VB.NET programmer to access and relay specific data. The previous company I worked for built an entire security incident program in VB, and its as slick as any ASP.NET web application out there.

If VB was destined for failure, it sure hasn't shown any signs of that. VB1-6 all met their audience and its use growed, despite the existence of Java and C++.

The whole point of .Net is to allow any language to be used as long as the IL is the same (or comparably the same), that's all that matters.






# re: C#-VB Rivalries 2/1/2005 7:56 PM Roger Jack
Some of you probably prefer C# over VB.Net. For what it is worth, we sell a commercial tool, C-Sharpener For VB, that converts VB.Net projects to C#.

# re: C#-VB Rivalries 7/17/2005 7:00 PM Justin
As a recent grad, and intern for a government agency, I have seen VB code before and from what I "tried" to follow, it seemed very messy and confusing.

But it could have been the fact that the guy didnt learn how to code correctly in school, because of the messy language of VB. The language is in my opinion not very structured and limited. In my opinion, VB was created for those who didnt want to learn C/C++ because of the complexity of the languages.

Microsoft should have removed VB from the .NET development platform to get VB programmers and everyone else, use to creating clean structured code in a more flexible, powerful language such as C#. I say, out with the old and in with the new.

# re: C#-VB Rivalries 8/2/2005 9:06 AM Paul Waldschmidt
The whole debate is pointless because C# and VB.NET both have their advantages.

Almost every solution I have created in Visual Studio.NET has included several C# projects and several VB.NET projects. The C# projects provide data layer support, interface implementation, and other structured backend architecture. The VB.NET projects provide the client interface and presentation layer. Why is "Drag N Drop" stigmatized? When I am preparing a nice interface for a clients, I prefer easy time-tested components to simply drop on and tweak. Is it your assertion that controls should be completely self built or at least in C#? It is much faster to work with VB.NET when designing UIs. The point of development is to provide customers with stable software that they WANT to use.

# re: C#-VB Rivalries 8/2/2005 10:36 AM Michael Flanakin
My only opinion is that VB is built tor RAD development while C# is geared towards coding. Nobody can truly argue this. By bringing the two languages together, they are both stifled. The main purpose of supporting more than one language is to provide obvious benefits for choosing one language over another. In my mind, if you want a quick one-time app for a demo or proof of concept, VB is perfect. If you want an app that has more back-end processing than UI, C# is better. Not that you can't do one or the other - honestly, you can do everything in assembly, if you want. I'm just saying that the languages are geared towards specific types of developers for specific projects.

# re: C#-VB Rivalries 4/18/2006 4:34 AM Peterson
It funny how C# programmers always seem to have the need to claim that C# is better than VB (for whatever reasons).
As mentioned in the post, for most part, its VB programmers that always say that C# and VB are equal.
To me, it sounds like C# programmers are insecure about their language of choice.

The "I have talked to Microsoft personnel" or "I know a guy at Microsoft, who told me a secret" statement, is getting kind of annoying. It’s always something people say when the need to give their own opinions a boost.

I’m not saying that people that makes such claims are pure lairs, but it’s clear to me that there is a fair amount of bulls**t involved at times.
Unless people can prove it, I don’t believe it.

# re: C#-VB Rivalries 4/18/2006 5:07 AM Michael Flanakin
It's not a need to claim C# is better. It's the pure fact that it is more standardized based on its roots in C/C++ and other industry language conventions. I'm not saying that VB isn't at all, but not it definitely strays. The point is that VB was and will remain to be intended for quick, small to medium sized projects. I'm not saying it can handle large projects - that would be an ignorant comment. I'm simply stating that the language was born to solve a problem - giving non-developers the ability to create/extend software...quickly.

The reason VB-ers always say the two are equal is because they're trying to boost the opinion of "their" language. C# has always been seen as better, so C#-ers would essentially be saying it isn't as good as industry opinion.

Let's not forget that the love for C# goes well beyond .NET. In my experience, I've found that C# is more favored in the open source community, too, via the Mono project.

Comments regarding discussions with Microsoft are meant to provide validity, but the fact is that not everyone at Microsoft knows what's going on. I'm no longer in the position, but I was in a position that was very much in-tune with Microsoft's plans for the development of .NET and several other tools focused around .NET. Everyone may know a guy who knows a guy; but some of us don't need our opinions boosted when we're stating fact. Microsoft, just like anyone else, switches positions as time goes on - it's called market agility - this is expected. Microsoft wants to take a stance with each of their languages. It makes sense from a business standpoint. Most developers can't grasp this because they're not business people.

BS runs rampant. I don't think anyone will disagree. But, I can tell you for one that I've dealt with BS from all angles in every corner... even from MS. It's the people that are spreading the word, not the company itself. You need to be smart enough to decipher the difference.

# re: C#-VB Rivalries 9/1/2007 9:29 AM Jason
Based on the above comment by Mike:

The link you refered us to states the following -

"Visual C# .NET may have a few more "power" features such as handling unmanaged code, and Visual Basic .NET may be skewed a little toward ease of use by providing features such as late binding. However, the differences between Visual Basic .NET and Visual C# .NET are very small compared to what they were in earlier versions."

Also, do you want to be known as a sharp developer or a basic one? Additionally, Sharp Developers are paid more.

Since C# is case sensitive, it PREVENTS code from becoming sloppy, which ultimately PREVENTS errors. If it wasn't a great feature, C# would be case insensitive, think about it.

Mike, you must be a Java programmer and want MS to stay stuck in VB, hehehehe.



Last but not least, schools are teaching Java like never before, and Java has been the #1 programming language for the last few years, thus we can safely say that Java will be around for some time to come. Google TIOBE if you need proof.

Having said that, it will be alot easier to work with Java if you need to, if you know C#. Imagine how much Java code is out there and the possibility of you coming into contact with it in the future....


# re: C#-VB Rivalries 9/18/2007 9:14 PM Anonymous
It's not pointless. The fact is, C# is more productive. It's much cleaner to read and far less words and syntax to type. That in itself makes my life much easier as a developer.

Point made! And this is the ONLY point one needs to clarify. End of debate.

# re: C#-VB Rivalries 1/8/2008 11:49 PM praveen
There are vb and c# are two good pragramming languages than other. N doubt about it why there are great.

# re: C#-VB Rivalries 3/14/2008 4:50 PM steve
well, all these years later, i still think vb6 could have been continued.

WHY ARE THERE SO FEW DOT NET CLIENT SIDE APPS OUT THERE IN THE MARKET PLACE?? STILL!!!!

# re: C#-VB Rivalries 2/14/2009 1:49 PM Turbo
I write my apps in Turbo Assembler from Borland.

;-)


# re: C#-VB Rivalries 2/17/2009 11:06 AM Clint
C# has no With statement. Where is your god now?

Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification: