
The Birth of Visual Basic (2006) - radmuzom
http://www.forestmoon.com/BIRTHofVB/BIRTHofVB.html
======
Stratoscope
This is the most complete and interesting account I've seen about the
beginnings of VB from the Microsoft side. I don't know how I missed it until
now, but I'm glad it was posted here.

Source and disclaimer: I'm the "Ruby development 'wizard'" mentioned in the
article. Apparently I helped the VB team learn how to code for Windows! I
didn't know that until now, but I'm glad I could help.

To amplify on a few points in the article...

The discussion of Custom Controls is right on. There was a myth that the
reason Visual Basic was extensible through the VBX interface and custom
controls is because Bill Gates insisted it. That's only partly true.

Bill's role wasn't in getting custom control support _added_ to the product.
It was to make sure that it wasn't dropped.

The support was always there. After all, when we coded the original set of
controls, we needed _some_ kind of interface for them, and it was obvious and
planned all along that this interface would be open for others to build
controls of their own.

Actually they weren't called "controls" originally. Alan was going to call
them "waldos", named after these:

[https://en.wikipedia.org/wiki/Remote_manipulator](https://en.wikipedia.org/wiki/Remote_manipulator)

I couldn't make sense out of that name, so I ended up calling them "gizmos"
instead. And my little "Gizmo API" was what later became the VBX interface.

Scott also mentions the original "lines and arrows" Ruby interface, where you
would drag an arrow to connect an event emitted by one object to an event
target exposed by another object. He's right that this ended up not being a
usable programming model for VB.

But recently I tried out Unreal Engine 4's Blueprints feature. It was very
reminiscent of what we were doing back then! But of course the Unreal team put
in all the additional work to actually make this a usable feature - we never
took it that far.

~~~
jasode
>"lines and arrows" Ruby interface, where you would drag an arrow to connect
an event emitted by one object to an event target exposed by another object.
He's right that this ended up not being a usable programming model for VB.

Fascinating. It's interesting that the modern Qt Creator IDE (for C++) has
something similar for its signals & slots mechanism. It has the ability to
draw a line from the "signal" (event) of one control to the "slot" (event
handler) of another.

I've seen several demos[1] highlight this operation but I don't know anybody
that actually follows that procedure. They'd rather just type in the text
editor: _connect(src,SIGNAL,dst,SLOT);_

[1][http://www.youtube.com/watch?v=JtyCM4BTbYo](http://www.youtube.com/watch?v=JtyCM4BTbYo)

------
jasode
It's an interesting story but it's told as a "person A did this, Person B did
that, and Person C had this idea, etc." Maybe it's a consequence how my brain
works but any time I read that type of recap, I forget everyone's name and the
other trivia 5 minutes after I'm done reading it.

When revisiting technology history, what tends to stick in my mind is the
context and industry forces prevalent at the time and the story doesn't have
that.

So my recollection of context in 1990 would include...

1st: The prevailing method of writing Windows programs in 1990 (the Windows
v3.0 & v3.1 era) was the raw Win32 API. That meant the 'C' Language WndProc(),
giant switch case statements to handle WM_PAINT messages. Basically, all the
stuff taught in the thick Charles Petzold book.[1] This was very tedious and
complex type of programming. It was not friendly to corporate aka "enterprise
apps" aka LOB "line of business" type of programming. (Java would arrive on
the scene 5 years later but I didn't see a lot of corporate adoption until
v1.3 which was year 2000.)

2nd: You had a large base of old-style DOS text mode developers for line-of-
business apps using programming languages such as dBASE III, Clipper, FoxPro,
and other 4GL tools, etc. The typical skillset of those programmers did not
include the C Language.

In 1990, Windows 3.0 was becoming popular as a platform for corporate desktops
and businesses wanted to write apps for it.

Visual Basic v1.0 hit that perfect sweet spot for a bunch of refugees from the
DOS text mode 4GL languages to write Windows programs. They didn't have to
learn the low-level C language or mess around for months with the Petzold
book. Visual Basic had this ingenious abstraction called "forms" that hid the
WndProc() monster and its messy switch case statements. It was a huge
transformation. It was phenomenal how VB "democratized" the programming of
Windows apps. A bunch of ISVs sprung up that built their business around
Visual Basic.

The recent parallels to VB as an "inviting tool for newcomers" might be PHP
replacing a lot of CGI+PERL and maybe JQuery eliminating a lot of low-level
Javascript getelementbyid(). Today, when I look at the iOS and Android
landscape, I still haven't seen anything (Titanium? Xamarin?) that grabs
mindshare the way VB did back in 1990.

[1][http://www.amazon.com/Programming-Windows-3-1-Charles-
Petzol...](http://www.amazon.com/Programming-Windows-3-1-Charles-
Petzold/dp/1556153953)

~~~
monstermonster
I'm a corporate neckbeard. Probably the opposite of everyone here. And a
lurker, so hello!

I work for a company that ignored the industry trends, we picked a winner with
"Petzold style" win32 as you put it. We have a 800kloc 20 year old codebase
for a LOB product that hasn't had to be rewritten four times due to the
abstraction of the hour being changed. No VB, MFC, no ATL, no Winforms, no C#,
no WPF, no ASP, barely any COM.

The biggest irony of all of our intentional ignorance of technological
progress is that our software works _100% perfectly_ on Wine on OSX and Linux.
It also compiles with GCC under mingw32 and works natively on ReactOS bar a
few problems with the OS.

Do all these magical abstractions and platforms do you any good?

I'm less convinced every day.

You're right about mindshare though and as a vendor, that is what pays the
bills.

Going to fire up textpad, nmake, windbg and write some code now...

~~~
gtirloni
What's the learning curve like for a junior developer joining your company to
work on this 800kloc product?

~~~
monstermonster
Well I was the last hire in 2004 and we don't have anyone junior in our 3
person team so I can't answer that really other than a ballpark figure.

A good win32 programmer with sector experience could probably jump straight
in. Someone with no experience of win32 and the sector would probably be 6
months of work for them and us which isn't a problem.

We interviewed one guy in 2010 who was a "rockstar" win32 and C# programmer
(apparently) who wanted a pile of cash and came well recommended. We dumped
him on a machine with notepad and the windows SDK and documentation. No visual
studio. He didn't even get a message box on the screen. We just paid the guy
who was leaving a pile more cash and I suspect that was his ploy anyway.

That's our only problem!

------
DodgyEggplant
VB was about getting stuff done. Ugly, awkward, convoluted, nowhere near a
real programming language. But, the things you could build. Fast. In no time,
you had something that worked, installed anywhere, no approvals, no app-
stores, no complicated deployments. Microsoft miserably failed to scale it to
the web, and with some efforts - to mobile. They just drove developers away,
and till today we do not have a similar tool for the semi-developers, the
hobbyists, the lawyer who wants to make some app for his office.

~~~
mschuster91
> Microsoft miserably failed to scale it to the web

They did, in form of the abomination called ActiveX. Back in the heydays, it
was the Java and Flash in terms of exploits and 0wnage.

Obviously the worst thing was that ActiveX applets allowed raw access to the
win32 API (or any other external DLL which could be used with the FFI of VB).
No one signed their applets and everyone clicked "accept and run"... and on
DOS-based OSs like win95/98/98SE/ME or XP (which set up the primary account as
admin) this basically meant local r00t on the web.

~~~
yuhong
I think many did sign their applets.

------
japhyr
I'm a high school teacher, and I'd love to hear from some people who know
Visual Basic well. I teach an intro programming class each year, and I
currently use Python. I occasionally get students who have had a previous
class in Visual Basic at another school. These students tend to think they
already "know programming", but after two or three weeks in Python they start
to tell me they're learning all kinds of concepts they didn't know about, and
they say they're enjoying programming in Python more than Visual Basic. There
are lots of variables in their experience though, so it's hard to tell exactly
what is making programming more interesting to them.

My questions:

\- Do you have any thoughts about people being introduced to Visual Basic as
their first programming language?

\- If one group of students are taught Visual Basic well, and another group is
taught Python well, will all students come away with a decent grounding in
programming?

I don't ask that as a language flame war, I'm honestly curious about how
programming in the VB environment compares to languages I'm more familiar with
such as Python, Java, C etc, especially for students who have no previous
background in programming.

~~~
roywiggins
Are we talking VB6 or VB.NET?

VB6 is... old, and feels old. It barely allows object oriented programming and
doesn't have first-class functions, so you're pretty limited to a procedural
sort of paradigm. The IDE is clunky. For example: error handling is done with
explicit GOTOs (ugh) and "On Error Resume Next" lets you simply skip past
errors(!!!).

VB.NET is basically a friendlier-looking version of C# and is therefore not
nearly as bad as VB6, has a real modern IDE, etc.

Python feels like a playground where you can explore; VB6 feels more like
you're on a rail and the moment you fall off everything will break.

~~~
icebraining
_" On Error Resume Next" lets you simply skip past errors_

Is that very differently from "except: pass" in Python, though? Most languages
allow you to skip past errors, the problem with VB was the culture of the
users who didn't treat that as a red flag, not the language feature itself.

~~~
roywiggins
On Error Resume Next is actually weirder than an empty error handler. If
Python errors halfway through a try/except block, it will skip the rest of the
block. If you On Error Resume Next, VB will literally just proceed to the next
line and keep executing.

And since you don't need to indent the block that comes after On Error, it's
easy to miss that line...

------
j_s
_The Silent Majority: Why Visual Basic 6 Still Thrives_ (2012)

[https://news.ycombinator.com/item?id=4085372](https://news.ycombinator.com/item?id=4085372)

[http://msdn.microsoft.com/en-
us/magazine/jj133828.aspx](http://msdn.microsoft.com/en-
us/magazine/jj133828.aspx)

------
vblord
Very cool. I learned to program on VB6. I was a really amazing product for
it's time.

------
orionblastar
Visual BASIC 1.0 for DOS was the first one I learned. I was working for a
community college and they had a BBS for Tradewars and other stuff. My
supervisor and I tried to write a Tradewars game in Visual BASIC.

Later on we got the Windows version and it was fun writing Windows
applications with it.

I got a job later on because I knew Visual BASIC and MS-Access 1.0 had just
come out with Access BASIC that was like Visual BASIC and in 15 minutes I made
a database in MS-Access to keep track of a record collection to get the job.

Visual BASIC really peaked at 6.0 after that Visual C# killed it, Visual
BASIC.Net isn't as good as the Classic Visual BASIC.

I still work on VB 6.0 projects from time to time. I owned all Visual BASIC
versions from 1.0 to 6.0 and I have the 2002 and 2003 etc versions on DVD that
I barely used.

I find Python and Ruby to be replacements for Visual BASIC.

------
jimmaswell
vb.net is an odd language. Pretty much useless in a way because it's just a
less powerful, oddly-syntaxed C#, after using it for a year at one point. Not
a bad language but offers very little that C# doesn't, and is missing some.
Handles statement was very nice though.

~~~
Spearchucker
"...it's just a less powerful... ...c#..."

How so? I use both (my largest C# project was Nokia Maps, largest VB.Net
project is my own database + sync engine, at ~110kloc, spread across Windows
Desktop, Windows Phone and WCF sync engine). I've not come across any
shortcomings in comparison to C#. Granted I'm using the free editions of
Visual Studio, and avoid any third-party components or code. What am I
missing?

~~~
wsc981
I _think_ you can probably achieve the same results with VB compared to C#,
but at the cost of writing more code or slower performance.

~~~
Spearchucker
VB.Net is about as verbose as C#. There can be no perf differences because
they both compile to the same bye code. Assuming the dev knows what he/she is
doing when optimising for perf in either language.

------
jfroma
For all the vb.net detractors, I'd suggest you this blog post "in defense of
vb.net"

[http://bugsquash.blogspot.com.ar/2013/02/in-defense-of-
vbnet...](http://bugsquash.blogspot.com.ar/2013/02/in-defense-of-
vbnet.html?m=1)

~~~
noblethrasher
Even though I'm a C#/F# programmer, I'll offer a better defense of VB.Net:

* Method resolution (I actually prefer C#'s but I can see the advantages of VB)

* XML Literals

* Many more query comprehension operators than C#

* Don't have to put `Select` at the end of a query comprehension expression

* Filtered Exceptions (coming in C# 6)

* Ability to call module functions without fully qualifying the name

* The `WithEvents` and `Handles` keywords

------
thro1237
Is there something that replicates the VB experience for the web? Something
really easy for a new developer to pick up and build a form based business
application without worrying about HTML/CSS/Javascript, etc?

~~~
Immortalin
Asp.net web forms, my favourite web framework. It's bundled with visual
studio.

~~~
thro1237
Thanks. Is it free or requires a paid license?

~~~
Immortalin
There is a free version

------
vram22
Surprised to see no comments about Delphi in this thread, as it's quite
related to VB in terms of power, applicability, platform, etc.

------
anigbrowl
VB was a crappy language because of Basic, but if you could get over that it
was a really nice IDE for rapid prototyping I loved the forms paradigm. I
wonder what people consider the current leader in this area.

~~~
edtechdev
It's still VB
[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

For 'rapid prototyping' of a website, I guess that would be Wordpress.

------
thewarrior
Is there something like Visual Basic for the web ?

------
gaius
Interesting that the name Ruby was already claimed (like Go). I guess no one
in Ruby On Rails thought to check.

~~~
afandian
Wikipedia puts Ruby at 1993. I think it's reasonable to assume that Matz
hadn't heard of a project that started not much earlier.

"I guess" you didn't think to check.

~~~
fleeno
And I don't think the people "in" Ruby on Rails named Ruby!

------
benguild
I hella coded VB5/6\. Before that, QBASIC4LIFE

