Wednesday, December 07, 2005
« Commercial CSLA .NET? Open-source CSLA .... | Main | AJAX is a new Microsoft technology?!? »

It is the debate that never ends (though it does change shape): is the current C-style language infinitely superior to the current most widely used language.

 

Years ago COBOL and FORTRAN were all the rage. Then this upstart C language showed up claiming to be better. Which was laughable, but the fanatics in the C world wouldn’t give in.

 

Eventually, seeing that C wasn’t going anywhere, they added ++ to the end, claiming that extra non-alphanumeric characters improved the language so now it was better than FORTRAN. (and it was better actually - and no one compared anything to COBOL because that would be just silly - almost as silly as acknowledging that RPG was a programming language at all)

 

But then the age-old and much maligned BASIC language grabbed headlines by offering a level of productivity for GUI programming (on Windows at least) that no one else could touch. All of a sudden the semi-colon lovers of the world had a new enemy: Visual Basic.

 

And while C++ was much faster and provided access to the deep, dark, smelly bowels of Windows (16 and then 32 bit), the fact is that it took many times more code to do anything in C++ as compared to VB. So while the VB devs were at the bar drinking, or at home with their families, the “superior” C++ devs were slaving away trying to find that missing semi-colon or mis-matched close bracket (or worse, that null pointer reference).

 

That’s why Java was invented: to try and create a version of VB that had semi-colons. Get rid of all the low-level machine issues like null pointers and memory deallocation so programming is more VB-like, yet keep the elegant (cryptic?) syntax of the C-style language family. Unfortunately Sun just didn't get it (and still doesn't...), so Java missed the mark for the GUI developer.

 

But Microsoft has always understood. They created VB after all. So naturally that’s where C# comes from: VB with semi-colons. As Billy Hollis has said numerous times, the VB community kindly allowed the rest of the world to use the VB runtime. Sure, it was modified to be useful from other languages, but .NET brought to the C-style world what VB had been providing for over a decade: productivity.

 

(btw, if you didn’t catch some of the sarcasm and hyperbole in the above you really need to lighten up…)

 

So what brought on this post? Tom Archer explained why there are so many VB samples on MSDN, stirring the debate yet again.

 

By the way, the reason there are so many VB samples boils down to two things:

 

First there’s the fact that there are more VB developers out there than C# developers. A lot more, pure and simple.

 

Second, Basic was designed specifically to cater to the way people think. C-style languages were designed specifically to cater to the way machines work. It is incredibly obvious then, that Basic is a better teaching/learning tool, because it is based on cognitive concepts for humans.

 

(note that I’m not saying one language is inherently better for actual programming – just for learning)

 

Either way though, I’ve said it before and I’ll say it again: if you only know one language family you are crippling yourself. If you’ve only ever use Basic (VB or otherwise), or a C-style language you really need to broaden your horizons.

 

If you can’t stomach learning the “enemy” language (VB or C# depending), then go find another .NET language like FORTRAN, Eiffel, F# or something. For that matter, IL itself is a great choice.

 

Branch out! Learning other languages only helps you understand and use your preferred language better.

Wednesday, December 07, 2005 11:04:57 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [19]  |  Tracked by:
"C# vs VB.net again" (VB-tech weblog) [Trackback]
"Java: created to make VB with semicolons 1.0...C# version 2.0" (D'Arcy from Win... [Trackback]
"Rockford Lhotka on VB vs. C#" (Mickey Gousset) [Trackback]
"VB Versus C#" (Evan Brown) [Trackback]
"bay area photographer" (bay area photographer) [Trackback]
"maryland automotive windshield" (maryland automotive windshield) [Trackback]
"her first audition" (her first audition) [Trackback]
"annuncio affitti isernia" (annuncio affitti isernia) [Trackback]
"paul posey tallahassee florida" (paul posey tallahassee florida) [Trackback]
"sauna mista milano" (sauna mista milano) [Trackback]
"georgia bulldog" (georgia bulldog) [Trackback]
"cd organizers" (cd organizers) [Trackback]
"congelatore da incasso" (congelatore da incasso) [Trackback]
"cameriere in autoreggenti" (cameriere in autoreggenti) [Trackback]
"Sports Betting Rss Feed" (Sports Betting Rss Feed) [Trackback]
"albuquerque respiratory jobs va medical center" (albuquerque respiratory jobs v... [Trackback]
"tiaras and headpieces" (tiaras and headpieces) [Trackback]
"used kountry aire camper trailer" (used kountry aire camper trailer) [Trackback]
"columbus ohio commercial real estate" (columbus ohio commercial real estate) [Trackback]
"invisibile pulcino dildo" (invisibile pulcino dildo) [Trackback]
"fotografico" (fotografico) [Trackback]
"sms gratis cellulare" (sms gratis cellulare) [Trackback]
"racconto erotici con animali" (racconto erotici con animali) [Trackback]

Wednesday, December 07, 2005 12:27:55 PM (Central Standard Time, UTC-06:00)
I cut my teeth on C & C++, then jumped on VB3/VB4/VB5/VB6, then jumped on C#. Each time I thought "Wow, this is so much easier and better". And I've been very hard core C#, but now VB'05 has really got me looking at it again. I'm glad to see that I'm going to finally get to a point to where I can simply use the right language for the right job: (C# for infrastructure, framework and hard core technical, VB for UI, Office and Interop). I learn alot from looking at code from both languages. Not just syntax but style, design, program flow, patterns and more. So, bottom line, I agree with Rocky, you need to know more than just one language. Never stop learning!
Wednesday, December 07, 2005 12:47:28 PM (Central Standard Time, UTC-06:00)
Rocky

Hey! What's wrong with RPG? Brilliant language. Earned my keep with it for many years, first the System/32, the /34 and then the /38. No need for code indentation, you got this snazzy code template paper gizmo so you could read the various types of statements, only 99 flags so you didn't get confused, no locals so you always knew where you were. Pah, young 'uns these days don't know what a language is.

:)

Cheers, Julian
Wednesday, December 07, 2005 6:51:48 PM (Central Standard Time, UTC-06:00)
I think both Teams (VB & C#) should work together to tie similarities and defeat differences bewteen the 2 and shut down this VB vs C# debate at once and forever. Also, until the day MS let us compile classes writen in diferent languages into the same assembly, the language-agnostic feature of the CLR would be just an utopia (cause two developers -VB & C#- in the same ISV can only work together if they do in separated Teams (its kinda shame still seeing much job offers sporting a "NET developer (C# preferred)": why?, because 2 of a 3 team are C# developers? Shouldn't the CLR take care of this and not us?.
Ismael H.
Wednesday, December 07, 2005 7:20:09 PM (Central Standard Time, UTC-06:00)
Rocky,
I've had a lot of respect for you. I always tell my fellow developers that if you need to read a programming book, read Lhotka's book. I can't believe that you bring this topic “VB vs. C#”. Does it really matter for you in which language you write your code? I'm very thankful to Microsoft for creating VB since it brought a lot of intelligent people to our field from other industries. But your "smartass" remark: "So while the VB devs were at the bar drinking, or at home with their families, the “superior” C++ devs were slaving away trying to find that missing semi-colon or mis-matched close bracket (or worse, that null pointer reference)." lowers my image of you. I had used VB4/5/6 for the same reason that you mentioned in your article: speed of development. However, in many cases I had to go to the "superior" C++ language to create components that I used in my VB app. Tell me, what was the language that was used for VB runtimes and development environment; I bet it wasn’t VB. If we didn't have languages like C++, VB wouldn’t exist. I'm very glad that VB.NET and C# are equal languages now. For a good developer it shouldn't be a big difference of which language to use. Many of my friends, whom I respect, prefer to use C# simply because they started their programming careers with languages like C/C++. However, they don't mind to write their apps. in VB.NET if a client prefers it. My language of choice is VB.NET, but I feel comfortable with C#, C++, or J#. I understand that in your article, you're trying to convey the message about being diverse in computer languages. But when I read the article, I had a feeling that you're taking a side (the VB side), which is why I just lost some respect for you. I used to look up to you, but just now, I lowered myself to your level by responding to the article about language war.
Vadim
Wednesday, December 07, 2005 8:59:55 PM (Central Standard Time, UTC-06:00)
Vadim, I'm sorry you feel that way. I should point out that all the sarcastic jokes I used came originally from people like Don Box and Jeffry Richter – unabashedly pro-C-style language people.

I fear that if using some good natured programming language humor is enough to lose your respect, you’ll find that there’s no one left out there worth your respect. A sad thing, that…
Wednesday, December 07, 2005 9:23:15 PM (Central Standard Time, UTC-06:00)
Well I guess I'll lower myself too. My only issue with the post is that I have found much more C# in on-line samples (especially MSDN). In a few weeks I will be making the decision of VB.Net vs. C#. One of the "pros" in the C# column is the popularily of C# in the blogsphere and in on-line samples. Perhaps I should research that a bit more. Rocky keep up the humor. "Angels can fly because they take themselves lightly."
Matt
Wednesday, December 07, 2005 9:25:29 PM (Central Standard Time, UTC-06:00)
I think you hit the right amount of tongue-in-cheekiness with that one Rocky! The whole VB vs. C# vs. C++ vs. Java thing alone could supply a lifetime of Dilbert strips. As a longtime DEC VMS COBOLer I could whip up some stories of it's superiority, but who cares?

Lots of people tend to get caught up in the language religion fights, and forget why computers and programming were invented in the first place - to solve problems..

I respect everyone's choice of languages and tools, and I all I ask is that they respect mine. :)
Chuck McGavern
Wednesday, December 07, 2005 10:52:25 PM (Central Standard Time, UTC-06:00)
Rocky, don't let Vadim get you down. Maybe C/C++ programmers just don't have a sense of humor (remember I was coding C before most of these posters were born!) And Matt, don't get caught in the "one language to rule them all" type of decision. I've been there several times in different companies and I can tell you from experience, it is not the best decision. It's better to lay down procedures and style guidelines rather than say: "You can only code in language x". Use the right tool for the job. You will never convince me that it’s easier to do late binding in an office application in C# than in VB. Been there, done that on both sides. And please don’t say “You should never do late binding”, even the master Bill Gates thinks that we should be able to, and I quote “do static binding where possible and late binding where necessary”.

I think everyone missed the point. We should be discussing architecture and design and how best to solve the problem rather than what language to do it in. We have so many tools at our disposal: Objects, Web Services, ADO.Net DataSets, and more. We need to start talking about how best to apply them. Not only to get the job done but to make sure we can change, adapt and grow our applications over time.

Sorry, I’m stepping down from my soap box now. Rant concluded.

Thursday, December 08, 2005 3:08:22 AM (Central Standard Time, UTC-06:00)
As a C# MVP I had a great laugh with this post, well done! :) Indeed, the jokes were ment to be sarcastic, and not to be taken seriously.

I never really liked VB.NET, but it's a matter of taste I guess. People who were raised with vi and C on unix (like myself) generally prefer C-style languages over other languages, but if you're raised with VB3/4 etc., I think it's completely different.

I only hope MS will make the two languages more different in the future, so the choice which one to pick is more obvious, like it is now as well with C++ and managed code. No-one who wants to write a prof. 3D engine uses C# or VB.NET, and for business apps it's generally not that efficient to use C++. At the moment the languages can do the same thing (C# or VB.NET) though have very different syntax (try to port C# to VB.NET for a day ;)) so it now looks like 'the other language' (depends on where you stand) SEEMS to do things different 'because they can/want to', not because they HAVE to (in terms of language goals).
Thursday, December 08, 2005 9:23:04 AM (Central Standard Time, UTC-06:00)
I just want to apologize to Rocky and the blog readers. I didn't mean to offend anybody. Most people who read Rocky's blog are strong developers, I assume, and know that the gap between .NET languages is very minor. I don't like to see topics like one language vs. another one on Rocky's blog. But of course I or anybody else cannot tell Rocky what to write on his blog. Rocky, I still have a lot of your respect for you. I don't always agree with you but I love reading your blog, articles, and books. Podcast shows with your appearance usually are most interesting to listen to. Gush, now I sound like a stoker. Also, English is not my first language and most of time it's hard for me to express my thoughts they way I'd like.

I want to say some more words about the original topic. My personal opinion why MSDN has more samples in VB.NET than C# (assuming Tom Archer is correct) is that MS does want to move VB6 programmers to .NET land as fast as possible. I believe that army of C# developers will grow faster than VB.NET. It's nothing to do which of the languages is more superior. The reason is, I presume everybody agree with me on this one, VB6 doesn’t have a bright future. Number of people going programming from other fields will be reduced. It’s more challenging to learn VB.NET or C# than VB. Most people who will come to .NET world are going to be people from other platforms like UNIX or Computer Science students. I don't know many universities that teach VB. Most schools teach either Java or C++. It's just my opinion and I've been wrong before.
Vadim
Thursday, December 08, 2005 9:58:54 AM (Central Standard Time, UTC-06:00)
I look at C# another way... it is a gift from MSFT to consulting companies. It allows consulting operations (ahem) who can easily teach their VB hordes a C* language and, afterwards, raise the rates of their consultants 10% or more.

As a consultant, this is only a good thing. Personally, let people think "C# is harder" - in only raises the premiums we can charge our clients. :)
Aaron Erickson
Thursday, December 08, 2005 10:23:04 AM (Central Standard Time, UTC-06:00)
Rocky, we've disagreed on this before, and I don't want to repeat all that, but...

My experience working with mostly C# but plenty of VB along the way is that a person who describes C# as "VB with semicolons" generally has only a superficial knowledge of C# or both.

C# is better desribed as java with useful GUI considerations. Microsoft's success with VB was certainly what enabled C# to do that so well, but the language is more "java flavored by VB" than the other way around. And because of that, it will always follow the drumbeat of java much more so than VB.

Consider that the C# community was discussing whether the language should have checked exceptions (like java) while the VB community was developing the My whateveritis for an example of what I mean.
Daniel Billingsley
Friday, December 09, 2005 7:45:18 AM (Central Standard Time, UTC-06:00)
Rocky,

You forgot about the "new" wonderful language of RPG.net Where's the luv? Our company looked at it as the way to convert the MANY rpg "programmers" the have our business knowledge over to the .net world. Of course, once we moved into the light, we saw that VB.net and C# were going to be the way we moved for our UI purposes. Now, I am losing my not-so-plentiful hair trying to implement CSLA. Good thing old dawgs can learn new tricks.
Robert Harvey
Monday, December 12, 2005 2:34:59 AM (Central Standard Time, UTC-06:00)
> Basic was designed specifically to cater to the way people think. C-style languages were designed specifically to cater to the way machines work. It is incredibly obvious then, that Basic is a better teaching/learning tool, because it is based on cognitive concepts for humans.

And someone said that these objects or sumthin were catering to how people think. Guess I was right after all, procedural code is easier to understand and caters to human comprehension. It is also easy to maintain, just look at all the open source projects at sourceforge!
zzz
Monday, December 12, 2005 2:37:50 AM (Central Standard Time, UTC-06:00)
BTW is your name Paul, or why is this same post 1:1 with credits "by Paul" at http://dotnetjunkies.com/WebLog/paul/archive/2005/12/11/134258.aspx

I originally replied there since I thought it was the original source of this.
zzz
Wednesday, February 22, 2006 4:21:02 PM (Central Standard Time, UTC-06:00)
Wow! 2 pages of text saying nothing. Maybe next time choose a bigger font.
jayzee
Tuesday, March 14, 2006 9:40:23 PM (Central Standard Time, UTC-06:00)
Two blogs..
Not directly related to languages but encapsulates the topic:
[http://realworldsa.dotnetdevelopersjournal.com/dna_soa_software_architecture_vbnet_cmmi_agile_development__.htm]

A blog about tookkit languages
[http://realworldsa.dotnetdevelopersjournal.com/mstools.htm]
Monday, September 11, 2006 7:13:45 AM (Central Standard Time, UTC-06:00)
Dear Friends,

I have been reading a lot about which language is better-
VB vs C# ?

Most techies have strong view points, but they are all based on 'geeky emotions' rather than logic or even common sense.

People say they should use C# because Microsoft is using it, or because it looks complex, or they have to type less, or that C# looks like a computer language and VB does not, or that C# programmers are smarter or that C# programmers are generally C++ programmers and hence they must be good because they can understand all that ridiculous code.

Well, if writing cryptic code = smarter people, then the richest people in business would all be C++ programmers or the leaders of this world would all be ex-programmers. I am not sure if that IS the case.

How many CEOs of medium/large companies are ex-programmers (except for a few CEOs of tech companies)? How many presidents,prime ministers are ex-programmers? None.

By the way I am a programmer myself, and have been for 20 years, and probably a geek too, in many ways.

What is the point? It is simply that we, the programmers, often enjoy writing and looking at cryptic stuff. It gives us a feeling that no one else can read it, and hence we must be smarter. And in doing so we fail to look at the 'big picture'. Big picture could mean many things- What works better? How to save time? What is better for the business? Why are we developing this application? Is there a better and simpler way? And so on.

I think a 'good' development language is one, which allows us to perform the most common (needed) functions in the shortest possible time, and offers a short learning curve, and is relatively easier for another programmer to comprehend.

Based on that- VB is much better, for ALL business needs. May be or may be not for systems programming-- I do not know.

Here is a link from Microsoft. They do not say, one is better than another, but read and decide for yourself, which is easier AND better for business-- the most common use for programming languages.

http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308470

I have neither programmed in VB or C# before, but one need not be a rocket scientist to realize which offers shorter development lifecycles. It is certainly VB.

I am not saying C# is 'bad', it is just that it still contains most of the 'primitive' stuff- bad syntax, confusing pointers which are probably never needed in 99% of the applications, hard to read, etc. etc. Remember, C was developed for controlling telephone switches, and at least to me, it still looks that way!

Thank you for reading this long note.







Monday, September 11, 2006 11:37:58 PM (Central Standard Time, UTC-06:00)
I'd just like to raise the issue that as a company it is sometimes very important to select one language and go with it. My primary reasons for starting all our .Net development in C# were that I personally prefer the syntax (being from a java background) and I found when I asked most of the members of my team that they could read it quite easily with a knowledge of Javascript. The reason companies need to stick with one language is often for resource allocation. Having one language allows you to move resources freely around the organisation. As to whether one language is better than another, that argument will soon be moot - as .Net matures it moves closer towards it's goal of true language agnosticism. Picture a converter between languages ;) The world will be a happier place for geeks then...
Comments are closed.