Is rooting for Visual Basic like rooting for the Red Sox?
Here in the US we have this professional Baseball team called the Boston Red Sox.
According to Wikipedia (and known to be true) "In 1918, the team won its fifth World Series, and then went into one of the longest championship droughts in baseball history."
Stated another way, for 86 years Boston fans rooted for their team. They pined for them, aching, hoping that they'd win again. That folks would give them the respect they deserved and see their team for what they are - winners.
After a few years of this suffering one may, without realizing it, begin to wallow a smidge. To enjoy it. Being an underdog can be kind of fun. If pain is fun for you.
However, after 2004, the Red Sox's curse, the "Curse of the Bambino" was broken after they won the World Series. Why is this significant? Because there is a whole generation of folks who didn't suffer rooting for the Sox. For them, the Sox have always won. It's easy to root for the Red Sox when they are winning.
Old timers don't like this. They try to remind young people that the drought, the pain, was clearly broken through the strength of their faith, but these protestations fall on deaf (young) ears.
Visual Basic programmers, historically, have tended to be a bit long suffering, patiently enduring the wrongs and difficulties of VB while being mocked by the C# folks. "VB's a toy." "VB's not performant." "VB programmers aren't real programmers."
But according to Paul Vick:
Apparently the great VB Performance Scare of 2001 is over and people realize that VB code runs just as fast and capably as C# code. The young people don't remember the early years as VB programmers slogged on, Dim'ing and AndIfAlso'ing while others used curly braces and semi-colons while pointing and laughing. For a time, to love VB was to suffer. However, today, while VB may not be the #1 .NET language on the tip of your tongue, but it's certainly beat the Curse of the Bambino and earned the respect of the community as a first class .NET language, and apparently the most popular one as well.
Rooting for VB isn't hard any more, just like rooting for the Sox. Rooting for C# is like rooting for the Yankees, therefore, I'm going to start rooting for the Cincinnati Reds, and for LOLCode. Both are going to go all the way.
If you liked this post, you might also enjoy these:
- Beyond Elvis, Einstein and Mort: New Programming Stereotypes for Web 2.0
- Hanselminutes Podcast 92 - Visual Basic Yesterday, Today and Tomorrow with Paul Vick
- XLINQ to XML support in VB9
Enjoy!
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Also, I used to be a VB6 developer (I was lucky and found Delphi before any permanent damage was done), and that experience is the #1 reason I haven't returned to VB.
VB.Net is a fine language, and it isn't VB6 at all -- but VB6 killed any love I had for the BASIC language and I just can't make myself go back -- unless I was offered a sweet job with a good salary, then I would go back in a heart-beat. But aside from that, no way.
That and I just like C#. Especially yield. I really like yield.
As for long suffering baseball fans you don't know suffering unless you are a Chicago White Sox fan like me. Yeah, they finally won the World Series in 2005 (after 88 years) but we still have to live in the shadow of the Cubs - I mean my god, the CUBS!?! (The Cubs are entering their 100th year of futility) If you care, Richard Roeper (yes, the movie critic) has written an excellent book on what being a White Sox fan is all about called "Sox and the City" and I highly recommend it for all baseball fans.
Regarding your resolution to root for the Reds... They finished 2007 with 72 wins and 90 losses. They haven't had a post-season appearance since 1995. Contrast that with the Kansas City Royals, who finished 2007 with 69 wins and 93 losses, and haven't played post-season since winning the World Series in 1985.
They're both massive vortexes of suck, but I think KC sucks more. Between the Royals and the Chiefs, KC has no shortage of failure. Kinda makes it hard to enjoy sports in KC.
I am based in Australia. I believe I speak for all antipodean engineers when I say VB is rooted ;)
Miles
I think it's funny how the opensource people get so engaged with something like Ruby on Rails but missed the VB train, probably just because it was a Microsoft language. Stupid is as stupid does I guess. I'll stick with VB and me and my clients will be none the lesser for it.
go VB go!
Why don't you root for Ruby, it's getting piles of crap these days as a language for simple organisms?
Anyway, back on point, I was thinking about this just the other day when my brand spanking new copy of ASP.NET 3.5 unleashed showed up with a big black dot (made to look like a sticker) proclaiming “All code in the book is now in C#”
Obviously not being VB is a selling point now.
Logically I don’t really fault VB developers and my first full program was written in VB so I have a soft spot for it but the reality is that I can’t help but resent them a little.
VB.NET is basically C# at this point. Some might feel it’s slightly superior, others might feel it’s slightly inferior, but in the end it’s basically the same thing. So I can’t imagine anyone who programs in VB not being able to learn C# in a weekend (Sorry Brian, I don’t know what your deal was but it shouldn’t have been that hard)
So it annoys me a little that the community has to be split like this because some people won’t let go of the past and move on. It just seems like Microsoft could get a lot more done if all engines were firing to push C# forward.
But again, I fully admit that I’m being a little irrational here. They should be able to use whatever they like and who am I to tell them otherwise. As long as Microsoft is still making money and they are still happy, more power to them.
P.S. As you can probably tell from above, I don’t buy the Paul Vick numbers. I’m not saying they aren’t true I just think they reflect hobbyists that download VB and do some research but never end up using it. Looking at the book market (which I think reflects serious developers who are willing to spend some money) C# is obviously where the heat is.
C# sounds sexy, but it is facing the same challenges as Php, which in turn is facing challenges from Java , which in turn is facing challenges from C#, which in turn is being challenged by Ruby.
One language that has remained constant (with small changes) is VB with minimal challenges from Cold Fusion.
So the bottom line is, C# is still for "programmers" who want to sound geeky, but the real money is still being made in VB and Java. C# sounds cool, but I believe it is over hyped. And here is another piece of data. According a hiring agency HR, a VB developer gets a job in an average of 4 weeks or less between contracts, Java developers 8 weeks or more, C# well more than 12 weeks !!
cheers,
yousaid
However, there is one point that is important that sets the 2 apart-- C# is standardized, http://www.ecma-international.org/publications/standards/Ecma-334.htm , and as such is not technically "owned" by anyone. That is, any vendor can make a C#-compatible compiler and, if it is C#, then it will compile in that compiler. Etc. That is important, to a degress, given the MS defintely "owns" VB.NET and, as we know, MS can be fickle at times. All of which begs the question-- why don't they just release VB.NET as an ECMA standard too?
Finally, in the end, we must note-- it is about the design and logic, not the implementation language-- Java/ C#/ VB.NET/ Etc, they are all pretty much the same, IMHO, and what is different is the way they are used in particular designs, patterns, etc.
And you gotta be kidding me - the Reds? Try the Cubs or Indians, who have both been in the postseason recently, but haven't won a championship in something like 160 years combined.
The Reds are kinda the Java of baseball - they had their day recently and are now fading.
Maybe the key to all this is to extend the analogy. Whether you hate the Red Sox or not, you have to appreciate "Big Papi" and "Manny." You have to blind (or wilfully ignorant) to claim not to see talent in their roster.
Likewise, I think it's laughable that people can't get around the design decisions that make VB.NET and its developers productive, fashionable or no.
So the Cincinnati Reds are like LOLcode? I'm going to take this opportunity to claim Python for the L.A. Angels then -
Nice to know few facts here ; and equally surprised to know few unknown facts too.
I am Just puzzled whom to trust. Should I trust the Tiobe Index, which clearly shows that VB is on the third position and C# is on the 8th position or the developers, who actually use the languages in real life.
Since Tiobe Index mentions VB, its confusing to differentiate between Classic Vb and Vb.Net. Perhaps someone can clarify that.
I think Microsoft is equally responsible to some extent for this things. The Asp.Net Team and the Bloggers for Microsoft seems to be proud to show all codes in C# only. We hardly find any explanation about the VB.Net codes around. They discuss the codes in such a manner that Vb.Net does not exists at all, and this creates a hype that Vb.Net is Dead for ever.
I think.... This scenerio will not continue for long time, since the world is shifting to Dynamic languages like Ruby and Python. IronRuby and IronPython will take the world in their side and thats for sure. PHP is a;lso entering via DLR in near future. There would be no monopoly in near future. F# is also knocking the door.
Microsoft should change the old attitude and show the codes in all possible languages to justify the developers form VB, C#, IronRuby and Ironpython Community.
I Think Dynamic VB can also do wonders for the existing Vb.Net community who is struggling to prove that they still exist. Dynamic Vb should be introduced faster, before the IronRuby and IronPython storm starts blowing.
Thanks
Parag Kantharia
As a Triple A personality type, I could actually draw storyboards of UI's in VB 6 while the customer was sitting with me at the computer terminal. Try that in C#! (and yes I am now a C# developer since 2002).
In some respects VB was like Smalltalk in the sense that is was simple, yet powerful. If you had to build a 2-tier app that just "worked" for the customer, you could do it in VB6 faster and cheaper than anything else. Man, I miss those days!
IronPython is about the closest thing I can think of getting the job done as quickly, particularly now that there is an IDE for it. If you are a statically typed programmer feeling a bit shackled by a universe that the compiler creates, unshackle yourself and enter a universe that is still dynamic after compile time!
Keep up the good writings Scott!
Parag - The Tiobe data is interesting. I don't know who to believe, but I agree that Forrester, in this example, is just one data point. It's an interesting one, though.
I was ranting about this at work the other day. We're a VB.NET shop with a few bits and pieces coded in C#. Most, if not all, of our developers could code in either with equal skill, but our codebase started in classic ASP and was migrated to VB.NET when the jump was made to ASP.NET 1.0.
I personally started developing in Omnis (Google it), moved to PowerBuilder, then Access 2.0/95/2000, then Lotus Notes/LotusScript (VB-like), then VB6, VB.NET, Java (for a brief couple of years) and more recently have been doing C# and Ruby. C#'s main claim to fame is that it helps win Java developers to Microsoft ...
We would really like to do more TDD and are particularly excited by the directions LINQ and ASP.NET MVC are going in. However anything remotely cutting edge seems to come out exclusively with C# examples, and when VB is mentioned it is simply to say that budgets don't allow for examples in more than one language.
Fair enough. So stop supporting so many darn languages in .NET! If you ripped away support for VB.NET we could at least have an argument with our bosses about how we needed to migrate off VB to C# because it was no longer supported, but as it stands our only reason for wanting to do so is that it makes it 'easier' to keep up on new techniques and practices.
Alternatively, as Microsoft seems determined to keep adding new languages into the CLR/DLR, it seems logical to either distinguish them much more (i.e. you only get LINQ in C#) or ensure that we can mix and match different languages in the same projects without getting bit by the sort of issues that currently crop up regularly at present. At least then we could shrug our shoulders and incorporate that cool code into our projects (regardless of which language it was sourced from).
BTW, I know this isn't remotely your problem, but you did bring it up :D
Cheers,
Angus - an Aussie rooting for SF 49ers and NSW Waratahs ...
And then Microsoft decides that our primary tool is dead. There's no technical reason for that, it's just a political decision to get people to move to NET. So I tell our customers that we will have to rewrite all our applications from ground up, that all customers (who are completely happy with our state-of-art software) have to repay the whole development cycle, that we have to train our whole staff on new systems, invest in new tools, not even talking about the time needed for getting 20 programmers back to speed and efficiency...
Has anybody at MS ever thought about the Tsunami effect of such decisions? "Hey, lets stop VB6. Oh yes, and that VFP9 is also doomed, because we can save some hundredthousand for the some people in the VFP development team" And at the same time MS spends tens of Millions just for stupid advertising on NET.
Microsoft just doesn't take a longtime responsibility for their products. Development systems aren't like regular applications (like Word, Paintshop, Excel etc): You can't just install the next new version (like yesterday you had Outlook 2003, today you use OL 2007). There's a huge momentum in such tools, you just can't switch to a new version or to a completely different technology, because there are years and years of knowledge, manpower and money gone into that applications. And customers don't buy that applications "just because", for them it's just a helping tool to run their business. They don't care about which language is it written in, they care about "how much costs it, and how much benefit do I get?". ROI (Return on Investment) is all what counts.
So: should we stil trust Microsoft? For us VFP developers, VB.NET would be the next best fitting language, according to some of the MVPs etc. But I bet: as soon as we have moved over to VB.NET, have rewritten all of our apps etc, then MS will decide that they really only need one main language and without further thinking will kill VB.NET.. "Who cares, we have C# as alternative, you can port easily.. jada jada jada..."
Thus: no, we will not move to another "MS only" language anymore. Too much money got burnt on that trap. Thus, even though I find VB.NET much more appealing than C# (I hate curly brackets!), it's an "MS only" product. No backup, no other companies to switch over in case of problems. C# would have the benefit of being standardized, but it's stil MS. And MS has lost our trust.
Thus we decided to go the Open Source way. One frustrated boss with 20 collegues, hundreds of customers with tenthousand users. Lost for MS and switching to Linux, OpenOffice and Phyton-based development. Bye Bye MS.
As a contractor, primarily VB.Net but with a C background, I naturally find I'm more productive using VB.Net but that's only because that's what I've been using recently. If I put my mind to it I'd quickly get used to those semi colons and brackets again. Just so happens the clients and roles I've had recently are VB.Net.
To widen my job prospects though I'll be C Sharping to get used to the syntax - but will also need to find an enlightened client who is happy to hire me.
Frankly, if you know the .Net framework and understand how to write OO you can do VB.Net or C# or both with ease.
I still come across arguments that VB people can't program OO correctly but that's just sterotyping and rubbish.
It's a tired argument anyway. I'm sure there's plenty of poorly written C# code out there - remember it's the skill of the individual/team not the language being used that makes a difference.
I wonder if there will ever be a coming together of C# and VB.Net to have just one main Microsoft .Net language - surely that's a cost saving for Microsoft in the long run? A hot political potato though i'm sure.
I have also seen more people transition from VB6 directly into VB.NET, many with the thinking that they already know the language. I've interviewed people claiming 10+ years of VB.NET experience. In many cases, I've seen people with a VB6 background program the same way in .NET, and fail to re-think how they build applications. I have not seen many people go from C++ to C# like that. Unfortunately, this adds to the negative stigma of VB.
I'm not trying to discount VB.NET. I've used it to develop critical enterprise applications. I prefer C# on my team because it has made it much easier to weed out a larger percentage of hobbyist programmers (which I do believe are mainly doing VB.NET) and VBScript developers, and has forced VB6 developers to put on a "beginner's mind" hat.
If VB6 and a large percentage of hobbyist programmers didn't exist, would we still be saying VB.NET is a toy language?
Every day, about 1/4 of our population (U.S.) eats fast food. U.S. Americans will spend over $110 billion on fast food; more than they'll spend on movies, books, magazines, newspapers, videos, and recorded music combined.
Does that make it right? Do these numbers mean eating fast food is a good thing?? Do these statistics mean that the increase in people eating fast food implies that fast food has somehow become that much better?
Well, you get my point! Regardless, I do think that VB.NET is leaps and bounds better than it's predecessors. However, more people using the language just does not imply that the language is superior, or that it does not have crutches for lesser-skilled or self-proclaimed "programmers".
In my experience, when I've had to clean up bad programming, it has primarily been written in VB. I am not about to make the same implication from my own statistics. However, the percentage of bad programming done in VB that I have had to fix is far more than 20% of the next closest. The number is more like 90%.
Maybe it's not the languages fault. But VB can enable lesser programmers to do more. Unfortunately, it cannot prevent the screw-ups.
ASP to ASP.NET you should be used to VB based web developement.
To me both VB.NET and C#.net development seem a lot more like VB6 development then classic C or C++ programming.
C++ programmers always had more respect and were paid more than VB programmers. I was a VB developer for a while and when I moved to .NET and to avoid this possible scenario and politics between C# & VB.NET, I moved to C#. Another reason for me was that C# syntax is very similar to Javascript syntax, me being also an ASp.NET developer.
Plus VB.NET makes you type more.... and I want casing restriction. I don't like 'Lastname', 'LastName' & 'lastname' all refer the same variable. It confuses me.
That being said, C# is a little easier to work with on the day to day tasks since its less wordy. Plus, there are always things that seem awkward in VB.NET such as assigning events that are simple in C#.
A: Some languages are grouped together because they are very similar to each other. An example is the language entry Basic which covers Visual Basic, QBasic, Microsoft Basic, etc. VB.NET has been added as well to the Visual Basic entry because it is often referred to as Visual Basic. The ratings for a collection of languages is calculated by taking the maximum of all individual entries (not its sum!).
They all are the apples from the same freaking basket called "MIL".
C# guy: While declaring variables I like to put my class name before my variable name, see how fancy it is.
VB guy: Nah! thats too much it should be the other way around.
C# guy: you must agree curly braces looks real good, specially when i use them in "for loop"
VB guy: why use shift key and stuff while programming whats wrong with "For - End For"
Real .Net guy:
Get over it. Think big. Kill the tunnel vision. We have to do whole lot in the technology compare to what we have now.
Love u all.
Tabs
In my experience thats what most C# bigots are.... "Wankers"
More on topic I started with db3 went to Foxbase then to VB3 -VB6, VB.NET and only now am trying out C#. The case sensitivity, curly braces and line termination trip me up, but .NET is .NET is .NET. The differences between C# and VB.NET in the .NET environment aren't worth the effort to argue their respective merits.
Mocked by C# folks? Don't forget all the other folks that don't use C#. They all make fun of VBers. As for it being the #1 language, well... being number one doesn't mean it's good or right. Look at Windows, as en example.
When I got into programming back in '98, our shop had VB6, C++, Delphi and Clipper.
C++, Delphi and Clipper compiled stright to Win32 native code. No run-time, Framework or sand box was needed. But VB required a runtime. I can see where other developers considered VB to be a toy. Their program's compiled to a native exe/dll that could fit on a diskette. At that time, the one request all VB developers wanted was the ability to compile to a true native exe or dll. We were all too aware that this could give us performance gains and a small footprint.
On the day you compiled your first .NET app, you wrote code that needed a "runtime" in order to work. All code we write has to stay within the boundries of the same litter box. None of us can compile our code to a native exe or dll. Granted, C# has the ability to do some work in unmanaged code, but C# still has to tell Mommy(the Framework) that its going to do it. And even then, Mommy limits what C# can do.
In one of his podcasts, Scott H. said that "...it wasn't until I used Lutz Roeder's Reflector that I realized IL is IL, whether its C# or VB..."
The promise of the .NET Framework is finally gaining mainstream acceptance; we can all write code, in our own language, in the same app...and it just works. When it comes to C# vs VB.net arguments, I say the king has no clothes.
Now that C# has initializers it's much better, and I'm tired of the line continuation marks in VB.NET so I've switched. LINQ and Attributes are much nicer in C#.
But it does come down to this too. VB.Net and C#.Net are pretty much interchangeable and software like SharpDevelop will do the translation for you. This lets people like me who still get headaches from looking at VB, look like I am using it while using C#. I love C#. It brought me over to the dark side. It is what Java should have been. Ooh another flame war with that topic too.
I never did like C, C++ and therefore was not tempted to try C#.
To be honest I never liked Microsoft Basic either and think MS really screwed everyone by sending them down this road when there so many better options around at the time.
C was for systems programming and NOT for commercial applications. Again a big mistake and missed opportunity.
Toaday, I prefer VB.NET for readability and because it does not get too upset if I forget that the CAPS lock is on. In C#, I don't mind the semi-colons, but the curly brackets really bug me.
http://www.dotnetlog.com/archive/2008/02/07/is-vb.net-better-or-c.net-or-is-.net-a-.net.aspx
Comments are closed.
AndAlso, when you say 'AndIfAlso' you probably mean 'AndAlso'.
and yes -- VB 9 is touching all the right bases [note baseball metaphor?] with people i speak to, too. Even long time semi colon lovers.