Click here to monitor SSC
  • Av rating:
  • Total votes: 1270
  • Total comments: 204
Andy Brown

10 Reasons Why Visual Basic is Better Than C#

07 March 2012

After having converted a whole lot of training materials based on VB.NET into C#, Andy ‘Wise Owl’ Brown decided to write a tongue-in-cheek rant whilst he could still remember the pain-points. 'Convert to VB.NET! You have nothing to lose but your semi-colons! '

Visual Basic is a better programming language than Visual C#. Who says so? This article! Here are 10 reasons why you should always choose VB over C#.

1 – “Rose is a rose is a rose is a rose”

This is a quotation from Gertrude Stein’s 1922 play Geography and Plays. However, the poetry wouldn’t work in C#, because – unforgivably – it’s a cASe-SeNSitIvE language. This is madness!

Before I start ranting, let me just acknowledge that case-sensitivity confers one (and only one) advantage – it makes it easier to name private and public properties:

Writing properties like this means that you can refer to the public Name property, and it’s obvious what the private equivalent will be called (name).

// private version of variable
private string name = null;
public string Name
{
    get
    {
        
return txtName.Text;
    
}
    set
    {
        name
= txtName.Text;
    
}
}

So now we’ve got that out of the way: case-sensitive programming languages make everything else harder. Why, you ask?

  • You keep having to switch between upper and lower case when typing, causing RSI in your poor little fingers as you reach for the inconsiderately located Shift key.
  • You are much more likely to make mistakes - are you sure you meant to type DateOfBirth, or should it have been dateofbirth?
  • When you accidentally leave Caps lock on, it really matters.

The only possible benefit is that you can use more combinations of variable names, that is, you can use more of one of the few infinite resources in this universe…

It doesn’t matter if you disagree with everything else in this article: case-sensitivity alone is sufficient reason to ditch C#!

2 – The Switch clause

Both VB and C# contain a way of testing mutually exclusive possibilities, the Select Case and Switch clauses respectively. Only one of them works properly.

A Visual Basic Select Case clause, returning a description of how old someone is. The age range for a young person is a tad generous, reflecting the age of the author of this article.

A Visual Basic Select Case clause, returning a description of how old someone is. The age range for a young person is a tad generous, reflecting the age of the author of this article.

Select Case AgeEntered

    
Case Is < 18
        txtVerdict.Text
= "child"
    
Case Is < 50
        txtVerdict.Text
= "young person"
    
Case Is < 65
        txtVerdict.Text
= "middle-aged"
    
Case Else
        
txtVerdict.Text = "elderly"

End Select

You can’t do this using Switch in C#, as - astonishingly - it can’t handle relational operators. You have to use an If / Else If clause instead. But even if you could, you’d still have to type in lots of unnecessary Break statements:

switch (AgeThreshold) {
    
case 18 :
        
txtVerdict.Text = "child";
        
break;
    
case 50 :
        
txtVerdict.Text = "young person";
        
break;
    
case 65 :
        
txtVerdict.Text = "middle-aged";
        
break;
    
default:
        txtVerdict.Text
= "elderly";
        
break;
}
 

It’s easy to forget to type in each of these Break statements!

3 – Event-Handling code

This is specific to Visual Studio (I’m using 2010, the latest version). Suppose I want to attach code to anything but the default Click event of a typical button:

Selecting the button

Let’s suppose that I want to attach code to the MouseHover event of this button.

I can do this in Visual Basic without leaving the code window:

a) First choose the object from the drop list.

Attaching the Mousehover code
Choosing the event to code

b)Then choose the event you want to code.

In C# you can’t do this – you have to return to the button’s properties window and choose to show its events:

Selecting the event in C#

You can double-click to attach code to this event for the selected button – but that’s the only simple way to create it for C#.

But it’s even worse than that. If you then rename a control (in this case btnApply) you have to re-associate the event-handler with the renamed control in the properties window (or in the initialisation code, if you can find it). In Visual Basic, of course, you can do all of this in code:

    Private Sub btnApply_Click(ByVal sender As System.Object,

        ByVal e As System.EventArgs) Handles btnApply.Click

 

        MessageBox.Show("Hello")

 

    End Sub

Globally change btnApply to the new button’s name in code, and everything will work as before.

4 –Stupid symbols

C# was written by academics. It shows. Consider this table of C# symbols and their VB equivalents:

What you're trying to do C# Symbol VB Equivalent
Test if two conditions are both true && and
Test if one or other condition is true || or
Test if a condition is not true ! not
Concatenate two strings of text + &
Test if a condition is true within an if statement == =

Which column looks like it was designed by a real person?

5 – Autocorrection in Visual Basic actually works

IntelliSense works much better for Visual Basic than for Visual C#. Take just one example – creating a write-only property. Let’s start with Visual Basic:

When you press return at the line end…

    WriteOnly Property PersonName As String

        Set(value As String)

 

        End Set

    End Property

… You get this fully-completed clause.

For C#, the same thing doesn’t happen:

When you press return here, nothing happens (other than a blank line appearing).

This is just one example. I’ve just spent ages transcribing our VB courses into C#, and believe me, there are many, many more!

6 – Lack of supported functions

Here are a couple of functions I use from time to time in VB:

Function What it does
IsNumeric Tests if a value can be converted to a number
PMT Calculates the annual mortgage payment for a loan

Great functions, but they don’t exist in C#.

7 – That wretched semi-colon

Why do I have to end every line in C# with a semi-colon? The argument used to be that it avoided the need to use continuation characters in Visual Basic:

MessageBox.Show( _
    text:
="This article is a bit opinionated", _
    caption:
="Message")

You used to have to use an underscore as a continuation character to show incomplete lines of code in VB.

However, as of Visual Basic 2010 you rarely need to do this anymore. Come on, C#: Visual Basic has ditched its line-ending character; why can’t you?(;)

Someone commented on my original (much shorter) blog about this:

    "In a short amount of time you'll type those semi-colons without thinking about it (I even type them when programming in visual basic)."

That’s like saying that you’ll soon get used to not having any matches to light your fire, and you’ll even start rubbing sticks together to start a fire when you finally manage to buy a box!

8 – Arguments and variables

The order of words in a C# variable declaration is wrong. When you introduce someone, you wouldn’t say, “This is my friend who’s a solicitor; he’s called Bob”. So why do you say:

string PersonName = "Bob";

To me:

Dim PersonName As String = "Bob"

…is much more logical. I also find the C# method of having to prefix arguments with the word out confusing, particularly as you have to do it both in the called and calling routine.

9 – Strictness

C# is a much fussier language than Visual Basic (even if you turn Option Strict on in Visual Basic, this is still true). “And a good thing, too!”, I hear you cry. Well, maybe. Consider this Visual Basic code:

Enum AgeBand
   Child
= 18
   Young
= 30
   MiddleAged
= 60
   SeniorCitizen
= 90
End
Enum



Select Case
Age
    
Case Is < AgeBand.Child
        
MessageBox.Show("Child")
    
Case Else
        
MessageBox.Show("Adult")
End Select

With Option Strict turned on this shouldn’t really work, as it’s comparing an integer with an enumeration – but VB has the common sense to realise what you want to do.

The equivalent in Visual C# doesn’t work:

A less forgiving language…

What this means is that you end up having to fill your code with messy type conversions:

The simplest way of converting an enumeration to an integer; but why should you have to?

// find out the age entered
int Age = Convert.ToInt32(txtAge.Text);

if (Age < (int) AgeBand.Child) {
    MessageBox.Show("Child");
} else {
    MessageBox.Show
("Adult");
}

10 – Redimensioning arrays

If you want to dynamically change the length of an array in Visual Basic, you can use Redim Preserve. To do the same thing in Visual C#, you have to copy the array, add a value and then copy it back:

The vile, clunky C# method of extending an array.

string[] PartyGuests = new string[2];

PartyGuests[0] = "Sarah Palin";
PartyGuests[1] = "Richard Dawkins";

// whoops! forgot to invite Mitt

// create a new extended array
string[] tempGuests = new string[PartyGuests.Length + 1];

// copy all of the elements from the old array into new one
Array.Copy(PartyGuests,tempGuests,PartyGuests.Length);

// add Mitt as last element
tempGuests[PartyGuests.Length] = "Mitt Romney";

// restore full list into original array
PartyGuests = tempGuests;

// check works
foreach (string Guest in PartyGuests) {
    System.Diagnostics.Debug.Write
(Guest);
}
 

This epitomises Visual C# for me. Critics will tell me that:

  • Behind the scenes, the Redim Preserve command does exactly the same thing as the C# code above; and
  • I should be using lists and not arrays anyway.

That’s hardly the point! The point is that - as so often - Visual Basic makes something easier to code than C# does.

Conclusion

So those are my 10 reasons to code in Visual Basic. What are you waiting for, all you C# code-monkeys? Convert all of your code to VB – you have nothing to lose but your semi-colons!

Andy Brown

Author profile:

Andy works as a trainer and consultant for Wise Owl Training, providing SQL Server, .NET, Visual Basic and (reluctantly!) C# training for businesses in the UK.

Search for other articles by Andy Brown

Rate this article:   Avg rating: from a total of 1270 votes.


Poor

OK

Good

Great

Must read
Have Your Say
Do you have an opinion on this article? Then add your comment below:
You must be logged in to post to this forum

Click here to log in.


Subject: funny
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 08, 2012 at 10:18 AM
Message: even seeing that vb syntax makes me wanna puke.
but that's just me :)
good article though,thanks.

Subject: Madness
Posted by: karolis (not signed in)
Posted on: Thursday, March 08, 2012 at 11:16 AM
Message: The points made in this article are pretty weak. Actually, very weak. Complaining about case sensitivity is ridiculous and the boolean operators in C# are those that are used by most of other languages..
But do not get me wrong - by no means am I defending C#. All the .NET platform is disgusting in my linuxy eyes.

Subject: Implementing interfaces
Posted by: nick harrison (view profile)
Posted on: Thursday, March 08, 2012 at 11:40 AM
Message: I normally try to be neutral on the merits of the two different languages. My preference is for c#, but if you prefer VB.Net, more power to you.

For the most part the two languages are functionally equivalent. However, I have found and frequently run into one glaring problem. C# will allow code to implement interfaces that VB.Net will not recognize. This often has implications to my software designs.

If I have an interface that requires a getter on a property, c# will not complain if the implementation also has a setter. VB.net on the other hand will not consider the interface implemented.

I have also found in clunky and cumbersome that you had to explicitly state what each method or property was implementing. C# will automatically match the method signatures and property names to determine what is matching what. With VB.Net you have to explicit and this is the only work around to the limitation mentioned earlier.

If you have one interface requiring a getter and a separate interface requiring a setter, the one property can implement both interfaces in C#. With VB.Net, two separate properties will be required.

Before I understood this limitation, I had 3 interfaces that my UI needed to implement. One required a get for a dozen or so properties. One required a set for the same properties. The final one specified a a get and set for each of these properties. Everything worked well in csharp code, but when another developer insisted on doing the UI in VB, we were both shocked to discover that we needed three times as many properties as anticipated.

Granted, this turned out to be a bad design for our application, but this is a limitation that few people acknowledge.


Subject: No difference to me
Posted by: Henk Simmelink (not signed in)
Posted on: Thursday, March 08, 2012 at 12:56 PM
Message: Hi,

For me it makes no difference which language one uses.

The only thing i do not understand why the result is not the same in both languages:

dim a = 0
if a = nothing then a.dump()

var a = 0;
if(a == null) a.Dump();


Subject: tahts...
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 08, 2012 at 1:45 PM
Message: ... crazy talk :-)

Subject: Your take on booleans is wrong.
Posted by: GB2003 (not signed in)
Posted on: Thursday, March 08, 2012 at 2:08 PM
Message: This is not a "your opinion is wrong" statement. This is a "you just compared apples to oranges" statement.

In short, your comparison should have shown this:

C#: &&, VB: AndAlso
C#: ||, VB: OrElse

Those are the equivalent operators. "And" and "Or" in VB.Net (1.0 and up) do NOT short-circuit. They will compare all expressions in the predicate.

Outside of that, your article is a good read and funny as well.

Subject: Finally someone with sense
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 08, 2012 at 2:16 PM
Message: C# is an attempt to appease a group of idiots that where using an antiquated language like C++ which was an attempt to appease idiots that where using an antiquated language like ANSI C which was an attempt to appease idiots that where using K&R C.

The idea was bad from the start. It has always been a poorly designed language that simply drives up development costs. While it might have been good in the 70's, now it makes as much sense as coding in assembler.

Subject: where is the editor
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 08, 2012 at 2:18 PM
Message: I can't believe the editor there let you publish something like this article !

Subject: Thoughts on case insensivity...
Posted by: Damon (view profile)
Posted on: Thursday, March 08, 2012 at 2:31 PM
Message: http://www.simple-talk.com/community/blogs/damon_armstrong/archive/2012/03/08/106574.aspx

Subject: C# vs VB
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 08, 2012 at 3:07 PM
Message: One can write anything in VB that can be written in C#, and usually much quicker. Seeing that case sensitivity BS (!) makes me want to vomit.

Subject: You should correct your title
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 08, 2012 at 8:36 PM
Message: I can't find any reason why VB is better than C# in your post. You just wrote why you prefer VB than C# on your biased view. I don't mind your preference - it's your choice.

I saw these kind of articles about 10 years ago. But now it's 2012. Please don't waste time.

Subject: Check mate
Posted by: Anonymous (not signed in)
Posted on: Friday, March 09, 2012 at 2:24 AM
Message: .net is written in c#

Subject: Hummmm....
Posted by: Colin Bull (not signed in)
Posted on: Friday, March 09, 2012 at 5:15 AM
Message: This is crazy...

1. Case Sensitivity,
I definitely want to know weather I am accessing a field or a property as the property may have some behaviour it encapsulates before getting or setting the field. Also your example is flawed, why not just use auto properties,

public string Name { get; set; }

2. The switch clause

The example you give here is actually an if/else statement, later in section 9 you moan about strictness against and enum that you cant implicity convert it to an int, in this case you should be using a switch.

Also I'm presuming that you cant deal then with mutliple case in a single stmt, i.e.

switch(foo.Type)
{
case Element:
ProcessNext(foo.Next())
break;
case Var
case Number
case Literal:
Console.WriteLine(foo.Value)
default:
throw new ArgumentException()
}

3. Event handling

Fair enough if you are a click and point developer . But really is

btnApply.Click += HandleApply;

that complicated, Oh yeah, and if you use the refactoring tools to rename btnApply, this will get cascaded to all of the references.

4 - Stupid Symbols,

Of course this is just preference and there are errors, mentioned above, but it does highlight a valid point.. That you actually raise about syntatic noise, As far as I can see semi-colons are about the only thing you lose VB / C# hwoever the amount of other noise that is about in VB is tremendous.. Just take a look at lambdas or generic type declarations

Besides if you are bothered about syntatic noise, move to F# or Haskell...

5 - Autocorrection,

That is not intellisense I don't think I believe that is snippets your seeing there.

6 - Lack of functions,

IsNumeric -> errr, float.TryParse??

PMT -> Really should this be in a language, or even in the .NET framework I don't think so, besides it is an easy enough function to implement.

7 - Semi Colon,

MessageBox.Show(
"foo",
"Message"
);
Is valid C# and no underscore...

8 - Arguments and variables

IMHO the C# is less typing and more concise, and just as revealing, And typically if you find your self using out alot why not return a tuple instead. Or create a class / struct to represent the return type.. Far more revealing to a user of an API.

9 - Strictness

Already commented on this, but one additionally thing it lets the compiler move a class of errors, for you. I'd rather have the compiler check and force me to be explicit about the cast to amke sure I definately want to do it.

10 - Redimensionsing Arrays,

I think list.Add is fairly easy dont you??







Subject: I disagree!
Posted by: Anonymous (not signed in)
Posted on: Friday, March 09, 2012 at 7:27 AM
Message: Let's not forget that C#, because of its stripped down syntax (which was a way to save keystrokes when CPU cycles were expensive) is much "smarter" looking than the relatively English-like syntax of VB.

I mean, it's got "Basic" in the name for a reason, amirite?

Subject: completely agreed
Posted by: Travis Laborde (not signed in)
Posted on: Friday, March 09, 2012 at 10:24 AM
Message: I switched from VB.NET to C# a few years ago, and now it seems just fine to me, but... your points are right on.

As you pointed out in your first point - case sensitivity alone should end the story.

Subject: Those Who Forget History...
Posted by: BuggyFunBunny (view profile)
Posted on: Friday, March 09, 2012 at 4:08 PM
Message: C# was created as M$'s response to java, recall? VB.NET created great hate amongst the VB6 crowd? Both generate the same intermediate, which is why it's so foreign to the VB6 crowd. VB6 was the last "real" VB. .NET is an impostor.

Subject: Joke?
Posted by: Anonymous (not signed in)
Posted on: Friday, March 09, 2012 at 11:55 PM
Message: This is almost a work of pure fiction.

Subject: Right on
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 1:04 AM
Message: You are 100% right, and seriously there are so many other reasons not even mentioned here, someone should compile all reasons together.

Subject: Right on
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 1:04 AM
Message: You are 100% right, and seriously there are so many other reasons not even mentioned here, someone should compile all reasons together.

Subject: haha
Posted by: Peter Ashford (not signed in)
Posted on: Saturday, March 10, 2012 at 3:27 AM
Message: Nice troll! Very good work. No-one could be that much of a moron.

Subject: Great post
Posted by: Terry (not signed in)
Posted on: Saturday, March 10, 2012 at 4:24 AM
Message: Outside of this:
&& and
|| or
which should have been
&& AndAlso
|| OrElse
this was a great article that hilariously points out some of the more glaring problems with C#. I 've spent a lot of time working with C# and for sure I can say that VB.NET just is better about getting out of your way and letting you get work done in terms of IDE and compiler support. I 1000% agree but sadly the .NET industry has settled on C# as standard but I'll keep fighting the VB.NET ,Python or Ruby fight on my personal projects. Semicolons and curly braces absolutely stink.

Subject: @dotnetchris
Posted by: chris marisic (not signed in)
Posted on: Saturday, March 10, 2012 at 12:17 PM
Message: Silly list is silly.

Subject: Good for You!
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 12:44 PM
Message: I coded a lot form vb3 to vb6, now I happily using c# and not looking back. N
Use what fits you better.

Subject: Funny as f##k
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 1:36 PM
Message: You must win a prize or something, you found the 3 things VB has that c# doesn't, Java, ECMA, C, ruby, PHP are all doing it wrong

Subject: Funny as f##k
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 2:01 PM
Message: You must win a prize or something, you found the 3 things VB has that c# doesn't, Java, ECMA, C, ruby, PHP are all doing it wrong

Subject: Tongue-in-cheek?
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 2:32 PM
Message: When I read the intro describing the article as being written "tongue-in-cheek", I was expecting some comparisons which were obviously meant to be funny, like showing how VB makes it so much easier to do something that's universally accepted to be bad ... like using gotos or something. The switch statement example comes close, since good designs rarely make use of switch statements, preferring rather to adhere to the open/closed principle, but the majority of developers haven't heard of the SOLID principles so this seems less likely to be tongue-in-cheek. Over all, these are all legitimate points, and while I don't fully agree with all of them or believe they make up for the odd, wordiness of the VB language, I fail to see how this article is intended to be understood as being written tongue-in-cheek. That is, unless you mean the archaic meaning of contempt. Did I miss something?

Subject: but what about...
Posted by: RichB (not signed in)
Posted on: Saturday, March 10, 2012 at 4:12 PM
Message: I prefer C#, but You missed some of the really quite nice VB.Net features. eg parameterized properties and filtered exceptions. These have been in the language since the start.

Subject: Procedural is procedural is procedural
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 10, 2012 at 4:39 PM
Message: 1. Hungarian Notation

2. Lack of understanding of abstract data types. An array? Seriously? Is this 1999?

*Takes Geek card*

*Rips to shreds*

Subject: can you recommend a good book?
Posted by: Alex_Kuznetsov (view profile)
Posted on: Saturday, March 10, 2012 at 6:56 PM
Message: Andy,

You sold me, I can't wait to try this VB thing out. Can you recommend some good books and tutorials on VB.Net?

Subject: Frightening
Posted by: Jon Wingfield (not signed in)
Posted on: Saturday, March 10, 2012 at 7:39 PM
Message: It's scary how shallow this post is. Are you really evaluating a language based on the tooling? There are actually some things that I find better about VB.NET than C#, but you didn't mention even one of them.

Subject: @Henk
Posted by: Anonymous (not signed in)
Posted on: Sunday, March 11, 2012 at 5:00 AM
Message: The correct VB translation is :
If a Is Nothing then...
"is" being the comparison for reference types. It wouldn't compile as an integer is not a reference type.
if a=nothing compares value types and nothing is the default value for an integer (as this is the default value for a reference type when used in a "is" comparison). So the C# translation would be :
if (a==default(int)) ...

Subject: Don't cry
Posted by: Anon (not signed in)
Posted on: Sunday, March 11, 2012 at 7:23 AM
Message: Don't cry if all of the MS samples are written in C#! Just relax!

Subject: Actually, its correct!
Posted by: Jwalant Natvarlal Soneji (not signed in)
Posted on: Sunday, March 11, 2012 at 2:18 PM
Message: Good article! C# is getting more than what is its useful for. Its a mistake by the old, lame C, C++ guys....

Subject: VB.NET is for real programmers!
Posted by: RobCroll (not signed in)
Posted on: Sunday, March 11, 2012 at 9:33 PM
Message: Good try Andy but C# programmers are the best and they know it. ;)

Subject: Uhm?
Posted by: Kevin (view profile)
Posted on: Monday, March 12, 2012 at 2:05 AM
Message: This was posted as a joke, right?
Not only are your "facts" about C# way off, you almost only seem to be talking about IDE functionality instead of the language...

Subject: You know your way in VB
Posted by: Thomas Eyde (not signed in)
Posted on: Monday, March 12, 2012 at 2:07 AM
Message: If you only knew your way around in C# equally well, you would never have written this article.

I am a former VB6 developer, and I really liked that language. There's a reason I never went for VB.NET.

Subject: Wrong, Big TIME
Posted by: Bill Gate (not signed in)
Posted on: Monday, March 12, 2012 at 2:09 AM
Message: you're wrong, BIG TIME!!!
This article just proves one thing, YOU DON'T KNOW SHIT ABOUT C#

Subject: Not sure if troll or terrible programmer.
Posted by: Tony Dieter (not signed in)
Posted on: Monday, March 12, 2012 at 2:22 AM
Message: This is a terrible article based on opinion alone and unbalanced. I can name counter arguments for just about all points which are essentially flip sides of the same coin. Glossing over points 1, 2 and 3 (which is a gripe about the IDE, getting mixed up here already), the other points are worse.

Point 4 proves the author has no clue what he's talking about. "C# was written by academics." just shows that the author clearly has no idea of heritage that is the C language, which always used these symbols.

Point 5 is that autocorrection should NEVER be a feature, I consider it a bug. It means you can't write valid code yourself (pretty easy, millions of people a day to this). Autocompletion on the other hand is a real time saver, and works in C# just as well (again though, IDE)

On point 6, VB.NET lacks some critical features that C# has, such as unsafe code and much more. Clearly, some stupid library functions which can probably be used by linking to microsoft.visualbasic.dll cannot make of for this.

Point 9 claims that "but VB has the common sense to realise what you want to do.". Again, it's a computer so it cannot and should not be guessing what you as the coder seem incapable of expressing.

Finally, point 10 proves you're doing it wrong. Use a collection and do it properly, instead of coding like it's 1995, or in performance critical apps, at least you know where your copying is happening.

The author must have minimal real world experience or missed the transition from VB to the .NET era. It's like the author is still coding with a VB mindset and failed to embrace .NET principles. Plus, strictness is a HUGE asset for large projects. All these points are hallmarks of someone with terrible coding skills or a highly skilled troll (not sure... :).

Subject: You're forgetting the best one...
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 2:23 AM
Message: You can declare an event without having to explicitly create a delegate for it. That makes event handling in VB a lot easier than in C#

Subject: hilarious!!
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 3:10 AM
Message: That's the funiest comparison I've ever seen, so retard to do such a comparison! Is this the way you compare two programing languages!! ahhahaha

Subject: Funny facts
Posted by: A2 (not signed in)
Posted on: Monday, March 12, 2012 at 3:21 AM
Message: Remember everything is translated to IL in the end but I disagree with the most content of this article.

C# syntax (because its similar to C++) is elegant and professional. VB is for dummy developers who doesn't want to know anything about anything and they're forced to work as developers (for some reason) with all respect to VB guys :-D

I think the writer lacks some decent knowledge in .NET (again with all the respect)

Subject: Don't confuse VS with C#
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 3:56 AM
Message: I agree with many of the comments above but would also add that how Visual Studio decides to add a UI (adding events/autocorrect for example) are no failing of C# as a language they're a failing with Visual Studio!

Subject: Please stop
Posted by: Leo (view profile)
Posted on: Monday, March 12, 2012 at 4:25 AM
Message: I think the election of a certain language should reside on its capabilities more than just semicolon or an ide menu issue. This is just a "what I like about VB above C#" more than "Is VB actually a better programming language than C#?" I am pretty sure you can generate the same results, keystrokes more, keystrokes less with both
I think in the end we are witnessing just another round of the vb/C# holy war. We should better be talking about who is the best captain, Kirk or Piccard. Got it?

Subject: What?
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 4:28 AM
Message: Spock is not impressed with this article.

Subject: C# devs use Resharper
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 5:03 AM
Message: If you start comparing IDE features, compare it with Resharper!

Subject: Oh. My. God.
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 5:42 AM
Message: Either you are all trolls, or all insanely stupid. The article is clearly written as a joke.

Subject: More choices for developers
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 7:07 AM
Message: Each one has something that the other does not have. Better or worse is often subjective.

Subject: Confirming what I have suspected for years
Posted by: Chicken Leg Willey (not signed in)
Posted on: Monday, March 12, 2012 at 7:14 AM
Message: Thank you. I have been programming professionally in Basic and VB since 1979. I looked at using C and dismissed it decades ago (literally).
All of the VB haters attacking this article need to realize they are just insecure little whiners protecting what they know.

Wake up guys it is all just syntax!

Subject: You know what I really hate about C#?
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 7:30 AM
Message: It basically forces you to use lists. I mean how stupid?
I mean seriously, as if you wouldn't know the maximum size you'll need for your array at compile time.
Not to mention the fact that i'd have to learn a whole new language!
That would be the worst!

Subject: Semicolons
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 8:03 AM
Message: funny how someone can complain about a 1 char semicolon and not complain about the
ending semantics like
if
end if

while
end while

and so on just look at the property that u defined
i.e. End Set, and End Property

a simple } would do in C#

Subject: $$$
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 8:37 AM
Message: You specialize in VB.NET, I'll specialize in C#. Then let's both look for a job and see who comes out ahead. :)

Subject: Whats the point
Posted by: AmightyWInd (not signed in)
Posted on: Monday, March 12, 2012 at 8:41 AM
Message: I don't even understand why VB.NET is still around. I believe it was a tribute to the 6 million VB developers at the time, of which I was one of them.

It's really time to ditch VB, its nothing like any other language. (And that's a bad thing - for YOU).

I swallowed the Red pill, and went all in on C#, and I don't have any regrets.

That type coercion that VB just handles for you, because "It knows what you want" is the core of its flaw.

Here's a real world example....

If you have an object model inheriting from a base class, that has events, and you serialize that object - vb casts a "hidden Delegate" back to the sending code. That defeats the entire purpose of serialization in the first place....

To simplify: you have a reference you don't know about in Code B, back to Code A...

Now that could be a application deal breaker.

Case Sensitive - I love it, it keeps me from naming things within the same scope and getting odd results.

IMHO - this conversation smells of 2002.





Subject: and so it seems...
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 8:41 AM
Message: public string rant{

...yer a complete idiot when it comes to C# and WiseOwl would benefit by giving you walking papers... Not a single thing you pointed out is significant enough for a 10 point rant full of C# rage like yours above.
}

if (the article IS in fact meant to be humourous, and is a joke){ x++ to you } else { get a life }
}

Subject: Five+ stars
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 8:47 AM
Message: Best article I've read in a long time. And the responses bring out the significant attitude problems of the self-professed C,C++,C# elitists. It seems they like to keep their 'craft' above the comprehension of mere mortals. Five+ stars Andy.

Subject: Better?
Posted by: Adam (view profile)
Posted on: Monday, March 12, 2012 at 8:50 AM
Message: VB better than C#? Really?

I think you just favor the syntax.

Subject: 4 –Stupid symbols
Posted by: the Kris (not signed in)
Posted on: Monday, March 12, 2012 at 9:00 AM
Message: LOL, why not replace all operators by words then? Equally stupid:

+ -> AddedTo
- -> SubtractedFrom
* -> MultipliedBy

Dim a As Integer = b AddedTo C MultipliedBy d
or
Dim a As Integer = b Plus c Times d

I couldn't find a good replacement for '=' though...

Subject: Hilarious
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:06 AM
Message: This article is one of the funniest programming jokes I've seen in recent times.

Subject: Dim
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:23 AM
Message: Dim vbProgrammer As Hack

Subject: Two words why VB > C#
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:25 AM
Message: With blocks.

Subject: Very weak
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:29 AM
Message: You lost my respect when you brought up case-sensitivity.

Subject: re: 4 –Stupid symbols
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:32 AM
Message: Word for '=' could be "Assigned"

Dim a As Integer Assigned b Plus c Times d

And what's with that 'Dim' thing when declaring a scalar variable?

Subject: re: 4 –Stupid symbols
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:38 AM
Message: Word for '=' could be "Assigned"

Dim a As Integer Assigned b Plus c Times d

And what's with that 'Dim' thing when declaring a scalar variable?

Subject: Are You Just Trying to Pick a Fight?
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 9:46 AM
Message: It should be obvious that VB.Net is purposely designed to appeal to former VB'ers, while C# is purposely designed to appeal to the Java/C/C++ crowd.

Subject: Is a pointless task to convince them!
Posted by: Walter (not signed in)
Posted on: Monday, March 12, 2012 at 11:52 AM
Message: Is a good article but is like to convince a billion chinese people to write in english because their lenguage stinks!!!! :)

By the way, I use c# because is closer to Java, C/C++ and Objetive C (and almost all).

Maybe in 50 years, our childs use VB!

VB Rocks!




Subject: Automagic is not always better
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 11:58 AM
Message: Years ago I had to write some ptr heavey code using Turbo Pascal. It was a great language of its time much like VB. I never did have the time to get all the bugs out of the ptrs but one day Windows shipped in 1990 and the only way to prgram was in C. I had to port the code and learn C at the same time. The fact that C did little to help forced me to do something with the ptrs...Think. The fact I had to think about what the ptrs where doing in all cases resulted in code with fewer bugs. In this case thinking trumped automagic.

Subject: Is a pointless task to convince them!
Posted by: Walter (not signed in)
Posted on: Monday, March 12, 2012 at 12:31 PM
Message: Is a good article but is like to convince a billion chinese people to write in english because their lenguage stinks!!!! :)

By the way, I use c# because is closer to Java, C/C++ and Objetive C (and almost all).

Maybe in 50 years, our childs use VB!

VB Rocks!




Subject: Different is not better. Get over it!
Posted by: Charles Kincaid (view profile)
Posted on: Monday, March 12, 2012 at 1:01 PM
Message: I have written in practically every version of Basic inclding things prior to Visual ANYTHING.

The two are different. Yet what you have to look at is what actuallye gets run. In Dot Net everything compiles down to IL. Get a decompiler and look at cdoe written (and written well) in both VB and C#. Remarkably similar IL.

C# make YOU do more work. Very little question of it. Also most folks agree that the IDE for VB is way better than the IDE for C#. So blame the IDE and not C#. The C# crowd should be down Microsoft throat to make the C# IDE better and not to make the VB IDE worse.

I'm migrating to C# and as an old dog (read as antique) it's tough. Yet I'm doing it.

Oh, by the way. If there were a great IDE for IL I would vote to send both VB and C# into the trash bin. let me write close to the harware so that my code works right and runs fast.

Both C# and VB compile to some damn stupid code.


Subject: Wow!!!
Posted by: Paul L (not signed in)
Posted on: Monday, March 12, 2012 at 1:59 PM
Message: You have a job? I'd say this article essentially shows you to be unemployable. At least I'd never employ somebody with such a fundamental lack of knowledge, claiming they know everything.

Look up 'Dunning–Kruger effect' on Wikipedia. Take heed.

Subject: Is a pointless task to convince them!
Posted by: Walter (not signed in)
Posted on: Monday, March 12, 2012 at 2:08 PM
Message: Is a good article but is like to convince a billion chinese people to write in english because their lenguage stinks!!!! :)

By the way, I use c# because is closer to Java, C/C++ and Objetive C (and almost all).

Maybe in 50 years, our childs use VB!

VB Rocks!




Subject: I love it!
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 3:08 PM
Message: Those saps think you're joking.

Subject: Pointless
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 3:33 PM
Message: This type of arguement is pointless. You couldn't think of anything creative and/or ihnformative to write about?

Subject: Retarded
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 4:17 PM
Message: Retarded article. C# Pawns VB.NET right in the kisser :D

Subject: Like a baws
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 4:18 PM
Message: C# Owns VB like a baws.

C# is made 100% for .NET,

Subject: Point 5... Really!!?
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 5:08 PM
Message: Hang on a sec...
Point #5... whoa whoa wait a sec! I dont know if you lack understanding in C# here, or if you're deliberately making VB's flaw as its strength.
In C#, you do NOT need to declare parameter (and its type) of a property's setter!
Therefore, well, obviously there's nothing to autocomplete there, because you literally do not need to type anything!
Whereas in VB, you have to (redundantly) type the paramter and its type when you make a setter, and this verboseness requires IDE intervention to *hide* the ugliness by generating this meaningless boilerplate code for you.
This is obviously a flaw in VB.NET setter, and it's bordering comedic how you describe it as a strength.

Subject: Autocomplete
Posted by: Anonymous (not signed in)
Posted on: Monday, March 12, 2012 at 5:14 PM
Message: When you type set{... in c#, nothing appears on your autocompletion. You know why?
Because there is nothing more you need to type! That's it, setter declaration is just that. The next line would be your setter body.
Unlike c#, in vb.net, you need to REDECLARE your parameter type again (value as String), and obviously Visual Studio team recognizes this silliness of the language and generates it automatically for you.
This is not a feature! It's like saying (following your matchbox analogy) that matchbox is better than a zippo, because zippos don't come with striking stripes.

Subject: VB.NET is for real programmers!
Posted by: RobCroll (not signed in)
Posted on: Monday, March 12, 2012 at 5:25 PM
Message: Good try Andy but C# programmers are the best and they know it. ;)

Subject: VB.NET
Posted by: homemade pizza (view profile)
Posted on: Monday, March 12, 2012 at 7:04 PM
Message: than VB i prefer PHP...

Subject: Pfff...
Posted by: Rod Rodrigues (not signed in)
Posted on: Tuesday, March 13, 2012 at 5:22 AM
Message: I wish I could also write articles like you while drunk, stoned or both...

Subject: Get your facts right.
Posted by: Snake (not signed in)
Posted on: Tuesday, March 13, 2012 at 6:12 AM
Message: To be honest, you should get your facts right when posting stuff like this. Read my response.

http://kristofmattei.be/2012/03/12/get-your-facts-right/

Subject: To the one who commented "Finally someone with sense"
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 8:12 AM
Message: First of your pretty judgemental. Idiots you say.

Normally I am not critical on the language, I don't want to bad mouth a language. I developed in a lot of languages. From Assembly, C, C++, Visual C++, GNU C/C++, Visual Basic, C#, Java, PHP, ASP. I believe its the customer's preference, anyone's preference, and sometime on the situation, environment or technology.

If you want more control and you need to be involve in what should be going on under the hood its C, C++, Assembly even. Specially for hardware oriented or protocol oriented work.

If its rapid development, and memory, speed is not an issue you can go with Java, C#, Visual Basic.

Why would you call someone who needs to know more detail and control under the hood idiots? You do know another judgemental person can see it as the other way around.

For the sake of not causing any fights I'll stop here. Do not be judgemental all programming languages have merits. Sometimes its use is a matter of a lot of factors.

Subject: Two of these points are criticisms of the IDE
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 8:50 AM
Message: Not the language.

Also VB.Net causes aids.

Subject: Everything I hate about our industry
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 9:06 AM
Message: Glad you are a consultant and not a real developer doing anything useful. Just feel sorry for the people you "train".

You can prove me wrong by providing us with a github account where I can see your contribution to our .NET community. Rather than this blog post that is in bad taste, designed to provoke a reaction in the flawed VB vs C# debate (we are all on the same side as Microsoft .NET developers). All so you can shamelessly promote yourself whilst contributing zero. Everything I hate about our industry.

Subject: Love your website
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 9:09 AM
Message: Love your website http://www.wiseowl.co.uk/ was in done in frontpage with VB.NET

Subject: Very Dim :)
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 9:10 AM
Message:

Subject: I use VB.Net every day
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 9:19 AM
Message: So I speak from a position of knowledge when I say this. VB is terrible. It encourages laziness in ways that break programs. C# and other languages are better because if you don't know what you're doing, your program doesn't compile. VB is worse because you think you're being more productive, because it isn't flagging your errors. In reality, you are only creating runtime errors in the future as the compiler tries to be too flexible.

Subject: Really, letting the compiler find your errors for you?
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 10:19 AM
Message: That's the very definition of lazy. And of breathtakingly poor programming.

Subject: I agree... mostly.
Posted by: mpalmer (not signed in)
Posted on: Tuesday, March 13, 2012 at 10:59 AM
Message: I have built hundreds of projects in both C# and VB.NET since 2002 and I agree that VB.NET is more productive when using Visual Studio. I can whip through a code file much quicker in VB.NET than I can in C#, even if I've used C# exclusively for several projects in a row... when I get back to VB it's a breeze again. I also enjoy reading VB better, much more blocked and concise to my eyes.

But, all of these feelings are personal preference and I wouldn't say empirically that one is better than the other. I would say so on a personal-level.

Boy, you sure opened up the flames though! HAHA!

Us nerds can get pretty passionate about technology, sheesh. Bunch of dorky geeks.

Subject: Rubbish...
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 13, 2012 at 12:19 PM
Message: "... VB has the common sense to realise what you want to do ..."

That doesn't seem to apply to properties:
"... WriteOnly Property PersonName As String ..."

In C#, as with VB6 and earlier, a property with a getter and no setter is read-only; a property with a setter and no getter is write-only. In VB.NET, they're both a compiler error unless you tell the compiler, "yes, this is really what I want to do".


ReDim Preserve? Try Array.Resize instead.
var PartyGuests = new[]
{
"Sarah Palin",
"Richard Dawkins"
};

Array.Resize(ref PartyGuests, 3);
PartyGuests[2] = "Mitt Romney";


Missing PMT? If your wife can't help, try adding a reference to the Microsoft.VisualBasic assembly and using the Microsoft.VisualBasic.Financial class.


Strictness? Great, let's all go back to the days when "5" + "7" = "12" (instead of "57"). After all, the only reason VB introduced "&" for string concatenation was to avoid the evil type-coercion errors that resulted from using "+".

Subject: good for you (and good luck!)
Posted by: benjamin.raibaud (view profile)
Posted on: Tuesday, March 13, 2012 at 4:31 PM
Message: Great; yet another VB developer trying pretend VB is still alive and still ahead of anything else. Honestly if you feel better after having written this article, good for you. I feel like you are the only person you are trying to convince. Long story short: VB developers are terrible developers most of the time. They don't really understand what they are doing. How come 95% of the .NET community has missed such a great language?

Subject: I demand an additiaonal post!
Posted by: Emmett Childress (not signed in)
Posted on: Tuesday, March 13, 2012 at 9:52 PM
Message: How could you leave out the lambdas and linq expressions?

Subject: Metro Development
Posted by: Emmett Childress (not signed in)
Posted on: Tuesday, March 13, 2012 at 10:01 PM
Message: Vb is so awesome that wp7 development supported those whinny c# clowns to keep the peace http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/6e154937-4b28-4873-aa5d-636b758da949/. The zombie apocalypse will be started by c# developers making pitiful attempts at Metro-style interfaces.

Subject: VB is a more "intelligent" and more user-friendly language
Posted by: Anonymous (not signed in)
Posted on: Friday, March 16, 2012 at 11:52 AM
Message: You are 100% right. There are several other reasons why VB is more "intelligent" and more productive. May me user-friendly is teh most serious of all arguments...

Subject: Have you tried to teach a new-comer programming?
Posted by: Anonymous (not signed in)
Posted on: Friday, March 16, 2012 at 11:54 AM
Message: I have used both languages (C# and VB) to teach newcomers programming. VB is DEFINITELY MORE USER-FRIENDLY and you can get results MUCH MUCH quicker...

Subject: A suggestion...
Posted by: Anonymous (not signed in)
Posted on: Friday, March 16, 2012 at 11:55 AM
Message: I suggest that Microsoft merge the two, provided they make C# look like VB

Subject: RE: A suggestion
Posted by: Anonymous (not signed in)
Posted on: Friday, March 16, 2012 at 1:20 PM
Message: You'd have to get in Mr. Peabody's WABAC Machine (for those on the East side of The Pond: http://en.wikipedia.org/wiki/WABAC ) and go slam on Bill and Steve's heads: they decided to make VB6 (calling the result VB.NET) look like C# in order to get a single IL stream. Merging's done, and C# won. Water under the dam.

Subject: Can't we all just get along?
Posted by: John Glasgow (not signed in)
Posted on: Saturday, March 17, 2012 at 7:39 AM
Message: I really don't see what the big deal is, they both have their merits VB is more for business developers and C# is more for software developers. I have a good article which discusses iterpretted vs. compiled code, somewhat similar of a discussion.
http://wp.me/p175D9-h

Subject: Can't believe
Posted by: Anonymous (not signed in)
Posted on: Saturday, March 17, 2012 at 2:10 PM
Message: Visual Basic is a better programming language than Visual C#. Who says so? This article! Here are 10 reasons why you should always choose VB over C#.

Every reason you stated is either wrong or you didn't do your research properly. Colin Bull said it all to you. Stop writing stupid "articles" is you can even call this annoying post.

Subject: Horrible article
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 12:37 AM
Message: I'll jump on the bandwagon and agree with everyone else that this is a horrible article that I can't believe made the light of day. I honestly don't care if someone prefers VB over C#, but the arguments presented in the article seem weak and petty and best, and show a distinct lack of knowledge at worst.

Subject: Unconvincing
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 3:58 AM
Message: Quite right about the switch statement but the rest...
Point 9 is wrong - make the enum inherit from int and it would work.
The point about RSI is laughable - VB is so much more verbose in almost every aspect.

Subject: It not about the language, it about the programmers that choose each.....
Posted by: Ian (view profile)
Posted on: Monday, March 19, 2012 at 4:14 AM
Message: I have worked on both C# and VB.NET project, as far as the syntax goes, I like C# better as I have been using ‘C based syntax’ for the last 20 years however it is clear that VB.NET syntax is good enough.

However I have found that the C# projects tent to have much better code quality – maybe this is due to the background of a lot of c# programmers.

Therefore given choose between a C# and a VB.NET job, I will take the C# job along with a lot of other very experienced developers. Therefore the C# projects will tend to have better code quality…. (Warning infinite recursion!)

Subject: We all missed the real point.
Posted by: Richard (view profile)
Posted on: Monday, March 19, 2012 at 4:17 AM
Message: Q - Why did he convert the VB course material to C#?

A - Because there are sooooo many more customers.

People who care enough to buy training are far more likely C# users.

Subject: Select Case can be True
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 4:44 AM
Message: VB Also allows:

Select Case True
Case A = B
Case E < F
Case Else
End Select

Subject: My opinion
Posted by: Haris (view profile)
Posted on: Monday, March 19, 2012 at 4:48 AM
Message: Either this article was deliberately written to actually tell the truth that C# is far better than VB, OR there is some serious problem with Simple Talk's article selection.

Subject: Fully Agree
Posted by: Bassam (not signed in)
Posted on: Monday, March 19, 2012 at 4:50 AM
Message: after 20 years of programming, used many languages, VB syntax is for sure much superior, clear than C# and much productive also , we are sticking with VB , we do LOB database applications.

Subject: Better for what?
Posted by: Bodycheetah (not signed in)
Posted on: Monday, March 19, 2012 at 4:56 AM
Message: So you prefer a scripting language to a programming language. Fair enough but you may as well argue that Python is better than C++.

Subject: And is not &&
Posted by: Frávio (not signed in)
Posted on: Monday, March 19, 2012 at 5:09 AM
Message: && means AndAlso
& means And
|| means OrElse
| means Or

I work with both languages, using VB as default (I came from old ASP and VBScript). Love both of them, and sometimes I like to alter between them.

Subject: real people?
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 5:15 AM
Message: When you say "Which column looks like it was designed by a real person?" Does this mean academics aren't real people?

I develop mainly in VB.NET but have my own projects in c#. The reasons given in this article just make you look like you're ignorant to c# and should you really be giving training to other people?

This is the first time I've read a simple talk blog and it'll be my last.

Subject: Why can't we all just get along?
Posted by: Freedom of choice (not signed in)
Posted on: Monday, March 19, 2012 at 6:10 AM
Message: Let's all just agree to disagree.

There is no solution to the VB vs C# debate.

I've written code in both and in the end the MS folk has managed to do a good job of making the arguement for either pretty much moot.

Microsoft's message to developers is pretty simple - pick your favorite language and write code that works.

Frankly - I like a development enviroment that allows me to make a choice with almost no built-in compromise.

Subject: Love it
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 7:00 AM
Message: It's funny how you got all these C# monkey's undies in a bundle. You pissed on the side of their private club house and now they are plotting their revenge...

Subject: Windows 8 is written in VB.Net
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 7:29 AM
Message: Windows 8 is written in VB.Net with some C# for performance.

Subject: Inferiority Complex
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 8:04 AM
Message: BASIC initially meant "Beginner's All-purpose Symbolic Instruction Code". However the first BASIC is totally diferent from todays Object Oriented VB! However the name bothers a phsycologically inferior mind with an inferiority complex. This people like to make things more complex & harder than what they are. Oh, BTW, the 11th reason I use VB over c# is XML Literals!

Subject: TROLL
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 8:33 AM
Message: This article is a very successful TROLL.

Subject: Embarrassing Haters
Posted by: Anonymous (not signed in)
Posted on: Monday, March 19, 2012 at 9:06 AM
Message: Thanks for the article, I found it entertaining. As I read the responses, I thought that some of the extreme reactions were funny. But gradually I became embarrassed for the community of programmers, myself being one of them. The insults are really unbecoming, folks. Relax.

Subject: Excellent read
Posted by: Bill Bixby (not signed in)
Posted on: Monday, March 19, 2012 at 9:16 AM
Message: Made me realise why I use C# and not Visual Simpleton.

So many of my points already made.

(!c# ? u=numbty : u=smart)

Subject: Fun Article
Posted by: Sandra (not signed in)
Posted on: Monday, March 19, 2012 at 10:31 AM
Message: I agree with the first point. All you have to know is "case sensitive" and you can stop there.

Subject: Ford versus Chevy?
Posted by: Max (view profile)
Posted on: Monday, March 19, 2012 at 11:46 AM
Message: Me thinks the crowd doth protest too much! The responses are more telling than the original article. They appear indicative of people who spend entirely too much time inside playing on devices that evolve and change constantly. All programming languages have their quirks, merits, and purpose. Can any of you remember Fortran, COBol, etc.? Such seriousness and vulgarity from some of the posters does not reflect well on the programming community. Lighten up folks and open your minds to all possibilities.

Subject: I Thought Pragmatists Buried The VB Fanboys!
Posted by: Clinton Gallagher @virtualCableTV (not signed in)
Posted on: Monday, March 19, 2012 at 12:51 PM
Message: I started with VB syntax and grammar dabbling in VBasic, VBA and then using ASP but realized developing for the WWW had --two-- tiers: server-side and client-side so I switched to C# for pragmatic reasons.


A.) All client-side code is written in JavaScript which syntactically looks and feels like C# both having been bred of the legacy of C.


B.) VB being born of the devil.

lol

Subject: This article was funny - stop being so serious!
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 20, 2012 at 12:50 AM
Message: Really, what a negative, condescending and critical bunch of people the commenters show the C# community (generalisation, don't get your knickers in a knot) to be... This article is meant to be entertaining and funny. Try reading and understanding the first bit stating "a tongue-in-cheek rant" and taking a deep breath before commenting...

Too all you overly serious people out there, relax! Remember, your choice of language is your preference. A good coder can develop in any language and make a success of it.

PS: And and AndAlso allow for a bit more flexibility where you can actually choose whether to short circuit or not. You'll almost always want to short circuit but there are lots of useful cases where you wouldn't.

Subject: The language hasn't mattered in ages
Posted by: Doug Pederson AKA SpectateSwamp (not signed in)
Posted on: Tuesday, March 20, 2012 at 8:47 AM
Message: If efficiency was important we would all write in assembler. Simple is always best. Keep it simple over-rides everything else. Besides the greatest program on the planet; My MultiMedia / Search Engine lives in VB5. It's been running for 12+ years now. Operating or languages matter little. It is the app dumbasses....

Grab a free copy:
http://www.telusplanet.net/public/stonedan/search.exe

Subject: Not professional
Posted by: Anonymous (not signed in)
Posted on: Tuesday, March 20, 2012 at 3:43 PM
Message: I disagree with every single point.. (except for switch maybe)
How could something like this be posted on a reputable web site like simpletalk?

Subject: Can't go back to VB.Net
Posted by: Burton Roberts (not signed in)
Posted on: Tuesday, March 20, 2012 at 5:55 PM
Message: I switched from VB.net to C# about 2 years ago. While I miss some VB.net conveniences, most articles in MSDN and other publications include C# code only. Now I think in C#, can understand the articles, and would never go back to VB.net.

Subject: rose is a rose
Posted by: Anonymous (not signed in)
Posted on: Wednesday, March 21, 2012 at 4:50 AM
Message: Considering that yoU read code more than yUo write, point 1 is stupid and I stop reading!
Case sensitive or not, code style is another subject, and whether a language permits you to be lazy or not is not as important as write clear code.
-1

Subject: Language is a matter of tradition and culture
Posted by: Joop (not signed in)
Posted on: Thursday, March 22, 2012 at 12:51 AM
Message: Coming from a XBase (Clipper,Foxpro,Visual Objects) background I found VB.NET more comparable to the languages I used in then past. More readable also. The declaration of variables in VB is very clear. In C# I have to read the declarations twice sometimes. There is, however, one thing I do not like in VB, which is the assignment of variables. In my opinion there should be a difference between a variable assignment and a comparison. If I see a = b, then does this mean that we want to check if both variables are equal of is b assigned to a? The way Pascal (and some XBase languages) are dealing with this is better I think: a := b. It would be nice if MS would implement that in VB.NET.

Subject: Seriously?? Fixed Length Arrays???
Posted by: Anonymous (not signed in)
Posted on: Thursday, March 22, 2012 at 1:48 PM
Message: Has anybody used this construct in the last decade? Even in .NET 1.1 they introduce the ArrayList which was far superior to fixed length arrays. Then along came generics...

A number of your other arguments are about the IDE and NOT the language. Auto complete? That has nothing to do with the language. That is a lack of functionality with VS. Same is true with several other of your points.

Subject: Right on!
Posted by: Anonymous (not signed in)
Posted on: Friday, March 23, 2012 at 8:36 PM
Message: Thank you!

I was going to write almost the same but you got ahead :-)

Reading the comments here, the most frequent explanation I hear is "your arguments are about the IDE and NOT the language". Now, I'm asking:
1. How many of them is NOT using the IDE? Yes, some points are about the IDE but, to be productive, you need a good integration with the IDE.
2. And why are they blaming the way VS was written? There is a VB.Net team and a C# team and they choose how and what to integrate in the IDE. If the VB.Net IDE is clearly better, that is the merit of the VB.Net team.
3. Since C# is the "de-facto" choice at M$ for so many years, how come they were not able to come up with a friendlier IDE? You know why? I start believing that they did NOT want to. It must be part of their masochistic coding mindset.

A few bright minds at M$ declared about 2 years ago that the policy at M$ is to keep the two languages at par. It is very saddening to see the arrogance some C# zealots still show.

Last year, I was very excited about the .Net Micro-Framework just to find exclusivist arrogant slurs on their forum against a poor man who only asked if they would support VB.Net. Even if VB.Net would be the lesser brother of C#, M$ is losing big time by allowing a bunch of ignorants to bully and alienate so many VB developers.

But the problem I see lately is that M$ is lacking some straightness. They prefer going with the established “flow”. Gone are the days when they had the courage to bring VB and it looks like they jumped wagon and turning away from Silverlight, too.

It is funny how superior many of those that dream in curly braces talk as if they hold the absolute truth ... the reality is that the best things in .Net (such as Generics) are of Eiffel influence; another “verbose” language free of curly braces, what a coincidence. Bertrand Meyer, one of the best promoters of object orientation (to say the least) and the father of Eiffel was with Bill Gates on the scene to announce the launch of .Net. Yes, with C-like cloths (syntax) but with Eiffel know-how.

And the series of “coincidences” goes on. While highly influential, Eiffel never gained the popularity it truly deserves. Why? It did not have a giant software company behind it. It is that simple. So, if that happened to Eiffel ... let’s not kid ourselves.

To those who found good value in VB, keep your chin up and be true to yourselves. Do not give in to the bullying of ignorants. Ask them to explain the miraculous advantages of C# and then critically judge what you heard from them (take a lot of salt). And make your voice heard. Ask for what YOU think is valuable. There is still a VB.Net team at M$ and it looks to me they are doing a pretty good job.

Thanks again!

Subject: Software Development Services
Posted by: Victor Marques (not signed in)
Posted on: Wednesday, March 28, 2012 at 4:25 AM
Message: Nice post.

Subject: funny
Posted by: Anonymous (not signed in)
Posted on: Wednesday, March 28, 2012 at 12:00 PM
Message: HAha.. if it's a joke then it's funny.. :) but reallly VB.net sucks big time!


Subject: Lambdas
Posted by: Dan (view profile)
Posted on: Thursday, March 29, 2012 at 1:18 PM
Message: Lambda statements prompted me to switch to C# after 17 years as a visual basic programmer. I could not convert a particular simple C# lambda to VB. Life as a C# programmer is now easier. I no longer have to mentally convert all the C# code I find everywhere -- that was always a pain. Loved the post though!

Subject: Good Grief
Posted by: sgtahan (view profile)
Posted on: Friday, April 13, 2012 at 7:41 AM
Message: I use whatever the client pays me to use. Yesterday it was C#, today it's VB.Net.

Subject: pathetic!
Posted by: brass9 (view profile)
Posted on: Friday, May 04, 2012 at 1:18 AM
Message: Wow! This has got to be the stupidest article on this site. Your comparision of C# & VB operators (#4) clearly shows very little understanding of C#
M$ has created a new product for your kind... it's called lightswitch...
I'm surprised the editors have allowed this ridiculous piece to be published on this otherwise high quality social blog at all...
(Ed: Removed unnecessary ad-hominem attack)

Subject: wow
Posted by: knuckleswanny (view profile)
Posted on: Thursday, May 17, 2012 at 11:57 AM
Message: Well, I just took a fancy new job leading some vb guys around and I've been writing C# since beta 1. Haven't even read any vb code since my early 20's (a long time ago) and I just can't stop typing that semi-colon at the end of every line in vb. Making me crazy. Funny article tho'
Thanks

Subject: I'm with sgtahan
Posted by: danielea (view profile)
Posted on: Tuesday, May 29, 2012 at 9:14 AM
Message: Why all the aggression? Reading through the responses I can almost tell who is a professional developer and who isn't. I mean who cares what someone else's preference is? Neither language is going anywhere and really at some point MS might just decide to merge the two. :D. Did that hurt someones feelings. You want me to help all you close minded people out a bit. Here it goes, The best language is the one that provides a service to your employer which ultimately puts food on your table and gas in your car so that you can drive your carcass to work. Have a great day!

Subject: You're doing it wrong.
Posted by: Nekoyoubi (view profile)
Posted on: Tuesday, June 05, 2012 at 2:34 PM
Message: I just created an account here simply to join the masses in mocking you for this 'article'. People would most assuredly be voting this down even harder than they already are if you hadn't come across so self-righteous that they thought you HAVE to know what you're talking about. Sadly, they are mistaken.

The majority of people that are agreeing with you are doing so because they as well, apparently, have not written in C#. I don't prefer your language, but I used to live by it. Preference, however, is not the problem. Your blatant arrogance and ignorance of your subject matter is. With that in mind, like many others here, I've decided to respond to your ten.

1. If when you type "da" (w/ capslock or not) you don't already have your Intellisense sitting on DateOfBirth, then you're doing it wrong; not VS/C#.

2. If you think that testing values is supposed to be in a switch/select, you're doing it wrong.

3. Wait, you mean seeing a grid of events and handlers is worse than clicking over and over to see what handlers are attached to what events? Doing it wrong.

4. Everyone else has covered it already, so I'll just fall back on... you guessed it, you're doing it wrong.

5. Interesting, you typed all of that? In C#, I would have typed "prop{TAB}". Hmm. Maybe you're doing it wrong.

6. Because an XNA game destined for XBox needs to have mortgage calculations baked in. Perhaps you're wanting C# to join you in doing it wrong?

7. When in Rome Yeah Tthis is way more understandable I don't know what I was thinking Perhaps some closure's not so bad in the rest of the world either, no So why so bad in a language Especially in a language you pride on being just like English Perhaps I'm doing it wrong Nope Pretty sure this would be easier to read with some ending punctuation Just saying

8. You're right, it makes much more sense to start the conversation off with an obvious but explicit qualifier: "Introduction. This is bob. He is a solicitor. See Bob run. Bob does it wrong."

9. I don't remember who, but a famous VB programmer/author said something to the effect of "Visual BASIC makes it easy for bad programmers to write bad programs really, really fast." If you're wanting a language that promotes your bad coding practices by removing your accountability, then VB is certainly your language,but you should be aware of the fact that you're doing it wrong.

10. Congratulations VB, you made it to where you can easily overcome a limitation of a development challenge that has presented itself since List. If you're re-dimensioning arrays instead of using a dynamically sized List, I hate to say it... but you're doing it wrong.

Oh, and about your analogy about matches is infantile, argumentative, and implausible.

Subject: Wow
Posted by: TheAntiCol (view profile)
Posted on: Wednesday, June 20, 2012 at 6:05 PM
Message: Gosh, I don't even know where to start. Perhaps with your bio: You claim to be a consultant providing C# training. I am so sorry for whoever you have taught.

C# may not be the epitome of programming languages but VB is even further from the ideal. The idea that the compiler is not strict and can just guess at what you want to do is aberrant. Without strictness, you can never reliably refactor your code. The only way to get it right, is to get it right first time. Over time any VB application degrades into an unmaintainable franken-application.

Perhaps in your pseudo academic world of training consultancy your points make some sense, but for those of us who write very large, optimized, integrated applications the best choice is still C# (or perhaps Java, depending on your environment)

Subject: Excellent Rejoinder
Posted by: hongweb (view profile)
Posted on: Tuesday, June 26, 2012 at 2:20 PM
Message: Great article, thx!

I thinks some of the other posters take themselves or their preferred .NET language far too seriously.

As I do both, I think they're both great 'cause they both pay my rent!

And, regardless of C# or VB, I still see crappy code, so having a preferred language does not save you from poor coding.

Subject: Get real
Posted by: terroare (view profile)
Posted on: Sunday, July 29, 2012 at 11:19 AM
Message: I will try to keep it short. I have a C, C++ and Java background, for me C# is like the dream come true language, for me the VB is a nightmare.
I have worked with both languages, and I can say that in the end of the day you still use the same .NET Framework classes and methods, only the style differs.

Subject: hmmm ?
Posted by: mikeybmkb (view profile)
Posted on: Thursday, August 30, 2012 at 10:58 PM
Message: I love case sensitive class's variables for making a clear diffrence between public and private , protected etc NAME = private Name = public simples its a Coding Guideline i use and stick to.

switch statements ok il give you that its something im use to but i personally use if statements majority of time again what im use to.

event handling c# this.Click += ?? if using visual studo auto types rest for you aswell takes care of auto creation ur next topic aswell
also + side
b1.Click+=new EventHandler(OnClick);
b2.Click+=new EventHandler(OnClick);
b3.Click+=new EventHandler(OnClick);

wolla all handled by same event handler cuts down on code massively also means u can use he Sender object to make distinction

symbols or words personal prefrence i like if(me == 0 && me != 2 || me <5 && me>3) {}

and ; not line ender its a statment ender so you can do

public string name {get{ return NAME};set{ NAME = value; EVENTNAMECHANGE;}}

why spread that over 7 lines when 1 will do ?

8 – Arguments and variables

string name = "boo";
wouldnt say this to you friends

well u wouldnt say dim name as string = "boo" would you its programing not a conversation :P

9 being strong typed is good since gets you in to good habbits and force checking rather than getting errors at runtime


10 like you said use lists

Subject: Signing every word you said !
Posted by: jalle007 (view profile)
Posted on: Saturday, September 15, 2012 at 4:38 PM
Message: I am big fan of VB.NET and now forced to do my coding in C#.

I hate it !!!

and 11. point to add to your list:

After all VB is coded with pure english words. today its almost as i you know to write english you know to write vb code.


Subject: This is wars for star
Posted by: clefranc (view profile)
Posted on: Wednesday, October 03, 2012 at 9:34 AM
Message: VB.Net is like an old Jedi Master, trying to teach is young C# padawan humility and chastity of mind, but in the end, what can you do when you're attracted to the dark side?

Subject: Oh my God! I don't beleave so much ignorance !
Posted by: Pauço (view profile)
Posted on: Monday, October 15, 2012 at 9:03 AM
Message: I desagree with all the author says, except the break in the switch/select.

C# is o clone of Java wich is based in C++ wich is based in C.

C has the break keyword, so C++, so Java so ... C#

In C and C++ there are good reasons for the "break" existence. In Java or C# thats no reason but the keyword stays for historical reasons and nothing more.

Anyone can get 10 or 20 reasons to say that language X is better than Y. It's just a matter of personal taste and no more than that.


Look at this:

VB
===

FOR i=100 TO 1 STEP -1
...
code here
...
NEXT


C / C++ / Java / C#
====================

for (i=100; i>=1; i--) {
...
code here
...
}

Why do we need the UGLY "STEP" and "NEXT" keywords?


VB
===

IF <condition> THEN
...
statements
...
END IF


C / C++ / Java / C#
====================

if <condition> {
...
statements
...
}


Why do we need the UGLY "THEN" and "END IF" keywords?


VB
===

(more than one statment per line)

astatment1 : statment2 : ... : statmentN (colon separated



(1 statment per line)

statment1
statment2
.
statmentN


C / C++ / Java / C#
====================

(more than one statment per line)

astatment1 ; statment2 ; ... ; statmentN (semicolon separated)


(1 statment per line)

statment1;
statment2;
.
statmentN;

(semicolon separated also - just one syntax)



VARIABLE DECLARATION
=====================

VB

DIM n AS INTEGER


C / C++ / Java / C#
====================

int n;

Why do we need "DIM" and "AS" keywords?


LOOPS

VB
===

DO WHILE <conditon>
...
statments
...
LOOP


C / C++ / Java / C#
====================

while <condition> {
...
statments
...
}

Why do we need "DO" and "LOOP" keywords?



These are only basic instructions. I don't even waste time of advanced features.

The most powerfull feature that any language can have are pionters. (yes, this kind of thins that most of so-called "developers" hate and are the most powerfull tool we have.

C# has a very limited use of pointers, and Java just ignore thenm at all. But if you are a driver developer (software that controls hardware devices) you can survive without pointers, because you need to read/write in physical memory or IO addresses.

In C++/CLI you have native pointers, native references, managed pointers, reference trackers, interior pointers, pinning pointer.

But, as I've read in a book some years ago, C++ is not for kids. And C# is somekind of lightweight C++





Subject: Grammar error
Posted by: Pauço (view profile)
Posted on: Monday, October 15, 2012 at 9:15 AM
Message:
In my last post, when I say "you can survive without pointers"

I mean

"you CAN'T survive without pointers"

Sorry, english is not my native language.

And BTW, this is not only valid for drivers. Pointers are a MUST for operating system developing.


Subject: The War of the Roses
Posted by: nemo66ro (view profile)
Posted on: Saturday, November 24, 2012 at 3:08 AM
Message: Very good article, Andy. It is a good kick in the "C# code-monkeys" ass. VB world is the silent majority. Keep going on, "old soldiers never die" !

Subject: A list of the worst features of VB
Posted by: Natwoowoo (view profile)
Posted on: Saturday, December 15, 2012 at 10:52 PM
Message: So... you have listed most of the things about VB that make it poor compared to C# and then you put a title saying the reverse. I do not see the sense in that.

You have pointed out most of the sloppy features of VB and attempted to make them into a positive. You have affirmed with this article why people use C# over VB.

If there is a function missing in C# that you would like to use often then make one.

I find that the C language has the most sensible and logical syntax of all, hence the reason why it has been mimicked in so many other languages. It is succinct and to the point. For example, you universally end all statements in the same way without having to memorise different endings.

I can see how the childish way in which VB syntax is structured can help new programmers learn the ropes but I find it inefficient and filled with unnecessary items.

Why do I have to put "then" in an if statement? What else can it be? "Maybe", "Sometimes", "Probably"? I am surprised they have not included the keywords "Please" and "Thankyou".

I don't doubt the professional status of people who use the language. It is used by many professional programmers; but I just don't like it. It is not always about snobbery, many people just prefer the C syntax.

Subject: 12 - Inline XML and HTML
Posted by: Kelvysb (view profile)
Posted on: Friday, January 11, 2013 at 6:35 AM
Message: Don't forget the amazing inline XML and HTML, that doesn't exists in C#.

xmlDocument = <VB>Is better!</VB>


Subject: 12 - Inline XML and HTML
Posted by: Kelvysb (view profile)
Posted on: Friday, January 11, 2013 at 6:35 AM
Message: Don't forget the amazing inline XML and HTML, that doesn't exists in C#.

xmlDocument = <VB>Is better!</VB>


Subject: Very bad information here. Nosense on every stated reason.
Posted by: ManOguaR (view profile)
Posted on: Tuesday, January 15, 2013 at 7:10 PM
Message: 1 - as someone says, you can use automatic properties:

public string Name {get; set;}

and also you can write the code correctly for field access:

private string name = null;
public string Name
{
get{ return name; }
set{ name = value; }
}

Maybe your code is only few lines every time, but when you are working with extensive applications, you pray for a case sensitive language.

Accidentally caps lock on is truly a beginner issue (are you watching what you do? That screen and keyboard are in front of you).

You said that "It doesn’t matter if you disagree with everything else in this article: case-sensitivity alone is sufficient reason to ditch C#!"

I think you never code more tan few lines... Because with a million lines in a class you are really in trouble without case-sensitive language


2 - SWITCH
Let's try to understand the diference between Select and switch:

VB's select is compiled as nested if...then clauses.

C#'s switch is a true C++, low-level switch, that's why you need break as keyword: for code O-P-T-I-M-I-Z-A-T-I-O-N


3 - Event-Handling

you can use += and press tab to créate any event handler, so you can do this visually as said, but if you rename anything, you can refactor all code references with only two clicks.


4 - LOGICAL SYMBOLS

VERY WRONG INFORMATION. I recommend you to read some more before write that stupid opinions:

to test if two conditions are both true, you use a single '&'

to test if two conditions are true, you use '&&' this checks for the first condition and if it is true, checks for the second. Using '&&' the second check is not performed if the first one is false. Very useful for cases like:

if (anystring != null && anystring.Length > 0)
// DO SOMETHING


The same are aplicable to '|' and '||'

Also the symbol '!' is used to negate a value, not to perform a check if a condition is not true:

bool aBoolean = false;
aBoolean = !aBoolean; //now aBoolean's value is true


The symbol '+' used in strings is for concatenate, as we are using '&' and '&&' for logical operations

The symbol '==' is used for comparison because '=' is used for assignation. You can use '=' inside any conditional statement allowing for more complexity inside a single line (inline):

while(((value = newValue) + 5) == 5)
{
newValue++;
}


5 - AUTOCORRECTING WHAT?

string PersonName { get; set; }

press tab and you need no more to write with automatic properties.



6 - Supported functions??????
Why in the name of the lord i have to include unuseful code on my DirectX application??

And also you can String.IsNumber(...



7 - Semi colon?

try that:
public void some(
string val1,
string
val2)
{
int my =
100000;
}

and no need semicolons


8 - Arguments and variables

You never write anything that is not visual basic isn't it? Because C, C++, C#, Java do things same way, REDUCING KEYTYPES BY 7 KEY PRESS ON EVERY VARIABLE DECLARATION. And it's a lot of time if you are coding 10 million lines


9 - You must manage any type conversions because when you use C# you are creating enums as low level types, like C++, instead of overloading memory with integer to string converion tables


10 - Redimensioning arrays:

string[] party = new string[2];

party[0] = "Me";
party[1] = "You";

party = new string[3] {party[0], party[1], "Him"};

and so more...




LAST:

C# can be compiled in UNSAFE MODE... Can you use pointers in VB at all?

Subject: Both languages are good
Posted by: Khaled Kokah (view profile)
Posted on: Tuesday, February 26, 2013 at 5:38 AM
Message: Coding in C# is more "native", if you are a good C# coder, then you'll easily code with other languages like C++,Java,JavaScript, .. etc. But actually VB.Net is much easier,simple and more quickly.
However, I think the most important thing is to get the job done perfectly using any language.

Great article and I loved that "What are you waiting for, all you C# code-monkeys?", that's funny :)

Subject: This is the Stupidest comparison i read EVER
Posted by: CSharpVisitor (view profile)
Posted on: Friday, March 01, 2013 at 6:20 PM
Message: I register in this website for one reason only, to comment on this stupid post, I'm a software developer for more than 8 years , started with VB6 then VB.net and last 5 years with C#, the comparison is very wrong and VB.net is for non-confident developers who afraid to move to C#, after i try both i have no doubt that VB.net is a trash compared to C#, VB.net is for Academics who need to learn what is programming, C# is the real world Syntax, any beginner who read this will make a wrong choice to start his career ,
No Monkeys between C# Developers nor VB.net, both can get the job done, but C# is more friendly syntax after you get used to it, VB FOR BEGINNERS WHO WANT THE CODE LOOKS LIKE A CHILDREN STORIES :)

Subject: Worst Article I've read today!
Posted by: stevo5800 (view profile)
Posted on: Friday, March 22, 2013 at 12:08 AM
Message: Wish articles would have to be reviewed by experts before people post dumb things like this. Not saying anything bad about VB but saying use this language and not this one is not the correct answer. Most of your arguments on why VB is better are invalid. Things like auto correcting witch is done by the IDE not the language it self. I've mostly programmed in C/C++, Objective C, C#, Python... and VB has very different syntax from all of these. Making it a harder transition from VB to C let say vs C to VB or even C# to VB. Really though both languages get the job done, heck some experts even prefer C++ with .NET. Anyways C# is a fairly easy language to use and does everything VB does and more so saying VB is better for C# always is a bunch of BS. REad ManOguaR he shows how invalid your arguments are

Subject: This article seems to have touched a nerve
Posted by: kploader (view profile)
Posted on: Wednesday, April 03, 2013 at 10:04 AM
Message: We've all spent various amounts of time writing countless lines of code, educating ourselves, and reading articles like this one. Based on the responses, it would seem that one's programming language preference is in some ways held similarly to their religious or political preferences.

One of the reasons I do like this article is because in my development travels, I have run into more dogmatic C# folks than VB folks, much like the Apple users that "look down" at the Windows users, or those living in California who see the other 49 states as "unenlightened".

BTW: Not describing all, just most.

This article seems to have touched a nerve, and to my C# friends, I would say you should have nothing to worry about. Knowing the language is important to the developer, but for the consumer, it just needs to work, and that should be threshold.

Subject: This article seems to have touched a nerve
Posted by: kploader (view profile)
Posted on: Wednesday, April 03, 2013 at 10:23 AM
Message: We've all spent various amounts of time writing countless lines of code, educating ourselves, and reading articles like this one. Based on the responses, it would seem that one's programming language preference is in some ways held similarly to their religious or political preferences.

One of the reasons I do like this article is because in my development travels, I have run into more dogmatic C# folks than VB folks, much like the Apple users that "look down" at the Windows users, or those living in California who see the other 49 states as "unenlightened".

BTW: Not describing all, just most.

This article seems to have touched a nerve, and to my C# friends, I would say you should have nothing to worry about. Knowing the language is important to the developer, but for the consumer, it just needs to work, and that should be threshold.

Subject: This article seems to have touched a nerve
Posted by: kploader (view profile)
Posted on: Wednesday, April 03, 2013 at 11:41 AM
Message: We've all spent various amounts of time writing countless lines of code, educating ourselves, and reading articles like this one. Based on the responses, it would seem that one's programming language preference is in some ways held similarly to their religious or political preferences.

One of the reasons I do like this article is because in my development travels, I have run into more dogmatic C# folks than VB folks, much like the Apple users that "look down" at the Windows users, or those living in California who see the other 49 states as "unenlightened".

BTW: Not describing all, just most.

This article seems to have touched a nerve, and to my C# friends, I would say you should have nothing to worry about. Knowing the language is important to the developer, but for the consumer, it just needs to work, and that should be threshold.

Subject: VB vs C#
Posted by: Theophilus (view profile)
Posted on: Friday, April 05, 2013 at 1:35 PM
Message: Ive been a system engineer and programer since 1969, programing in virtually every language. I speak 2 foreign languages fluently living all over the world. My major point would be a simple statment, "beauty is in the eye of the beholder". Visual Studio compiles code to the same intermediate stage, with maybe some small differences, so therefore almost all comments reflect the personal desires of the programer. If it makes you more effective to write code in either language, please do so. Peace!

Subject: Re: #8
Posted by: ericcire (view profile)
Posted on: Saturday, April 06, 2013 at 11:33 PM
Message: When I'm declaring a variable, I know what type of variable I want before I think of what to call it. Therefore, the C# syntax is more natural for me.

FWIW, I prefer VB.

Subject: VB.NET rules
Posted by: drwho (view profile)
Posted on: Friday, April 12, 2013 at 11:01 AM
Message: 1/
C# people always say case sensitive is more advantage than non-sensitive language. But what VB.NET code does that made the code clearer than C#. Stop confusion between variables ex: name, Name, nAme, NAme, naMe, nAMe, NAMe ...etc

2/
why a property like this in C#: public string Name
and VB.NET like this: Public Property Name() As String
Clearly VB.NET is easier to understand when you are reading the code.




Subject: Optional
Posted by: HRG (view profile)
Posted on: Saturday, April 27, 2013 at 4:29 PM
Message: there is one more reason.
the 'OPTIONAL' keyword in VB.NET which does not exist in C# .

in VB.NET you can have Optional parameteres in Functions or subroutines which C# does not support it.
I myself have used it many times!

on the other hand once I was using C# for image proccessing when I wanted to convert my codes to VB.net I found out there were no equivalent for 'unsafe' command in vb.net

First I was so mad of VB.net cause I had to comletely rewrite so many function with help of LockBits method of bitmap Object , Marshal.Copy for copying pixles in arrays, and yes!, define arrays and so on.

but later on, when I was going to use the same funtion in ASP.NET i was not allowed to use code written in C#, cause they were not safe and IIS would`nt allow you to run such codes, and I again appreciated VB.net in spite of all those trouble.

Subject: Puke
Posted by: BeStelios (view profile)
Posted on: Monday, April 29, 2013 at 2:49 PM
Message: I just created an account just to say that VB makes me wanna puke too..
Not more than Lisp but it's getting close..

Subject: Case Sensitive
Posted by: BeStelios (view profile)
Posted on: Monday, April 29, 2013 at 2:51 PM
Message: Additional i have to say that if you can't write

_Case_SeNsiTi_ve then stop coding...

Subject: Sad fact
Posted by: snpcrkpoprc (view profile)
Posted on: Wednesday, May 01, 2013 at 10:44 AM
Message: You can produce crap elegantly in any language ... and most software development is crap ... like golf there are tons of hackers and very few pros ... and a pro can write in anything ... true software development is an art form ...

Subject: Can't be true.
Posted by: aralmo (view profile)
Posted on: Wednesday, May 08, 2013 at 9:02 AM
Message: I am a .Net programmer c# and vb.net, i feel more comfortable with c# and i think that's the language everyone should use to learn .net, after that use wathever you feel more comfortable with.
Why i say that? because c# forces you to know what are you doing, while vb sometimes asumes you know what are you doing (like casting a string to an int and living happy or using a dynamic array wich is not).

1. Did you ever listened about code standards? those things are used by professional programmers, it does not matter if you use vb c# or f#. If you are coding professionally you should use a common casing standard.

2. You can avoid the requirement of the break; and use the switch like a group of label gotos using a #pragma. That's all.

3. Very well, now how do you access the eventhandler array? you can't. Even in vb.net i only use this on a fast written application.

4. Err stupid comment? & binary operator && comparision operator. Now write an IF clause that contains conditions and flagged enumerals in vb.net; what does that and means? comparision? binary operator? ...

5. To start with i must say i don't see why someone wants a writeonly property, use a method dude. But that's not the point, the complete declaration of the property in c# is shorter than the shortcut for vb.net

6. .Net has the same functions, methods and classes, doesn't matter what language you use. That IsNumeric maps to a <T>.TryParse function, so thats wrong.
Anyway in you need 2 calls IsNumeric(textvar) and then do the cast dim a as int = textvar using those methods. Why not if(Int.TryParse(string,out int)) dothestuff?


7. You don't need an underscore in c# because closures are easier to see even when reading fast but you can have multiple lines.

8. Won't comment on this, thats only the flavour.

9. Ok, now i realise, you've never worked as a coder. C# forces you to define explicit casts to do that so if you want to code like crap you first must to know what are you doing.

10. You are always copying the array, it doesn't matter if its vb or c#. Dynamically sized arrays aren't part of the CLR that's another handy shortcut of vb that should not be available to un experienced programmers.

Conclusion,

Those who talk about Vb being the future; tellme ruby style languages being the future, maybe rads but not BASIC, thats just a learning language.

You should not be training anyone...

Subject: AWESOME ARTICLE!
Posted by: alexsarafn (view profile)
Posted on: Saturday, May 25, 2013 at 1:51 AM
Message: AWESOME ARTICLE. This was written by a professional that cares about delivering the right product to his customers. Not a narrow minded programmer.

BIG FAN.

Subject: Both languages have same capabilities
Posted by: Djacob (view profile)
Posted on: Thursday, June 20, 2013 at 11:50 AM
Message: VB.NET is easy on the programmer; which is what you want in a language. That is the language of the apps I sell. However, when I sell my programming skills, I find it much easier and with better returns to sell C#.

From an employer perspective, it is easier to find C# programmers than it is to find VB.NET programmers. Besides most corporate programming teams have standardized on C# so they will only recruit C# programmers. I think both these developments are cause and effect, interchangeably.

Bottom line, save yourself some stomach acid by opting for VB.NET if you sell programming through your own products. Opt for C# under all other circumstances.

Subject: Case sensitivity issue - Here is a scenario
Posted by: rrvenki (view profile)
Posted on: Friday, July 05, 2013 at 2:21 AM
Message: Create a webservice in C# which has Email as string, email as property. It works fine...

Use Webservicetester from codeplex.com. Change the code generator in it from C# to VB. Now VB compiler will says Keyword Email is already declared in the client code. You go nowhere. Use any other language you will get same issue. So case sensitivity a feature in C# is pain in coexistense.

Subject: rrvenki-> not a problem of casing.
Posted by: aralmo (view profile)
Posted on: Friday, July 05, 2013 at 8:12 AM
Message: rrvenki if you are having this problem probably you have both declared as public and as properties.
I am almost shure that webservicetester uses reflection and reads only public Properties, not private fields.
Won't happen if your code is solid.

I'm tired of people that only knows 1 language and have no clue of what architecture is and comes here to demonstrate how that particular language is the best.

Subject: Old tymers
Posted by: achurchill7534 (view profile)
Posted on: Wednesday, August 07, 2013 at 7:05 PM
Message: It's always funny hearing C# people talk about Vb.net. Most of these people never even really looked at Vb past vb 6. So what theyy think is its the same vb 6. Hate to tell you C# people, if you cant read both languages then you are programming illiterate. I can do code in VB a lot faster sometimes then in C#. Its about what you can do and how fast. So when you try to come up a reason for why Vb is an amateur language, then you better thin again. Vb.net is just as powerful as C#. THEY ARE THE SAME BASIC LANGUAGE. Man people are stuck in the past. Learn both languages.

Subject: Old tymers...
Posted by: aralmo (view profile)
Posted on: Friday, August 09, 2013 at 1:55 AM
Message: It's always funny hearing vb guys assuming that everyone that prefers c# is because they don't know vb.net and bla bla and then always end up with, vb is better in productivity and the CLR is the same.
Say you like the syntax, say you can't understand C# and VB is more natural to you, but don't talk about things just because you have listened to them before they don't need to be true.

Subject: The technijihadists are out in force
Posted by: snetzky (view profile)
Posted on: Wednesday, August 21, 2013 at 8:33 AM
Message: Amazing how any discussion of technology brings out the technijihadists (my own term) in force to declare that all other technologies (languages, operating systems, platforms) are unclean and must be purged in an auto-de-fe! (yes, I'm mixing metaphors, but the Inquisition and Al-Queda have a lot in common).

The arguments still come down to "stop liking what I don't like!" which is not only infantile, but gets in the way of problem solving and collaboration, which is often difficult with programmers anyway, given that a lot of them are "strong" personalities.

I've been coding for 12 years or so, and frankly my prejudice will always lean toward getting something done rather than making something elegant and complicated.

If it's hard to code then it's going to be hard to maintain, for the most part, because not only do you have to figure out what the hell the last guy was doing, but you also have to figure out why they were doing it the way they did.

Not having to parse through cryptic syntax (which if you show the average layman C# code and VB.net code and ask them what's going on, I'm guessing VB.Net code will be more intelligible) is a bonus in this case.

Always write for the next poor schmuck, because most likely it's going to be you.

Subject: In my opinion, these are very weak points
Posted by: TheGameSquid (view profile)
Posted on: Thursday, September 05, 2013 at 8:34 AM
Message: Okay, I'm not a professional programmer (at all) and neither do I have very deep knowledge of both the .NET platform or C# and VB.Net, but a lot of your arguments seems pretty random to me.

Let's go over them:

1) Ok, so here you say that in the even that your CAPS LOCK is on, the compiler shouldn't mind? Has it occurred to you that:
A) Proper casing and the use of good naming conventions can drastically improve readability? The reason why you would name a field "dateOfBirth" and the property "DateOfBirth" is because that way you instantly KNOW whether you are talking about one or the other.
B) You actually WANT to compiler to be OK with the fact that you're not using proper naming conventions? How about the person who comes after you that has to plow through you code? You think he would like to see how you use completely random casing everywhere? It seems to me like you're in DIRE need of case sensitive language to teach you how to write clean code.

2)
A) If you're going to use the relational operators in a switch statement, I'm not entirely sure what the use of the switch statement is any longer. You're saying you want the switch statement to EXACTLY like the If... If Else... Else statement. They both have different uses. The switch is used for fast value-based comparisons.
B) Yes, you obviously need to write the "break;" statement because "falling through" a switch statement can actually be an interesting programming technique (though not one I'd recommend to use).

3) Erm... How about just MANUALLY subscribing to the event in your form? You're complaining that AUTOMATIC way isn't good enough for you. Okay, do it manually then. Write actual code. Oh, and if you want to change the name, VS has some very handy tools for refactoring code, and even specifically for name changes. Sounds to me like you just have no idea what's happening under the hood.

4) These "stupid symbols" are used in a BUNCH of other languages, and are extremely standard. Plus, what INSANE language uses the EXACT SAME operator for assignment as for equivalancy checking ('=' as opposed to '=='). Moreover, there is no equivalent in VB.Net (correct me if I'm wrong here) for '&&' and '&', so there's no proper way for me to tell it to short-circuit or not.

5) Ever heard of code-snippets?

6) All primitive types in C# support the .TryParse () method. So does System.Int32, or System.Double, or whatever.

7) I suppose this indeed is a matter of personal preference. For me, this makes it very easy to skim over a piece of code and see the individual statements. I find that it makes it very clear that I'm saying "Do this. Do that. Do this. Then do this." whereas in other languages that don't use terminators I just see endless lines of text.

8) It's odd that you should mention this because most of your previous arguments are based around usability and ease of use. The way you declare variables and their types in VB.Net is WAY too long IMO. Both the "Dim" and "As" keyword are COMPLETELY useless here and serve no added pupose. Once again, just my opinion.

9) The compiler does not know whether you're a responsible person or you know what you're doing. Explicit casting let's you tell the compiler that you know what you're doing. This is a good thing. You should not be casting values without realizing what you're doing. I especially like the way C# lets you control the you're being notified for this, like the use of the "checked" and "unchecked" keyword so you can control checks for overflow/underflow.
Also, in the case of the enum example you're giving, you do realize that the base type of an enum does not have to be a System.Int32? When using enums defined by other people, explicit casting makes you more aware of the way they have been defined.

10) I sincerely doubt anyone would have told you that you "should be using lists instead of arrays". I think it was MUCH MORE likely that they would have told you that you "should not be using dynamically sized arrays". I think (once again, correct me if I'm wrong) that they were removed because they were bad practice and were seriously damaging performance. Use of generics is encouraged instead.

Please do point out where I used incorrect information. As I said, I am NOT a professional.

Subject: lazy lazy programmer
Posted by: me_pollack (view profile)
Posted on: Monday, September 09, 2013 at 5:09 PM
Message: What I see is an undisciplined lazy self taught programmer.

Vb is a pile of feces and no professionally educated software developer should ever enjoy using it.


Subject: I am a professional programmer and I agree
Posted by: Vulturica (view profile)
Posted on: Sunday, September 15, 2013 at 6:58 AM
Message: If you mean that Visual Basic 6 is better than C or C++, then you're right, it is. Believe it or not, there are programming languages made in Visual Basic 6 (VB6).
This language was and still is so popular that Microsoft has no choice than to support it.
You believe that C++ or VC++ is the most popular language? try again! What shocked me at this language it is his ability to work with the assembly language.
Pay very close attention on this article:
http://msdn.microsoft.com/en-us/magazine/jj133828.aspx
So, in a recent announcement, VB6 is supported by Microsoft many years to come.

Subject: Vulturica you have to be kiddin
Posted by: aralmo (view profile)
Posted on: Sunday, September 15, 2013 at 7:28 AM
Message: You have to be kidding me. vb6 better than c++? really? vb6 is the slowest shit i've ever compiled.(period)
Half way between procedural and oop taking the worst of the two...
Now i understand the name of this page simple talk.

Subject: If you desire, we can make a bet
Posted by: Vulturica (view profile)
Posted on: Sunday, September 15, 2013 at 5:06 PM
Message: If you desire, we can make a bet (up to 8000$): I can do ANY algorithm written in VB6 (in combination with machine code) to run faster than the same algorithm written in C++. VB6 seems simple but it is not so. Most programmers do not know enough about VB6 and talk without knowing.

Subject: I don't bet with people i don't know, but we can try if you want...
Posted by: aralmo (view profile)
Posted on: Monday, September 16, 2013 at 7:34 AM
Message: I don't bet money with people i don't know but you should take care of your money...

Do you know that inline-assembler is part of visual studio? that means that it is available on c, c++, VB6 and c++ .Net. So "I can do ANY algorithm written in VB6 (in combination with machine code) to run faster than the same algorithm written in C++" no, you can't, at most they will be exactly the same (only while executing the assembly part, it will take more time in VB to find the memory pointer to that ummm, call it delegate).

Anyway that's way out of the discussion. You want to demonstrate that vb6 is as fast as c++ because you can code assembler on it... yeah, ok... Why don't you just code in assembler then? what's the point of having a high level language for that?

Don't misunderstand me, i can see the use for having some critical algorithms written in assembler (not nowadays, better to make it multi-threaded).

If you want to try, we can both code a simple CRUD application for two or three entities that does some calculation with them and set a total development time of about 1-2H.

I'll do it in c# (yes, even a managed language is faster), not even c++ or c and i bet it will run faster than in vb.

Subject: BTW Vulturica
Posted by: aralmo (view profile)
Posted on: Monday, September 16, 2013 at 7:36 AM
Message: BTW, that's totally out of the scope of this article as it's talking about VB.Net and C# not VB6 vs C++, even the author of this article won't go this far, hehehe.

Subject: Response: Henk Simmelink
Posted by: aralmo (view profile)
Posted on: Monday, September 16, 2013 at 7:42 AM
Message: That won't even compile in c#...

var is not a variant type like in VB (and having option explicit off in VB is like racing your bike without helmet) it's just syntactic sugar, in pre-compilation it changes to int a = 0;

Read the warnings on C# and you will see something like "a would never be null" as integer is not a nullable type.

Subject: The experience of the programmer makes an enormous difference.
Posted by: Vulturica (view profile)
Posted on: Monday, September 16, 2013 at 1:46 PM
Message: Dear aralmo,

Thanks for the replay. I've already won a bet like this. A guy from France (now a friend of mine) also put a bet with me back in 2009. We agreed to make a brute force engine. He did it in VC++ and I in VB6, and I won the bet.

If you look on PSC, you will see phenomenal codes (in the advanced section), all programmed in VB6 and many of them designed to be faster than those programmed in VC++. If you look there, you will totally change your mind about Visual Basic 6. There you will also find several assembly compilers designed in VB6.

Again, the experience of the programmer with the language in question makes an enormous difference.

Subject: Lazy Programming
Posted by: achurchill7534 (view profile)
Posted on: Monday, September 16, 2013 at 6:06 PM
Message: Sorry just because you program in VB doesn't mean your a lazy programmer. I have seen C++ C# code that is plain crazy. Your argument really shows how much you know about programming. If you argument is between the {} and the Function End Function then you must really not know what your talking about. I get the feeling a lot of these posters on this thread don't work with both. I think both of them are good for certain things. If you rid off VB then your a fool.

Subject: In the words of the Great William Shatner....
Posted by: snetzky (view profile)
Posted on: Monday, September 16, 2013 at 7:31 PM
Message: Get a Life! Will you people?!

You've taken a perfectly enjoyable article about why someone might very reasonably prefer vb.net to C# and turned it into a colossal waste of time!

As far as performance goes, if the difference is less than a second, most users aren't going to really know the difference. It's like movies that put an insane amount of detail into background scenery that no one really pays any attention to.

Frankly if a user can't tell the difference, then it probably doesn't make a lot of sense to worry about it all that much, at least to my point of view.

Getting all tied up in knots because someone uses or prefers a different tool than you do is nothing more than mental mas.....well you know what I mean.

Subject: } /* end do*/ } /* end if*/ } /* end try*/ } /* end Class */
Posted by: rmcmullan (view profile)
Posted on: Friday, September 27, 2013 at 6:43 AM
Message: I think you missed one of the best features of the language and the main reason I prefer VB.Net to C derivative languages -- it's those darn curly braces. They're used for everything from try blocks to loops to scoping structures to logic constructs (if, case), function definitions. Soooo many {}'s.

After a while, if you're writing a nest of logic in a C derivative language, with looping and logic and try blocks there's a lump of code which is line after line of closing "}" and it's pretty hard to match them up. One of the helpful style guidelines for C based languages is to leave a comment after a closing "}" to say what it is closing.

VB has wisely gone another way. An "End If" ends an if statement, an "End Catch" a catch block, an "End Do" a do loop, a "Next" to end a for loop "End Class" to end a class, "End Sub" for a sub and so on. Much better readability and way less mismatched parenthesis.

There are a lot of languages that are based on the K&R version of C. The K&R version did not have an elseif, an omissions which some of the newer derivatives fixed, others did not. But VB has a pretty nice one. It also has the break and continue and exit for loops. And these are programming constructs that are very basic. Every language should support the basics and make coding easy.

Subject: A man after my own heart
Posted by: v008370 (view profile)
Posted on: Monday, October 07, 2013 at 10:01 AM
Message: There's nothing annoys me more than, in 2013, having to explain to a student what a { means. Or a semicolon. It makes no practical sense and keeps software development firmly in the geek camp in the corner. Everyone can program but why do we make it as inaccessible as possible to the beginner?

Subject: EX VB developer
Posted by: EenOog (view profile)
Posted on: Tuesday, October 15, 2013 at 12:55 PM
Message: Coming from long vb 4,5,6 / VB.Net background i really have evolved with my migration to c# and will not switch back for anything. I too was very anti c# until i dug deeper and realised that i was just doing my self an injustice by not switching.

Subject: EenOog
Posted by: v008370 (view profile)
Posted on: Tuesday, October 15, 2013 at 1:52 PM
Message: That's not a compelling reason in itself why c# is better though - is there actually ANYTHING in the c# syntax that is more intuitive that VB?

Subject: Current VB6, ASM and C sharp programmer
Posted by: Vulturica (view profile)
Posted on: Tuesday, October 15, 2013 at 2:09 PM
Message: EenOog, there are C and C++ programming languages ​​made ​​in Visual Basic 6.0! Did you know that?

Subject: Current VB6, ASM and C sharp programmer
Posted by: Vulturica (view profile)
Posted on: Tuesday, October 15, 2013 at 2:13 PM
Message: EenOog, there are C and C++ programming languages ​​made ​​in Visual Basic 6.0! Did you know that?

Subject: Current VB6, ASM and C sharp programmer
Posted by: Vulturica (view profile)
Posted on: Tuesday, October 15, 2013 at 2:18 PM
Message: For example there are two that I know for sure: Libry and Visio compilers, made in Visual Basic 6.0, compile directly to machine code. The strange thing is that these languages can code for Linux too !

Subject: C# Stockholm Syndrome
Posted by: rmcmullan (view profile)
Posted on: Wednesday, October 16, 2013 at 6:03 AM
Message: Yes, EnnOog, unless you can tell us why the C# syntax is better, we can safely assume you are just used to it. Or suffering from C# Stockholm Syndrome. Most mothers love all their children, even the ugly ones.

Subject: C# training from you?
Posted by: flargle (view profile)
Posted on: Friday, October 18, 2013 at 5:44 AM
Message: Well, thanks for the recommendation against your (reluctant) C# training, Andy.

Excellent demonstration of missing the point.

Subject: Rat's nest of logic
Posted by: plurple (view profile)
Posted on: Friday, October 18, 2013 at 9:07 AM
Message: @rmcmullan If, in an object-oriented language, you're writing a "nest of logic" so deeply nested that you're having trouble picking out one brace from another, you're doing it wrong.

Subject: McCabe Cyclomatic Complexity Index and {} Nesting
Posted by: rmcmullan (view profile)
Posted on: Friday, October 18, 2013 at 9:39 AM
Message: Plurple: I disagree, because {} is used for EVERYTHING. If you have a loop, its enclosed in {}. That Loop is probably inside a function which is enclosed in {}. That function (in an OO language) is inside a class enclosed in {}. So I'me already three deep on my first loop. Add some branching and catching. By keeping the McCabe cyclomatic complexity index less than 10 logic constructs per function and I can still add another 9 levels.

Subject: VB is a language BY tinkerers FOR tinkerers
Posted by: AlgorithMan (view profile)
Posted on: Thursday, December 05, 2013 at 6:36 AM
Message: Nearly all of your "arguments" are that you personally LIKE the syntax more. These are not reasons, these are opinions.

I for one prefer case-sensitive languages and also strongly-typed languages, because you "need" case-insensitivity and weak-typing only when you botch together half assed bullshit code, that decent QA divisions wouldn't even allow.
To write QUALITY code, you have to get your shit together. IMHO you shouldn't even be a programmer at all, if you can't be bothered to keep your variable names and types straight.

And also - as someone who knows compiler programming - I have to say that the design of the BASIC language is very lazy. It is clearly designed towards ease of writing a compiler - not towards ease of writing programs in it: the language is LL(0), you can compile it without lookahead, because the programmer always has to tell it "now comes a function", "now comes a call to a function", etc.

Subject: Strongly typed
Posted by: v008370 (view profile)
Posted on: Thursday, December 05, 2013 at 8:24 AM
Message: Are you saying VB isn't strongly typed? Why do you need case sensitivity to write quality code? I'm genuinely curious here.

Subject: Writing quality code
Posted by: snetzky (view profile)
Posted on: Thursday, December 05, 2013 at 3:31 PM
Message: If you know how to write good code, you'll write good code. If you need the IDE to prevent you from writing bad code, then there's a bigger problem there than the language you're using.

A poor craftsman blames his tools.

Subject: Strongly typed
Posted by: v008370 (view profile)
Posted on: Friday, December 06, 2013 at 2:34 AM
Message: Are you saying VB isn't strongly typed? Why do you need case sensitivity to write quality code? I'm genuinely curious here.

Subject: Some clarification
Posted by: AlgorithMan (view profile)
Posted on: Friday, December 06, 2013 at 8:34 AM
Message: Good developers consistently use fixed naming conventions and therefore don't need case insensitivity.

VB might give you the ability to use strong typing, but from all VB code that I have seen, about 95% of the variables were declared without a type. C# has var and C++ now has auto, but from all C# / C++ codes I have seen, at least 99% declared their types properly.

IMHO, getting your data structures right is the most important part of development today. Programming today is so much about proper translation between (semantic) informations and memory layouts...
So much is taken care of by todays frameworks... Really, my ex employer had 100-200 developers for doing what I can do alone today.

Okay - today, VB is basically C# with a slightly different syntax, so it makes hardly any difference which language you use. BUT for too long VB had no multithreading (this atrocious DoMessages!), no classes, then no inheritance etc. and this was well in the 2000's, when OOP had already become all the rage. VB was a toy for script kiddies. Good developers would make an arc around it (I'd rather kill myself than use VB6 again!) so why would you bother to switch now (since as I said, it hardly makes a difference today and you'd be ridiculed, since VB still has the terrible reputation)?

VB used to be a language for tinkerers and it gives good developers no reason to switch today. Therefore, (IMHO) it will stay a language for tinkerers.

Btw. IsNumeric only tells you whether a string consists of digits (and sign, decimal separator etc). It doesn't tell you the range. You have no guarantee that you can store the corresponding number in a 16 bit integer, 32 bit integer etc... In C# you have Int16.TryParse, Int32.TryParse etc. - This is more type safe.

Subject: Interesting topic ..
Posted by: snpcrkpoprc (view profile)
Posted on: Friday, December 06, 2013 at 9:33 AM
Message: I have led teams developing software in VB6, VB.NET, C#, C++,etc over the last 20+ years. One of these was a POS system for Amoco Oil written in VB6/C++/Access. Languages do not matter. Talent does. Some of the best C developers had absolutely no people skills.

The recruiting process is flawed today with an emphasis on skills tests for which all the answers can be googled. People should be hiring the best software engineers. There are no critical differences between C# and VB as the syntax can be learned in days. I think most C# programmers feel they are special. Ridiculous.

http://www.ere.net/2013/04/25/why-you-cant-hire-high-achievers/


I do not know of any serious VB developer who does not strongly type anything but throw away code.

Most of the projects I am involved in are best described as Extreme Programming.

Subject: Why stick to one?
Posted by: achurchill7534 (view profile)
Posted on: Saturday, December 07, 2013 at 10:30 AM
Message: snpcrkpoprc is totally right. C# somehow think C# is so much better. You can do the same things in C# as in VB.net. You guys that call Vb.net a trash language obviously have not coded in Vb for long periods of time. My guess is that you have worked with Vb coders and that's your view on Vb. VB.Net and C# syntax, in my opinion, is not too hard to go between them. Use both of them. Some of C# features help you code faster, some of Vb features help you code faster. Use all the tools available to you.

Subject: pragmatic
Posted by: AlgorithMan (view profile)
Posted on: Saturday, December 07, 2013 at 4:39 PM
Message: Again - TODAY, there is no real difference between VB and C# - but every good coder I know still passionately hates VB for how bad it was 10 years ago.

And well - even if they declare types - in my experience, its all global strings and integers. VB coders tend to (again: judging from my SUBJECTIVE experience) program too procedurally / pseudo OOP.
I have NEVER seen a VB code that I would call "good". Twisted control flow, pushing data around in global variables for the next timer event to pick up - ignoring mutual exclusion problems, ignoring performance, everything in strings and integers instead of designated composite types, dumb handling of different decimal separators in different locales etc. etc. etc.

Some people here seem like they would accept these things as long as the job gets done, but you get so much trouble in the long run because of software erosion (an effect only >real< experts know how to deal with). The time you need to implement changes increases exponentially and that kills your productivity and drives you out of business in the long run.
My ex employer has been market leader in his business segment, but he didn't see these problems and today they are fighting bankruptcy (my guess is that bankruptcy will win soon).

Subject: Nothing like overgeneralizing
Posted by: snetzky (view profile)
Posted on: Saturday, December 07, 2013 at 5:06 PM
Message: Overgeneralizing about vb programmers based on code that was written in VB6 or VBA is like claiming that all GM products are crap because you owned a Chevy Nova back in the day. (The readers older than 40 will know what I'm talking about)

You can write crappy code in any language. If a developer is using global variables all over the place or not typing the variables he is using then he probably shouldn't be a developer or should at least be given a remedial course on variable scope and why not typing variables is a bad idea.

Blaming it on the language is a waste of time. I use VB.Net because it's less of a leap from VBA to VB.net than from VBA to C#. That doesn't make me a bad programmer, and I've written code in C#, but I am still more comfortable with using VB right now. I plan to pick up C# as I go, but I'd rather focus on learning the .net framework right now than fighting a new syntax on top of it.


Subject: Everything has been said ...
Posted by: snpcrkpoprc (view profile)
Posted on: Saturday, December 07, 2013 at 5:33 PM
Message: The difference between vb programmers and c# programmers is what is being discussed. And while one may argue that there is what's the point? You want to banish and mistreat vb programmers? Starting to sound like racism sexism etc. Vb programmers are probably more interested in the business side while c# folks are more interested in pure tech side. BOTH are needed for most projects. And both have made very successful software and total and complete disasters.

Software development should be looked on as an art form.

Subject: Everything has been said ...
Posted by: snpcrkpoprc (view profile)
Posted on: Saturday, December 07, 2013 at 5:33 PM
Message: The difference between vb programmers and c# programmers is what is being discussed. And while one may argue that there is what's the point? You want to banish and mistreat vb programmers? Starting to sound like racism sexism etc. Vb programmers are probably more interested in the business side while c# folks are more interested in pure tech side. BOTH are needed for most projects. And both have made very successful software and total and complete disasters.

Software development should be looked on as an art form.

Subject: Everything has been said ...
Posted by: snpcrkpoprc (view profile)
Posted on: Saturday, December 07, 2013 at 5:33 PM
Message: The difference between vb programmers and c# programmers is what is being discussed. And while one may argue that there is what's the point? You want to banish and mistreat vb programmers? Starting to sound like racism sexism etc. Vb programmers are probably more interested in the business side while c# folks are more interested in pure tech side. BOTH are needed for most projects. And both have made very successful software and total and complete disasters.

Software development should be looked on as an art form.

Subject: Learn about as many technologies as possible
Posted by: achurchill7534 (view profile)
Posted on: Sunday, December 08, 2013 at 10:10 AM
Message: AlgorithMan

To say VB programmers use global variables is you view on the programmer. I don't think the VB language encourages the use of global variables all the time. To say you have never seen Vb code that would be called "good", obviously you don't work with VB or you work with amateur programmers.
You can't tell me the place you work isn't on a time and money budget and they allow you the time needed for a project. You must have the best project manager in the world. Sometimes, and that goes for any language and any project, they just want the job done. Are you saying every project you worked on at this magical place allows you enough time to make perfect code? I have a feeling most people posting on this post is stuck in their ways and don't tend to find out about different technologies. To me that sounds insane.

Subject: Beware of C++ stupidity syndrome
Posted by: Vulturica (view profile)
Posted on: Sunday, December 08, 2013 at 6:32 PM
Message: AlgorithMan, you do not know what you're talking about! The best codes (beter than C++ or Java) are made ​​in VB (I am speaking only of VB6 and not of VB.NET). My students are surprised by programs made ​​in VB6. Their expression is normally: oauuuuuuu (and they are C++ or Java programmers). They find it very, very difficult to make a similar app (made in VB6) in C++. So, AlgorithMan, to quote you: rather kill yourself ! ...

Subject: MySubject1
Posted by: foofy (view profile)
Posted on: Thursday, March 06, 2014 at 12:22 PM
Message: Oh dear deer, author prefers VB syntax over C# and is strongly opinionated about that, big deal?
Instead of trying to come up with arguments why he is wrong or why C# sux, just learn F# or any other functional language, if courage allows to step out of m$ bubble.

(it's sad that this article comes up on google in first pages and gets used as hard truth elsewhere)

 

Top Rated

Acceptance Testing with FitNesse: Multiplicities and Comparisons
 FitNesse is one of the most popular tools for unit testing since it is designed with a Wiki-style... Read more...

Acceptance Testing with FitNesse: Symbols, Variables and Code-behind Styles
 Although FitNesse can be used as a generic automated testing tool for both applications and databases,... Read more...

Acceptance Testing with FitNesse: Documentation and Infrastructure
 FitNesse is a popular general-purpose wiki-based framework for writing acceptance tests for software... Read more...

TortoiseSVN and Subversion Cookbook Part 11: Subversion and Oracle
 It is only recently that the tools have existed to make source-control easy for database developers.... Read more...

TortoiseSVN and Subversion Cookbook Part 10: Extending the reach of Subversion
 Subversion provides a good way of source-controlling a database, but many operations are best done from... Read more...

Most Viewed

A Complete URL Rewriting Solution for ASP.NET 2.0
 Ever wondered whether it's possible to create neater URLS, free of bulky Query String parameters?... Read more...

Visual Studio Setup - projects and custom actions
 This article describes the kinds of custom actions that can be used in your Visual Studio setup project. Read more...

.NET Application Architecture: the Data Access Layer
 Find out how to design a robust data access layer for your .NET applications. Read more...

Calling Cross Domain Web Services in AJAX
 The latest craze for mashups involves making cross-domain calls to Web Services from APIs made publicly... Read more...

Web Parts in ASP.NET 2.0
 Most Web Parts implementations allow users to create a single portal page where they can personalize... Read more...

Why Join

Over 400,000 Microsoft professionals subscribe to the Simple-Talk technical journal. Join today, it's fast, simple, free and secure.