On Language Bigotry
page 1 of 1
Published: 19 Jan 2006
Unedited - Community Contributed
In this piece, Ambrose shares thoughts about language choice and, in particular, that between C# and VB (.NET).
by J. Ambrose Little
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 7265/ 24

Joe Healy, renowned MS Dev Evangelist, persists in his delusion that I am a C# bigot.  I admit the accusation is not totally unfounded as I did champion C# in the C# vs. VB mock debate at the 2005 South Florida Code Camp, and I love razzing VB-lovers when I can; however, I have told him over and over again (and said as much in the debate) that language preference or feature superiority are not the only things to consider when selecting a language.  Also important are business considerations such as existing VB and ASP code base and the experience of developers in house (e.g., if they're all ASP/VB devs, you probably ought to go with VB.NET).

But given that both are general purpose programming languages, both are built on the same platform, both have access to the same libraries, and most business applications can be built with both, it is pointless and unfounded to adhere to one language as objectively superior based on the features of the language (or even the IDE). 

At the same time, I think language preference has to be one of the factors taken into consideration by business decision makers who mandate language use.  If a developer prefers a language, he is most likely going to be more proficient in it and, therefore, more productive.  I consider it somewhat akin to natural languages.  I will likely always be most proficient (fluent) in English.  Even if I moved to the hills of Italy, it would take a long time before I became anywhere near as proficient with Italian as I am with English.  In fact, I may never be as proficient.  In addition, it would take a lot of time (I imagine) before I actually started thinking in Italian without effort; it will likely always take extra effort for me to speak in another language. 

Similarly, though to an admittedly lesser extent, I know I'm not as proficient (fluent) in VB as I am in C#, though I can certainly work using VB.  When I think about code right now, I think in terms of C#--it shapes the way I think about code.  It would take some doing for me to come to this level of comfort with VB or some other language, despite the fact that ultimately we're trying to achieve the same thing.  Further, if I actively dislike a language for some reason, (whether or not that dislike is particularly rational) I will find it harder to use that language and thus will be less productive using it.  (I'm not saying I actively dislike VB myself, but I know there are those that do.)

So I think it is unwise to dismiss preference out of hand.  Apart from just your basic syntax learning curve, we have to be conscious that developers are people, often very opinionated and sometimes prejudiced or even bigoted people.  You can mandate a language, citing it as being objectively equivalent to an alternative, but if you're working against your developers, you're not doing yourself any kind of favor.

As for myself, I do (at least at this point in my life) prefer C# because I find it is sufficiently abstracted from machine language to be productive and yet suffiiciently terse as to not impede readability or producitivity through verbosity.  It retains a likeness to computer language--a certain je ne sais quoi--that keeps one in the frame of mind that this is a computer I'm talking to, and I need to think like it does.  For that reason, I think I'll always prefer C# over VB.

To take it a step further, I wager that as we get better abstractions from computer language, such as are becoming possible with DSLs and, e.g., WinWF, the utility of VB as a more human-friendly language will wane.  Being productive designing and building software applications will no longer rest on the merits of an imperative language but on models and interfaces that are sufficiently intuitive as to minimize or completely eliminate the need for a general-purpose programming language for the masses.  And the nice thing about it is that the masses will welcome it and not mourn for the loss of VB, which ultimately is only a stop-gap that insufficiently fills the RAD/human-friendly void in software development. 

Granted, that utopia is still in the distant future, as far as computing and business plan timelines are concerned, but it is far more real and possible today than it has been in the past.  In the meantime, I'll continue coding in C# when I can and using VB when I have to.  I don't think that makes me a bigot; it just maybe makes me a zealot. :)

User Comments

Title: My 2 Cents Worth   
Name: Shaun Farrell
Date: 2006-01-24 3:09:23 AM
The languages, VB.Net & C#, can do pretty much the same thing so there is no actual point in arguing which is better. It is, as you mentioned, a like/dislike matter.

Personally, I irrationally hate VB.Net simply because I am comfortable with C# and don't like the dim reserved word for no apparent reason.

When developing a system, it comes down to what the developers can and cannot do and with what tools they can do it with.
Title: RE: Language Bigotry   
Name: J. Ambrose Little
Date: 2006-01-23 6:27:57 AM
Thanks for the comments, Paul. I did not intend for this piece to be a complete discussion of the topic of language choice. I think most of us can find business-related reasons to use one language or another; I just wanted to toss out a few thoughts regarding preference in addition to those considerations.

As a recommendation to new developers, I'd say learn both C# and VB. Start with the one whose syntax is more familiar and then, once you're more comfortable with .NET, pick up the other one. There's no sense in not learning both, and it could double your opportunities.
Title: Language Bigotry   
Name: Paul Naudé
Date: 2006-01-23 1:48:58 AM
I always wanted to know which of these 2 languages are better and why, based on fundamental facts, not as much personal preference. If personal preference is the only difference, then be it so. And if so, I suppose it has to do with mostly syntax and then structure. But if both VB and C# (.NET) use the same platform, then I suppose the differences in structure can also be regarded as differences in syntax. I am a rooky programmer and learn any language that I need to use (most things stay the same: A loop stays a loop but the number of characters to type may differ - I prefer less). "New" languages surface everyday. How do you choose a language? I think the answer lies in which language have the biggest driving force behind its development - which could be measured by the amount of well spent money behind it, or the amount of programmers (look at the new world of open source). And yes, everybody needs to write and execute faster. Old languages where you need to type characters that could have been omitted will die (anybody still using a language where you need to type the line numbers?).

Product Spotlight
Product Spotlight 

Community Advice: ASP | SQL | XML | Regular Expressions | Windows

©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-05-28 6:02:27 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search