My first forays into programming as a kid were using Visual Basic, versions 1.0 and later, 2.0. Windows 95 had not yet come out, and VB still compiled to p-code which was interpreted by VBRUN100.DLL or VBRUN200.DLL. Even back then, the VB interface builder was slick. Click on the button tool and draw a button on your window. Double click and the code editor pops up, complete with a skeleton click event function for your new button. Writing a graphical interface was as simple as drawing widgets and connecting them with a few lines of code. Running and debugging your program was a matter of using the VCR-like controls on Visual Basic's toolbar -- no compilation necessary. Visual Basic brought programming to the masses.

The only problem was, VB was a sandbox. It was designed to support a certain range of tasks, and anything outside of that was kludgey to the point of impossibility. Your widgets didn't resize themselves correctly when you changed your monitor's DPI. Dynamic data structures more complicated than an array were unthinkable. Want to call the Windows API? You needed to write a library call prototype for each function you needed. Want to extend VB with new controls? You had to buy Visual C++, which was "visual" to the extent of having a clumsy Windows IDE. And forget about speed... Visual Basic the language had its roots in QBasic, and it showed.

Fast-forward to today, when Visual Basic is being used to develop enterprise-wide business applications, has real compilation, and all sorts of language extensions no-one would've thought possible ten years ago. Unfortunately, VB culture remains kludgy. The majority of VB programmers are so used to developing workarounds for the limitations of VB's black box that many of them have lost any sense of code aesthetics. The citizens of VB-land have no sense of ownership, being at the mercy of Microsoft's fascist state in everything from language features to support and upgrades.

As for me, I now write in Perl and Gtk+. Perl is certainly equal to anything Microsoft can come up with in terms of sheer baroque feature-studdedness, but the difference between them is cultural. Perl is idiomatic, postmodern, and very much community-owned --- witness CPAN. Whereas VB culture encourages wordy workarounds, Perl developers value concise and elegant (in some eyes, at least!) expression. An ephemeral difference perhaps, but it is the difference between a hack and a hacker.