Fog Creek Software
Discussion Board




You Just Can't Kill Visual Basic (article)

"Pundits are still predicting an uncertain future for VB, showing a complete misunderstanding of the issues that make a programming language popular and ignoring the very spirit of VB itself."
http://www.devx.com/devx/editorial/16562

[...]
"VB delivers the six things that corporate developers care most about:
1. A BASIC-like, case-insensitive syntax
2. Visual design capabilities
3. A great IDE with an integrated debugger
4. Edit-and-continue
5. A variety of inexpensive, robust aftermarket controls
6. Simple, integrated database support"

[...]
"VB doesn't have an uncertain future. VB is a set of features. All the popular languages are mutating to adopt the features pioneered in classic VB and carried forward in VB.NET. The spirit of VB will live on, regardless of the syntax, platform, or framework."

Philip Dickerson
Friday, July 25, 2003

I wouldn't say that it has an uncertain future, it just has a limited one.  VB allowed non-programers to code. (Whether that is good, is a thread to iteself)   

Enterprise applications are not written in VB.  They are migrated from it.  While a VB application may prove mission critical, once recognized, most companies move into a more robust environment (C++, JAVA, etc.) to gain more control, feature and function.   

That don't mean that VB could not do the job, it just does not scale as well, especially to the multi-user environment. 

MSHack
Friday, July 25, 2003

VB brought some great features, but it also brought some baggage:

1. Secretaries began to coddle together applications that grew and grew until they became a tangled mess of spaghetti code that a real programmer is forced to maintain.

2. Often creates an environment where the prototype becomes the shipping product. "What do you mean 6 months for development? I saw that VB app you showed the marketing guys yesterday. Ship THAT!"


The article didn't cover another *huge* factor in VB's succes which was an exploding demand for applications. Everyone turned into a programmer overnight with a "21 Days" book. VB helped fuel this growth with its power and ease of use. However...Those days are probably behind us for now.

VB is great; I'm not knocking it but VB typified the "Wild And Wooly Cowboy Coder" atmosphere of the past few years. I think we're gonna see things settle down a bit now.

Mark Hoffman
Friday, July 25, 2003

I am an ignoramus when it comes to Visual Basic, but..

Question: Why do "corporate developers" care to have a "BASIC like case insensitive syntax"? What's wrong with a "C like case sensitive syntax"?

Avrom Finkelstein
Friday, July 25, 2003

VB will continue to flourish because, let's be honest, the vast majority of projects don't require anything more. In reality, most apps don't have scalability, transactional, etc. demands. The vast majority of apps are simple and don't need anything more than a simple environment. Most VB critics are a bit full of themselves when they talk about writing apps that support millions of users and billions of txns or whatever.

pb
Friday, July 25, 2003

Avrom:  After a few years of daily coding, I'm sure the case-sensitive C-like syntax makes perfect sense, but to the uninitiated, it makes for some very pithy haiku.  VB is approachable precisely *because* it takes some of the punctuation marks in syntax and turns them into English-like words.

Sam Livingston-Gray
Friday, July 25, 2003

Some of us care(d) about BASIC-like syntax because it was more English-like. If....Then instead of if(...){.

We also care(d) about line termination characters. The 'curly-brace' languages have lines that go on and on until they run into a semi-colon, regardless of how that line is distributed on the page. The VB-like structure of ending the line with CRLF (with the option to put an underscore to force line continuation), feels more natural to some of us.

I, for one, would have adopted a 'real' language much earlier in my career if someone had bothered to build a compiler that accepted input in the general form of BASIC (i.e. no curly braces and CRLF as line terminator).

My original thinking on this was that the computer should be adapting to me whenever possible and/or reasonable, and I've always felt that C-like languages broke this rule. I have long-since adapted to the C-like structure, but I'll never prefer it.

Ron Porter
Friday, July 25, 2003

"I, for one, would have adopted a 'real' language much earlier in my career if someone had bothered to build a compiler that accepted input in the general form of BASIC (i.e. no curly braces and CRLF as line terminator)."

I believe this language is Python.

Jim Rankin
Friday, July 25, 2003

The oNe tHinG this article hit on was case sensitivity.  haS aNyone coNsIdeRed how mANy maN yEArs are lost eaCh yeAr tryIng to Track DoWn oBsCurE issues intrODUced by cAsE SEnsItIviTy. 

That is one reason I prefer Windows over Unix and it's derivatives.  Case sensitivity is a flaw.

mIKe
Friday, July 25, 2003

"While a VB application may prove mission critical, once recognized, most companies move into a more robust environment (C++, JAVA, etc.) to gain more control, feature and function.  "

That may have been true of Java vs. VB6 but:

What's the difference between Java & VB.NET?

If you're developing for a Windows environment VB.NET is the way to go not Java...

GenX'er
Friday, July 25, 2003

Indeed, we do lots of developer productivity and developer satisfaction research, and something that comes up over and over again very clearly is that the departmental developer hates case sensitivity.

Professional programmers often make statements like "fundamentally, C, C++, VB, Java, C#, etc, are just Algol 68."  (In fact, _I_ made this claim earlier in this forum...)  Curly braces vs "End" statements, semis vs crlfs, what's the difference?  Conceptually they are all the same.  We've got structured OO programming here, and the syntax is just an uninteresting detail.

Now, from a theoretical, we've-all-got-computer-science-degrees perpective, that's certainly true!  But that misses out on the key to this market: the line-of-business (LOB) programmer who uses VBA cares not a whit for any statement that has the word "theoretically" in it.  Nor does the departmental LOB developer have a CS degree.  LOB developers are often experts on widget sales who happen to know some VB and have been pushed into becoming devs because no one else was available.

Therefore the LOB programmer cares about only one thing: getting LOB stuff done quickly.  How many times have you hit the "build" button and gotten back "you forgot a semicolon on character 65 of line 163."?  Errors like this drive LOB developers CRAZY.  It makes them want to shout "If you know exactly what is wrong and exactly how to fix it WHY ARE YOU TELLING ME? What is up with this stupid language???  What propeller-headed theory wonk designed this stupid thing???"

It's like going to a cocktail party and you make small talk: "This whole invasion of Iraq thing sets a historical precedent..."  and suddenly the host grabs you, wrestles you to the ground, puts you in a headlock and says "No, that should be "AN historical precedent". 

Eric

Eric Lippert
Friday, July 25, 2003

>>but to the uninitiated, it makes for some very pithy haiku.

Sam, I can agree that for the uninitiated, VB seems more readable and approachable than C like languages. (For the record, I'm a C/C++ in college, Java in work programmer.)

But I think the key word is "uninitiated". But, the quote from the article said "corporate developers" which, in my mind, would be people who would not be "unitiated".

Avrom Finkelstein
Friday, July 25, 2003

I think you are right Eric.  Kind of the thinker vs doer conflict.

Thinker:  This is the best engineered elegant design.

Doer:  Great, now create a useful one.

Mike
Friday, July 25, 2003

I hate when people say that non-programmers use VB. Perhaps it's amature programmers, occasional programmers, programmers who need to learn something about maintainable code, but they are still programmers when they use a programming languate.

pdq
Friday, July 25, 2003

I looked down on VB until I partnered in a startup and realized how much capital was being burnt with NIH syndrome and low level languages.


Friday, July 25, 2003

I too hate case sensitivity both in unix and in c/c++, java.  I loved the fact that VB will correct all my variables to the format I decided for them when I declared them.  Plus the change made me know I typed them correctly - no need to wait till compile time to catch the typo.

But what I think makes VB very popular is the fact it is event driven and that's how people are introduced to it.  Need a button?  Plop it down, double click it and write the code that you want to execute when people click that button - very understandable for everybody.  Now try to describe to those non-programmers OOP and they don't want to hear it - that's not how their mind works.  Explaining a button is an object is easy - they can see it, touch it.  But an account or a controller?  And god forbid a string or a number.

Also VB has build-in and well taught and documented currency type.  People don't like floats and are very pissed at the problems with floating point's problems with .1 unable to be represented as such but with some weird approximation.

tekumse
Friday, July 25, 2003

I would take exception to MSHack's rather sweeping generalisation that enterprise apps are not written in VB.  Our product runs most of a major car manufacturers european logistics, runs on a server set of nearly a dozen machines, supports several hundred users, and has cost several million GPB over the last 3 years to develop .  It is scalable, reliable, transactional, and written entirely in VB. 

Could somebody explain how migrating this to a JAVA environment would gain us anything at all, let alone control, feature and function ?

VB is a tool, like any other programming language, admittedly one in which it is easy for novice programmers to throw together some quick functionality, but that does not negate the fact that like all tools, it is the tool users who are ultimatly reponsible for what is created with it.

Tom
Friday, July 25, 2003

"but that does not negate the fact that like all tools, it is the tool users who are ultimatly reponsible for what is created with it. "

Great point Tom.  I think the reasons some companies shy from VB is they know their is a lower threshold of knowledge required to build something and have been burned by  that, so they look to other languages requiring more knowledge to do something.  They probably shoot themselves in the foot this way though as they miss out on the good VB software that DOES exist.

On time and under budget is not exactly Java's middle name.

Mike
Friday, July 25, 2003

If MS doesn't change its mind and doesn't come up with VB7, forcing everyone to move on to VB.Net, looks like a good opportunity for RealBasic and PowerBasic (if the latter finally comes up with OO)...

Frederic Faure
Friday, July 25, 2003

mIKe wrote:
"The oNe tHinG this article hit on was case sensitivity.  haS aNyone coNsIdeRed how mANy maN yEArs are lost eaCh yeAr tryIng to Track DoWn oBsCurE issues intrODUced by cAsE SEnsItIviTy."

Brilliant, mIKe!  I think it's fairly well-documented that case sensitivity is an impediment to productivity.  A question for all you hipsters who prefer it: What the heck does case sensitivity buy you?  Nothing. 

A sizable portion of the programming community consists of dullards.  For these people, it is absolutely vital that tools are artificially difficult to learn.  If you can't distinguish yourself through the power of abstract thought, then it's cool that you *can* distinguish yourself by memorizing the super-secret gibberish names of commands in Unix shells.

anon
Friday, July 25, 2003

wht srt f cmds r u tlkng bt?

     
Friday, July 25, 2003

>> "wht srt f cmds r u tlkng bt?"

That's funny, but the actual English to Unix translation would be:

English: "What sort of commands are you talking about?"
Unix:    "hj -pPf bd c hjv sdf -p | gh"

anon
Friday, July 25, 2003

no, you forgot the '~'!  You just wiped out your entire hard drive with that command.

     
Friday, July 25, 2003


I like case sensitivity. I wouldn't force it to anybody; except when some old-timer COBOL programmer give me this long long procedure in ALL CAPS.

Anyways, is matter of taste. I prefer case sensitive, strong typed languages. They forces, to a certain extent, to write "stylish" code.

(I like VB, thought.  When used by a professional, it's quite powerful.)

Leonardo Herrera
Friday, July 25, 2003

Well, I think that's what everyone has been getting at.  Most people don't care to write "stylish" code.  What does style buy you?  They want to get things done.

Andy
Friday, July 25, 2003

There is nothing in VB that prevents you from creating enterprise applications!  In fact, I can't think of anything it's suited better for? 

Things VB is not suited for: game programming, writing Windows Services (well, you can using 3rd party toolkits) or device drivers.

VB is a tool just like any other.  Bad programmers can use, just as good programmers can use it. 

The posts in this discussion go on to prove my theory that most (but not all!) JOS reader are not programmers and wouldn't be able to differentiate between what a programmer does and what a professional sumo wrestler does...

FredSavage
Friday, July 25, 2003

I prefer C-style over VB any day, but I wish it wasn't case sensitive.  The text editor should just automatically correct incorrect case ("correct" being as the variable was declared).

Case sensitivity leads to wonderful Javaisms like

Foo foo = Foo.foo();

Even though I prefer UNIX over Windows too, in general, I concur that UNIX commands are ridiculously abbrevtd.

Change password?  "passwd".  Saves a whole 2 letters!  Same for mv, cp, ln, and others I'm sure.

Short shortcuts are good.  Lack of easy to guess versions is bad.

Richard Ponton
Friday, July 25, 2003

I'd as soon have a compiler guess at my misspellings than have it guess at my case.  prnitf?  Ah, what the hell, I knew you meant printf ... borderWidthX?  Oh, I knew you meant borderwidthX.

I like case sensitive languages.  I like the common practice of using case to tell a bit about what an identifier is: Foo is a type.  foo is a variable.  FOO is a constant.

Alyosha`
Friday, July 25, 2003

I don't understand why case sensitivity is being mentioned so often as a reason why VB is easier for beginners than C or C++.  In my opinion that has next to nothing to do with it.

Far more important are the fact that by default VB doesn't require you to even declare variables.  Declaring variables is something that non-programmers or fledgling programmers find a nuisance and don't understand. 

Another big factor is that in VB when you don't define a variable it's treated as a variant.  This creates problems down the road, but at the beginning it's far easier for beginners to work with variants than to worry about what type of value they're working with.

Combine that with the fact that VB has a RAD style form designer/IDE and that beginners feel they can do as much with one line of VB as with ten lines of C++, and you get the idea why it's preferred.  I don't think case sensitivity has as much to do with it as any of the other things I've mentioned.

Herbert Sitz
Friday, July 25, 2003

"I hate when people say that non-programmers use VB. Perhaps it's amature programmers, occasional programmers, programmers who need to learn something about maintainable code, but they are still programmers when they use a programming languate." - pdq

This reminds me of one of my favorite Law & Order lines. The assistant DA is philosophizing with his boss about the gentle and kind man they just convicted.

ADA: "He's not your typical murderer."
DA: "He is. He killed someone."

Zahid
Saturday, July 26, 2003

This is a HUGE pet peeve of mine.  People who automatically assume VB coding is "easy" are fucking imbeciles.  Coding difficulty is a function of the problem domain you are solving, not the god damn IDE or syntax.  Corporate devlopers could give a fuck about case sensititivity.  And coding bubble sort in VB or C++ or on your TI83 calculator is the same fucking thing and complexity..  .  Coding bond anaytics in VB is harder than coding "Guess the secret number" in C++.    Do not make general blanket statements about programming dificulty based on the language.  Yes, VB as a 4GL makes many many many programming tasks easier, but those who think that is always a bad thing are again, tunnel vision tekkies who zero business sense.    Thank you for tolerating my rant, it's been 10 years coming...

Bella
Saturday, July 26, 2003

We've missed you, Bella - where ya been?

Philo

Philo
Saturday, July 26, 2003

I've been enjoying the nice weather.  Haven't been on the PC much the last few months.

Bella
Sunday, July 27, 2003

"Enterprise applications are not written in VB.  They are migrated from it.  While a VB application may prove mission critical, once recognized, most companies move into a more robust environment (C++, JAVA, etc.) to gain more control, feature and function."

Writing the initial code is often only a small fraction of the total cost. Once the maintainence kicks in the original easiness is lost. And one is faced with maintaining the mess created earlier.

And for long lived products you DO want to have some entry barriers. People that do have a clue on how to program are much cheaper in the long run.

Mr Curiousity
Sunday, July 27, 2003

Normally I wouldn't regard case sensitivity to be an issue worth bothering about, but the guy who asked "what does it buy you?" has pushed me.

Case sensitivity can be damned handy.  Consider the following invalid pseudo-VB code:

''''''''''''''''''''''''''''''''''''
Private hwnd As HWND

Property Get Hwnd() As HWND
      If hwnd = 0 then
            Err.Raise ErrWhatever
      Else
            Hwnd = hwnd
      End If
End Property
''''''''''''''''''''''''''''''''''''''
Type:  All caps
Module var: All lowercase
Parameter: First letter capped.

...or some similiar convention.  If consistently followed, I find this sort of approach to be emminently clear, readable, and concise - far more so than some stupid business of having to prefix or suffix names all over the place to prevent clashes.

John Aitken
Sunday, July 27, 2003

>> "And for long lived products you DO want to have some entry barriers."

What a dumb ass.  If managers weren't too busy leveraging synergy and utilizing paradigms, then maybe they'd have time to do their jobs and act as barriers to entry.  Then talented programmers could use amazing, practical tools like VB without having to listen to slashDot idiots disguising retarded UI design as "barriers to entry" and extolling the benefits of countless lost man-hours.

anon
Sunday, July 27, 2003

Anon,

Are you unable to follow your own line of reasoning, or is it just me ?

"If managers weren't too busy leveraging synergy and utilizing paradigms, then maybe they'd have time to do their jobs and act as barriers to entry."

Did you notice the big "IF" in your sentence??? So you say that in practice managers do not serve as the barrier to entry and that leads to a lot of pathetic code out there.

Thus having barriers that *work* is a Good Thing(tm). On average people that are able to handle more complicated concepts are bound to perform better.

Mr Curiousity
Sunday, July 27, 2003

Sorry, but I'm in the VB camp on this one.

Yes it's true, "On average people that are able to handle more complicated concepts are bound to perform better."

But let one set of people who can "handle more complicated concepts" do their work with VB, and let one set do their work with C++.  I think I know which will turn out a better quality product in less time.  And it's not the guys using C++.  (And, yes, I do realize some jobs are better suited for C++ than VB.  But, in my opinion, the vast majority of business apps would be better suited as projects done in VB, assuming the VB programmers are ones who can "handle more complicated concepts."  C++ slows them down.

I think Joel has discussed this at length as one of the reasons he chose VB for CityDesk.

Herbert Sitz
Sunday, July 27, 2003

On case (in)sensitivity: The problem isn't which one you choose, it's how consistent you are. If you're case-insensitive (for example), then _everything_ should be case-insensitive. Variable names,  filenames, passwords, surnames in your RDBMS etc.

I think the root cause is taking a Unix heritage language (C/C++) and using it in a mostly case insensitive OS (DOS/Win). Some things are case-sensitive, some aren't and it's annoying to have to keep remembering which.

On VB's success: The first IDE that let you do the "drag button onto window click on button write code for what happens when user clicks on button" thing well and easily enough to make it worth doing. The language was a side issue.

Andrew Reid
Sunday, July 27, 2003

Just because some amateur programmers don't turn "Option Explicit" on doesn't equate to anyone who programs in VB is a moron!!!!!!!

Yes - VB code can be written like garbage. But It also can be written very professionally.

Really when you break it down can't C++ & Java be implemented horribly too??????

I loved VB6 & I love VB.net. Although I like java, I like VB.NET way better!

GenX'er
Monday, July 28, 2003

I'll typically concern myself with writing business objects in VB, so I don't often use the GUI stuff.  That said, I don't really see that much of a difference between VB and Java.  VB is kind of like Java without implementation inheritance.  The "mode of thought" I enter into when coding in VB or Java is the same, while it's very different when coding C++.

bob
Monday, July 28, 2003

Oops.  Almost forgot.  The most annoying thing about VB is that it's not multi-threaded.

bob
Monday, July 28, 2003

I must have read language wars a thousand times, but they never end to amuse me. The funnier are the posts "languages are only tools" that end up showing how their "tool" is better than the other =)

Anyway, I think there are two topics going around here:
1) If people will keep developing in VB;
2) If applications written in VB are "good/better" for a certain domain.

I think (1) is certainly 'yes', mostly because it is so easy to do stuff with VB. That lots of people have become trained in using it is also a strong point. The fact that in the long term some VB app written by a "secretary" may become a burden when used by the whole corp, will not stop the other secretaries to write their own small app in VB.

And (2) is the heart of language flame wars, and, in my opnion, it depends mostly on your team's knowledge of a certain language/platform. One can write code in C++ that is both easy to maintain and has a very low bug count or resource leaks, and one can write code VB that is a piece of crap and has enough leaks to crash a 256MB RAM machine in minutes (I have seen both). And the oposites are also true.

Well, now back to the "probability of having a buggy program in C++ is higher than VB" or whatever...

whatever
Monday, July 28, 2003

*  Recent Topics

*  Fog Creek Home