Menu

VB6, VB.NET, RealBasic… or, “why the hell can’t we just get along?”

March 31, 2010 - Programming

I’ve been reading a blog- specifically, Addressof.

I could ramble on for hours about various things he has said- bit it would be just nitpicks about things. Anyway, this post, or more precisely, some of the comments, attracted my attention.

There is no argument that when MS completely dumped Visual Basic 6 in favour of the .NET platform it was a paradigm shift. And VB.NET, C#, F#, and some of the other language are great languages. I think the entire point is that Visual Basic, in 1998, was a well established pinnacle for RAD; when you thought Rapid Application Development, you thought of Visual Basic. It had, as noted elsewhere in the post, billions of lines of production code, some of which was possibly compiled and the source lost but still in use.

The entire argument is that if they did it once, it becomes easier for MS to do it again. Microsoft has been famous and infamous for it’s attention to backward compatibility; Visual Basic versions were no exception; until .NET, when support was completely cut off.

The entire point is simply upgradability. It is NOT easy to upgrade any non-trivial application to .NET. it simply isn’t going to happen. For most projects it would be a lot easier to just rewrite it. Take, for Example, BCScript. The parser would be rather simple to write in VB.NET/C# and in fact I’ve been meaning to do so for some time, but there is no way in hell I’m going to be able to import “BASeParserXP.vbp” into .NET and have everything hunky dory. There are a LOT of COM specific calls that use reflection (well, typelib information) and COM invocations. This is why a rewrite would be a lot better in this instance: since the basic shift is from COM to .NET. Sure, some dinky little address tracker or something won’t need any extra work, but consider that many businesses are still relying on Visual Basic 6 components to keep their business alive. If some version of Windows suddenly removed that support, they simply will not upgrade. In fact, this is actually a reality- many businesses are not upgrading to the 64-bit architecture because 16-bit applications, such as those written in VB4-16 and earlier, don’t work.

Yes, perhaps they can be upgraded. But consider that many of these companies are not a software company. Many of them are things like construction firms and law offices and so forth. They really don’t care that .NET makes application development easier or, that there are so and so classes available in the Framework. All they care about is that their order tracking system . Additionally, considering that many such companies contracted the development of said software from a third party (and since they do not specialize in software they probably don’t even have the source code), there is no direct upgrade path to .NET, even if it was as simple as opening the project in .NET and recompiling.

One of the more interesting comments (which deservingly, received a good amount of flak) was this one:

First of all, VB is barely a programming langauge. Only in .NET did it come close to catching up with C++ in terms of ability. It’s still not there, though. But now VB compiles into p-code (C# does, too…they now run on the CLR), leaving you feeling like you might as well write a whole program in Perl. It’s about time Microsoft gave up on that language, it’s only making real programmers soft minded and lazy. I’m just waiting for the day when they get rid of VB.NET. Also, just look at what VB.NET is, you’re creating a COM object that is a program. Simply, all that I-this, I-that is COM stuff…so COM is not dead, only hidden. Only the mind of a hard-core VB “programmer” is dead. cha, cha, cha, OLE!

And as for the OOP paradigm in VB…Like Microsoft says, VB uses polymorphism through COM objects. i.e., it’s not real polymorphism, but if I squint my eyes hard enough it looks like Polymorphism.

Now, this poster is talking out their ass, pure and simple, because their entire argument is shit. (haha, uncensored blog posts are fun)

Let us examine each point in detail.

First of all, VB is barely a programming langauge.

Well, damn. That’s the most powerful argument ever. gotta love how it get’s backed up with facts… Oh wait, it didn’t. This is yet another C/C++ programmer who has had it drilled in his head that any language without curly braces is shitty. well all you need is two braces and an o to see what they are being. {o}. The main problem with this concept is that if it was barely a programming language I highly doubt it would be turing complete. I think the more accurate phrasing would be “First of all, I don’t consider VB a programming language because I’m a language agnostic who doesn’t understand it and followed the paradigm that since I am super smart anything I don’t understand is neither worth my time nor worth anybody else’s time. Additionally I enjoy copious amounts of butt sex with my like-minded C developers”, which, aside from possibly the reference to sodomy, is rather accurate. C/C++ developers have a sort of superiority complex when it comes to what they deem “lesser” languages. The obvious root cause is simply jealousy, after all, in pure C a Simple windows application can take several pages of code. and MFC doesn’t exactly make C++ fully friendly on that front, either. Visual Basic does. The transliteration as far as these superior C/C++ beings are concerned is somehow that the language is inferior. In a similar vein, I could simply say that VB is better merely because it posesses an exponentiation operator. cheap shot? Yes. but it flows in the same vein. See, it’s not about what is and isn’t a programming language, it’s about what get’s the job done faster, and when you understand one language better then another it’s no surprise that jobs done with it get done faster.

The sad thing is that C# developers share the same superiority complex towards VB.NET. myself included, actually. And I mean, they are running on the same framework- they have nearly the same feature sets and capabilities. And yet you still find C# advocates whose entire argument consists of the spelling of a keyword or other baseless argument.

Only in .NET did it come close to catching up with C++ in terms of ability.

Yet another well researched opinion. I say that sarcastically. Unless of course he was able to research this subject by reading the walls of his large intestine, I highly doubt this commenter was able to pull his head out of his ass long enough to even understand what he was talking about.

Anything you can do in C/C++ you can do in VB6. is it easy? Not always. But considering that nearly anything in C++ is a struggle against a set of warnings and compiler errors anyway I’ll take VB6’s “make 90% of the task simple” approach anyday. A Prime example is BCSearch. If one didn’t know better, it’s rather easy to think it was written in VB.NET, C#, or C++. It simply doesn’t meet the typical “expectations” of a Visual Basic 6 program. It’s rather easy to create an application in any language, perfecting that application and it’s appearance is not, regardless of your language. The fact that VB6 doesn’t make on-par UI design easy with such introductions and Luna and Aero themes is not a fault of Visual Basic but rather one of the fact it was written in 1998; besides, such limitations are easily overcome using simple manifests. The only true limitation I have yet to surmount is the fact that I cannot seem to get any non-trivial application to run properly without being run as an administrator. XP/Vista style icons for the application icon are not possible using the built in tools of Visual Basic 6 (which does not understand 32-bit Alpha icons) but it’s a simple task to create a resource file using RC that includes the desired application icon. Same ease of use goes for the inclusion of manifest files and the like for support of XP and Vista themes. The fact that books like HardCore Visual Basic and sites like vbaccelerator.com exist are pretty much indications that it’s not just a programming language, but like any other programming language, it’s a culture. This is in fact why the shift to .NET can be difficult- it’s a culture shock. Like suddenly noticing that your Asian or don’t have toes.

But now VB compiles into p-code (C# does, too…they now run on the CLR), leaving you feeling like you might as well write a whole program in Perl.

yet another unresearched opinion stated as fact.

“P-Code” was originally usable in some versions of Microsoft C. the motivations for it I am unsure of, but it automatically included a PCode interpreter in your application.

Visual Basic versions 1 through 4 were always compiled to a sort of P-code; basically, very low level bytecode that was interpreted by a VM. Which I believe was contained in the VB runtime.

the .NET framework, or more precisely, the CLR, executes something called “IDL”- Intermediate Language. Now, the important thing to realize is that IDL is P-Code. It includes features such as JIT; and, in fact, the IDL that you compile a .NET assembly to will be run as machine code on the target machine that is what the CLR does. it compiles it on the fly to native code, same as the JVM.

Additionally, it’s important to note that a “bytecode interpreter” is many times faster then a script interpreter; perl may have it’s own optimizations inside but either way it’s still going to need to parse your pl file and create the appropriate structures. compiling to IDL is sort of like building an expression tree out of an expression. You don’t necessarily know what it was made from but you can glean what it is supposed to do.

It’s about time Microsoft gave up on that language, it’s only making real programmers soft minded and lazy.

Perhaps. he provides no evidence of this. They do however provide a copious amount of evidence for the case of “C/C++ can make real programmer elitist assholes”

Also, just look at what VB.NET is, you’re creating a COM object that is a program. Simply, all that I-this, I-that is COM stuff…so COM is not dead, only hidden. Only the mind of a hard-core VB “programmer” is dead. cha, cha, cha, OLE!

This particular expert really exemplifies how deeply rooted this poor posters head has gotten in their ass. They evidently do not even understand what COM is, much less how .NET, while allowing you to create .NET assemblies accessible via COM, does not, by default ,create any COM objects at all. I believe the intent is perveyed by removing “COM” from it. COM is not used here. .NET is a different framework with different goals. just because “i” is used as prefix for interfaces doesn’t suddenly make something based on COM. this is a rather ridiculous notion, since it implies that java is also based on COM. This entire paragraph says “I don’t understand objects and class-based programming. all objects are COM to me. long live gets()!”

And as for the OOP paradigm in VB…Like Microsoft says, VB uses polymorphism through COM objects. i.e., it’s not real polymorphism, but if I squint my eyes hard enough it looks like Polymorphism.

yet another example if retarded people saying retarded things. I’m not even sure which VB we’re talking about. He seems to think COM is OOP, but it isn’t, except evidently deeply up his ass where his head has come to rest. Polymorphism is treating an object as if it is another object. you can treat a TextBox, for example, the same as you would any Control. Just as you can treat any object as if it were an instance of an interface that it implements. That is polymorphism. Additionally, if I squint really really really hard, I see a small brained lunatic with a inferior understanding of basic programming concepts trying to play in the big boy sandbox, and all he does is piss all over it. Bastard.

The rest of the comments really go overboard. Mostly people claiming to have the inside track to knowledge, kind of like Fritz Zwicky, the first person to conceive of the concept of a neutron star. Which later was proven to actually exist.

Basically, their inside knowledge, as I’ve stated several times here, must be coming from the walls of their ass.

Anyways, I’m rather full of energy, so let’s say I respond to his follow up post!

Yes, I think VB is barely a programming language. If it doesn’t compile directly into bona-fide instructions, then I don’t consider it a legit programming language. I would prefer to call them scripting languages, because something else is _always_ needed to run them. When you compile a VB program, you’re really saying “Hey you C/C++ guy, go and do this for me.” And it’s that simple. So, yeah, I’m a bit of a purist in that sense. But also keep in mind that VB is considered a high level language, whereas C/C++ is considered a low level language, and of course Assembler is as low as it gets…which is one step below C/C++.

This is seriously the most ridiculous head-up-the-ass thing I’ve ever heard. “it’s not a real language because it doesn’t compile to native code” is completely and utterly the most ridiculous thing I’ve ever heard. the way a program is compiled doesn’t define the language. I’d suggest he give his head a shake but considering it’s so deep up his ass he might get some sort of sick sodomite pleasure from it. (yes, I do need to keep making references to that)

I’m going to start something now, because perspective seems to be lost:
You can think of VB this way: The real programmers (not necessairly C/C++ people) were sick of being bothered by the half-wit wanna-be-programmers always having code that didn’t do what they wanted it to. So, the real programmers created a rubber room with a sun painted on the ceiling for the half-wits to play in. Now the real programmers just pat the half-wits on the head and say, “go play now, Timmy.” And the half-wit says, “Hey, I can see the sun!” The only problem is, some good programmers have joined the VB bandwagon. Well, in short, VB has no memory management, no pointers. It’s a safe room, and really, where better to do testing?

And the good programmers use pointers and direct memory copies, while taking advantage of not having to do those things otherwise. In either case, seeing the sun is better then . There are other problems with that paragraph but this poor soul is a lost cause. (I mean seriously, *cue deep imitation voice* “It’s not a language if it doesn’t compile to machine code”, fucking hopeless retard. He demonstrates his ignorance right here:

It’s not called Visual BASIC for nothing. That’s why IBM chose the name BASIC, it implies simple, easy. VB is a derivative of BASIC, which was never meant to be a real commercially used language. So sign the anti-petition? Hell, yes. And I’ll sign any petition that will aide in getting rid of VB as viable language choice. The only use for VB is VBA for people like Analysts, Accountants, Secretaries, et cetera who need to do the same menial tasks over and over again in Excel.

WHAT A FUCKING MORON.

If you’re going to spout “facts” at least make then accurate. If you’re going to badmouth a language based on it’s roots, at least get the fucking roots right you brain-dead possum fucking shrew faced turkey necked weasel toed koala bear fucker! BASIC was NOT CREATED BY IBM. it was invented at DartMouth college by Kemeny and Kurtz. “to provide computer access to non-science students.” which may seem to prove the point of this particular platypus-dicked Polar bear diaper fetishist, but consider that C/C++ was created for same damn reason, since ASM was simply a huge pain in the ass.

According to Wikipedia (and don’t worry, these 8 rules are backed up by my ancient college BASIC textbook)

BASIC was designed with 8 simple rules:

The eight design principles of BASIC were:

1. Be easy for beginners to use.
2. Be a general-purpose programming language.
3. Allow advanced features to be added for experts (while keeping the language simple for beginners).
4. Be interactive.
5. Provide clear and friendly error messages.
6. Respond quickly for small programs.
7. Not to require an understanding of computer hardware.
8. Shield the user from the operating system.

Apparently, what this particular Lemming Snuffing incestuous beastiality lover has a problem with is rule 3: apparently, it shouldn’t be allowed to both have advanced features AND keep the language simple for beginners. no! everything must be complicated to all shit, like trying to figure out how he’s going to organize his huge animal orgies, making sure every Dongle has a port to plug into, so to speak. like a version of tetris, but far more likely to cause bouts of vomiting. There is absolutely no problem with any of these steps! (except perhaps number 8, but because of number 3, it should be rather easy to work around by definition).

It’s important for Chinchilla loving Carnal Ostrich visitors such as them to understand how the language evolved to what it is today rather then criticizing what the language is now based on what it was.

Almost every single interpreter for BASIC ever made was considered by BASIC’s creators as a “Street BASIC”- which means they don’t even consider it worthy of the name BASIC. the very fact that they posessed a data type made them shudder. It went against the very mantra of BASIC.

But, BASIC changed. it evolved. the BASIC of 1984 was already so far and way from the original design of Kemeny and Kurtz that it shouldn’t have even been called BASIC at all. And yet 16 years later there are people using the original definition and design goals of BASIC, something that has been dead and buried for years and forgotten, as some sort of argument against what VB.NET is today? What’s next? Are we going to start criticizing java because it was original designed for appliances? Get real. Designs change. so too must minds.

Have something to say about this post? Comment!