David Stone's Blog

I'm open to suggestions for a subtitle here! (Really!)

March 2003 - Posts

Language Debates...tearing down the "community"
Why does everyone think they're mutually exclusive. Learn one, then learn the other.  Start with which ever one is easier based on your background.  Decide for yourself.

[Early and Adopter]

I think one of the reasons why C# is the "defacto standard" is that the C# guys have a HUGE voice and there is a lot of mis-information floating around that is still placing VB.NET in the category of a toy language.  The VB.NET development group (at Microsoft) have done an incredible job with the BASIC language and they should be commended... not criticisized.  Having their project bashed all the time... given all the improvements and innovations that they've done is a diservice and just plain wrong.


I won't say one is better than the other, but I *will* defend VB.NET when it's bashed and incorrectly accused of being inferrior to C#.

[Cory Smith's Blog]

Ah, I hadn't even thought about it like that. That's true, the VB.NET team has made leaps and bounds worth of improvement in turning BASIC into an enterprise level language. I apologize to them for bashing their work. You guys do get way less credit than you deserve. Hats off to you for what you've done!

Also, I apologize to those I may have offended with what I've stated about VB.NET being inferior. The fact is, everybody compiles to IL. Granted, the different compilers have different flavors of IL they spit out, but at the end of the day, it's still IL. We are all on the same team here, and the constant in-fighting in the .NET community over languages certainly doesn't help strengthen that team. We can all learn lots from each other...but only if we are open to solutions using different techniques. I vote we put aside our language differences, and all play nicely together. Like I said in my last post: We can all be Friends, right? :)

Why can't we be Friends?

It might have been harsh to refer to what he posted as ignorant crap; but the fact is that it is ignorant crap.  Why can't we all just get along and Interop as well as .NET does? :-)

[Cory Smith's Blog]

I don't think that what I said was ignorant crap. I was making valid points about what C# has over VB.NET. I'm not trying to offend anybody here. I'm merely stating my opinion:

 He brings up the fact (which is pointless) that VB.NET **BETA 1** treated Or and And one way, then Beta 2 (and final release) treated it like VB (and BASIC for that matter) has for the history of the language. 

The history of the language. So, Cory, you admit that VB.NET is a carry-over from VB and BASIC as well? Or do you still think that VB.NET is a brand new language. And yes, I have gone through the process of converting from VB6 to VB.NET. The two languages are different, but the fact is that there are a lot of carry-overs (just look at the Microsoft.VisualBasic.Compatability namespace) from the days of VB6. The point that I made about Beta 1 is that when Microsoft tried to change VB, all the VB developers said no, and the language was changed back to the legacy way of doing things. Just trying to point out that it isn't a "new language" as Cory stated it was in the comments to my blog.

5. Granular Overflow Checking???? Lost me on this one.
9. C# doesn't allow sloppy namespace work??? what does that mean?  Namespaces are Namespaces.
10. Declarative Event Wiring... exists in VB.NET (AddHandler, RemoveHandler); actually better to use than WithEvents.

As to number 5, in VB.NET, you can only mark an entire project as checked or unchecked for integer arithmetic. In C#, you can use the checked{} unchecked{} block to specify which you want at which points.
For number 9, instead of forcing you to use System.Web.Mail.SmtpMail, in VB.NET, you can just type in Mail.SmtpMail...which can be very confusing if you're trying to figure out what Mail is.
Number 10, the AddHandler and RemoveHandler syntax is very odd in my opinion and it exemplifies one of my main pet peeves when it comes to VB.NET: It's hiding the delegate work from you. I think the += or -= operators that the delegates support is a much better way of wiring up events than the AddHandler and Remove Handler keywords.

As for what I said about the features that VB.NET can do that C# can't...calling them "crap"...I recant. I shouldn't have said they were crap. What I should have said is that they are worthless...to me. However, other people may use them, so I'll cut back on the usage of "crap" when it comes to features in VB.NET that I don't use.

I do use C#... just as I use C++.  I don't like the syntax or the missing features that IDE has for VB.NET.  I've never like the whole "pinkey finger gymnastics" required to use semicolons, colons, slashs, curly braces, and brackets.  I like VB.NET because it looks more like English... again, a personal preference... that doesn't make C# inferrior... just different.  Likewise with VB.NET... it's just different.

Okay, that's cool. My main problem with people who fight for VB.NET is that usually they have never even tried to use a different language. They're stuck in the VB mindset and they won't even look at C# or C++. So they fight for their language not even knowing what another has to offer. Agreed, the syntax is mainly a matter of personal preference. I like the curly braces and semicolons much more than the End XXX constructs and the line continuation character. You are the opposite. It's cool, no need to argue over syntax.

It might have been harsh to refer to what he posted as ignorant crap; but the fact is that it is ignorant crap.  Why can't we all just get along and Interop as well as .NET does? :-)

I still don't think that what I posted was ignorant crap any more than what you posted was ignorant crap. We both are bringing up equally valid points for each side of the debate. However, I don't want to get into a long drawn out language debate, and it doesn't look like you do either, so let's both call a truce...alright? VB.NET does have a Friend keyword, does it not? ;)

Don Box doesn't want the "us/them" image spreading

I wondered what the reaction to that post would be.

On the one hand, I like to be transparent and a lot of my life is dedicated to working on stuff that's not baked (and not available).

On the other hand, I was worried that people would take it the wrong way and that it would only reinforce people's "us/them" perception about MSFT folks.

My intention was only the former. Having to blast your environment once a week or so is hardly something to brag about :-) Hey, I'm envious of the folks who get to build and deploy stuff on Win03 server!!

[Comments on my Don! Please stop... post]

S'alright Don. I didn't think you were trying to separate us from you. That's the entire reason you have a blog right? To try to be more visible to the rest of the community? Well, it's working. I'm just jealous that you're working on stuff that I won't be seeing for a long time. :)

XBOX Live again

Yeah, I realize most of you have lives on the weekends, that's why my XBOX Live post didn't get more than one response. But here it is again:

Okay, I'm creating a story with all the gamer tags of bloggers who also play XBOX Live! If you have XBOX Live, reply to this post (in the comments), with your gamertag and what games you have. I'll start with me:

Update: Also, if you want, you can provide your MSN/AIM/Yahoo/ICQ addresses so that we can all contact each other before we go through the trouble of turning on the XBOX and connecting.

More about Scoble's Learning Experience

 I really don't think learning VB.NET would hamper anyone much, or prevent you from moving on to C# someday. As Joel says: 80% of what you learn is about which method to call in the framework anyways.

[KeithBa's Blog]

Indeed. I totally agree. In fact, you're looking at (actually, you're reading) a past VB6/VB.NETer. But! I saw the light. :) As to Cory Smith's comments sparked from my other post...let's disect this:

C# = VB.NET except UNSAFE. Period.
Sorry, don't buy this. If you read Robert Scoble's blog (which, by the way, this whole thing is about anyway), then you would have seen the link to my post on CodeProject about some of the differences between the two languages. And this will become more and more prevalent in .NET 2 (Whidbey) with the future features of C# being introduced.

"hackjob"... what the h**l are you talking about... it was written from the ground up to be a .NET language. JUST like C#. 'Much more natural'???? It's "hacked up" C++ for crying out loud. Some C++ guys that I know refer to C# as VB with C syntax."
Again, totally untrue. VB.NET is a carry-over from VB6. If I recall correctly, Microsoft was going to make And and Or exclusive (equivalent of && and || in C#) in VB.NET Beta 1, but all the VB6 programmers complained and so it was changed. It was obviously an "upgraded" product. Hey, I was a VB6/VB.NET programmer. VB.NET is, in my opinion, a hackjob and does not encourage OOP. Do you know now many people I see still using the MsgBox() function? Also, the Module keyword still exists. Granted it generates a class with all static members, but still, that doesn't encourage thinking in an object oriented way.
C# on the other hand is a brand new language: a 1.0 product. It isn't supposed to replace C++. C++.NET is supposed to replace C++. The C++ers you know that call C# "hacked up C++" are totally off base. It isn't supposed to be C++ at all!

"If you are going to say such ignorant crap like this... how about trying to back it up with some specific points that support your oppinion... at least this way people could remark about the specific points and allow them to form their own conclusions instead of you pushing your ignorance upon the masses..."
Again, if you had read Scoble's blog, and seen my post to CodeProject, you would have read the specific points I have against VB.NET. But you sir, obviously have not. If you want specific points to respond to, go read it...then come back and respond to them. Otherwise, you are pushing your ignorance upon the masses.

"and you might actually learn something in the process."
I think I've learned a lot here. You're obviously a VB.NET programmer who is bitter that us C#/C++ers call your language a piece of crap. You probably aren't willing to even consider switching to C# because "both languages do the same thing anyway". You know what, why don't you give C# a try. It isn't that hard to switch (I know, I've done it). Go pick up a copy of Inside C# by Tom Archer (MSPress) and start learning C#. I bet that after a few weeks of using it, you'll never want to go back.


Alrighty! My blog is at $108! Cool, now I have to claim it:

Listed on BlogShares
Keith Ballinger is right.

Ignore the advice to start without VS.NET or VB since they "hide things from you".
Taken to it's logical conclusion, this would mean you should start with assembler. The hardest thing to do while learning to program is keeping motivated. If you start too low-level, the irratation can lead to discouragement. ... Start with VB.NET and VS.NET. Create a new windows application project. Drag and drop a button onto the form. Double-click the button and write code. Hit F5.

Write an application that solves a problem you have now.

Play a little at first. Feel good about what you've done. But, within a few days, you need to try and solve a real problem. Make sure it's a problem you have. ... For instance, do you have a machine that's always running out space? Do you wish you could easily get a report of each directory on your system that has more than Xmegabytes inside it? Well, there's no application out there that does that. Write it. You'll need to learn to: take input from users, write out a report text file, scan directories recuresively, and learn how big a directory is. Once your done, use it. Heck, I'll buy a copy from you for $10.

[KeithBa's blog]

As to point number 1, I agree somewhat. I think using VS.NET would be fine. I was just warning him from jumping into WinForms too fast. I recommended just going with console apps like Tom Archer's Inside C# book does for starters. I think you can learn more outputting raw data to a console window than you can trying to wrangle with WinForms controls to get them to display your data. I think the console is, at least for an advanced user-turning-coder, a better place to start learning a language, then move on to WinForms.
However, I have to disagree with him starting with VB.NET. The fact is, it does hide things from you...a lot more than C# does. I'm not trying to say that he should learn assembler, or even MSIL for that matter. What I am saying is that C# gives a much more natural feel for .NET programming and OOP in general. VB.NET is technically OO...but it is a hackjob at best.

As for point number 2, I absolutely agree. It's amazing the type of motivation that you can get from solving a real life problem. That's how I learn best. It isn't through doing endless examples and practice apps, it's through doing an actual, real-life application...no matter how simple it is. And I would buy an app that does that for $10...I've thought about writing one myself several times! :)


This is my first post made from Windows Server 2003 Enterprise Edition. :) But, it's also my first post made from a Virtual PC. Livin' large, baby. This is so cool.

I'm sure I'll eventually wipe my XP install and convert entirely, but I don't have the time or patience to do so right now.

Calling all XBOX-Live!rs

Okay, I'm creating a story with all the gamer tags of bloggers who also play XBOX Live! If you have XBOX Live, reply to this post (in the comments), with your gamertag and what games you have. I'll start with me:

Update: Also, if you want, you can provide your MSN/AIM/Yahoo/ICQ addresses so that we can all contact each other before we go through the trouble of turning on the XBOX and connecting.

Gamertag: Gixug
Games: MechAssault, Ghost Recon, Unreal Championship

Does anybody have any clue as to what this site is? Apparently I got a referral from them in my Microsoft Download Center post, but I can't get past the login screen. I'm quite curious as to how I got referred to from this site.
More Posts Next page »