Beer28 wrote:VB is nice for people starting out. I started programming windows on VB5, though I had done programming on other systems before that.If it weren't for VB, I wouldn't be able to code C/C++ on linux with the intel compiler today. Thanks VB.
Manip, I hate to say this, but I could not disagree with you more.I started programming in GW-BASIC. I worked my way up via QuickBASIC 2.0, QuickBASIC 4.5, Visual Basic 3.0, 4.0 (both 16 and 32-bit editions), 5.0, 6.0, .Net 2002 and now 2003 (and partly 2005). I have worked professionally (i.e. for a job) with VB6 and VB.NET.I think VB.NET is the greatest thing to happen to VB ever. Making VB truly object oriented was utter genious. I find that using the Object Oriented paradigm I can do what I need to do much faster and more reliably than in VB6. I haven't used VB6 anymore for years now, and I say good riddance.For one thing you mention that certain things don't work anymore (Left() etc.) but that's simply not true. Those things all still work. I can still do Trim(somestring) or go the .Net way and do somestring.Trim(). I can do MsgBox("hello") or MessageBox.Show("hello"). I can do Val(somestring) or Convert.ToInt32(somestring). I can do vbCrLf or ControlChars.CrLf. All those global functions that VB6 used are still there, in the Microsoft.VisualBasic assembly.You say Thing.NetFunction() is the C++ way. It's not. The people who invented C++ did not invent OO.Thing.NetFunction() is the OO way of doing things, and Object Orientation is simply a better way of doing things. If NetFunction is an operation on Thing's class, it makes more sense to have it as a member than as a global function.And you can still call Win32 functions in VB.NET. In fact, the new Declare syntax is richer, and with <DllImport> you have even more control over what happens. With the Marshal class you can manipulate pointers and handles and all kinds of things in ways that are near impossible to do in VB6.And many, many more things that took serious API hacking in VB6 are just plain possible in VB.NET. For instance overriding a forms WindowProc, which in VB6 isn't possible without some really wacky stuff, and in VB.NET takes overriding the base classes WndProc.What if you want to extend an existing control in VB6? It leads to unnatural solutions because VB6 has no inheritance.To make a list like yours:VB.NET: Whenever I do anything where I have the freedom of choosing the environment myself, it's always VB.NET. Whether its a quick 10 line program I need or a large multi-component application.C#: I only use it to do really wacky InterOp stuff. Marshal is nice, but not very readable, so in some cases I prefer unsafe code. In this case 99% of the time the C# code will be in an assembly that I call from VB.NET.Managed C++: Only when Declaring all the functions and structs I need for InterOp becomes more work than the rest of the program. Also called from VB.NET code.C++: I used to use it quite extensively, but nowadays I only use it when the make me at Uni and for non-Windows development. I still think, from a language design perspective, this is the most interesting language I know.Java: use it sometimes, but not real often.VBScript: can't remember the last time I used it.JScript: client-side HTML scripts.VB6: Don't use it anymore.I'd go so far as saying that VB.NET is freedom, and that VB6 only allows you to do what Microsoft wants you to do.If you claim otherwise, I dare you to write a Console Application in VB6.
Sven Groot wrote:If you claim otherwise, I dare you to write a Console Application in VB6.
I know writing console apps in VB6 can be done, just not without some serious weird stuff. That was my point.I'm not bashing VB6 per se, as said I spent years with it being my #1 programming environment. It's just that, imho, it pales next to VB.NET.And I actually like VB syntax. Especially the fact that it doesn't use curly braces. Not that I have anything against curly braces, I just like End If better. But hey, I'm just weird like that. My very first program ever:10 PRINT "Yesterday I didn't know what a program was."20 PRINT "Today I'm a programmer."30 END