Hacker News new | past | comments | ask | show | jobs | submit login
The Rise and Fall of Visual Basic (medium.com/young-coder)
171 points by chwolfe on June 23, 2019 | hide | past | favorite | 149 comments

I'll copy one of my recent comments with some minor changes:

I still sometimes program in Classic VB, (aka VB6). Each year it is more difficult to install the IDE, but the runtime is still installed by default.

It is incredible easy to build a nice one screen application with not very a very complicated background logic. Normal people like a nice graphical interface with a few buttons, and with Classic VB you can create them very easily and iterate and customize the form.

My last big problem was that it doesn't have a build in sort function, so you can use a n^2 sort or write a good sorting function by hand :( . When the logic start to be not so easy, there begin to apear problems.


About the article: I agree with most of it.

> Also on the big side: There was no more edit-and-continue feature.

I still miss that when I program in other languages. It kills so many (all!) optimizations possibilities, but it's extremely handy.

> VB.Fred and the .NET Solution

I call it VB# or VB#.Net instead of VB.Fred.

The first money I made using a computer was writing simple business automation apps in VB, first 5 and for a short while 6. I also dabbled in Access Basic and then VBA when all the office apps standardized on it instead of each having their own flavor.

VB was great like you said until you needed to do something difficult. I remember Bruce McKinny’s Hardcore Visual Basic book being my best friend for a little while. It thought me I could do the hard stuff in C, make a DLL and drop that into my VB project.

Bruce had a saying, VB makes 95% of the job easy and the other 5% impossible.

I was going to make a reference to "Hardcore Visual Basic" but you beat me to it. Fantastic book, it's hard to find a tech book that is that useful and fun at the same time.

My first job started out with mostly Visual Basic 6. One of the modules written in VC++ by a bunch of guys who were looking to get that on their resume (they had since departed). It probably should have just been in VB as well and was always a nightmare to debug and enhance.

Once .net was prominent we mostly moved to C#. There didn't seem to be much of a reason to go with VB.Net, C# seemed more "legitimate" and without the hassles of Visual C++/MFC.

Decades later and I still find myself writing an Excel macro in VBA now and then but I've largely moved on.

Matt Curland's "Advanced Visual Basic 6: Power Techniques for Everyday Programs: Hardcore Programming Techniques" was a cracker of a book as well back in the day:


I bloody wish a VB6/Delphi/WinForms-like IDE was available for Python. Coding anything relevant in VB is pain, as is creating GUIs in Python.

Threaded GUIs in python is a... fun experience.

There is Boa Constructor (the name seems to be a play on C++ Builder, the C++ counterpart of Delphi): http://boa-constructor.sourceforge.net/

Though it has been a while since its last update.

Sure? I thought it was after "constrictor" [1]

[1] https://en.wikipedia.org/wiki/Boa_constrictor

It's more than a decade old. I doubt it's going to work with modern versions of Python and libraries. It's very sad it has been abandoned. The fact it has been probably means it was very difficult to maintain.

I always liked the Collection object in VB but for large number of items access by index was very slow. And Scripting.Dictionary couldn't access by index. So I wrote "DictCollection", a mix of Collection and Dictionary that can emulate both. With sorting, filtering, subcollection nesting, .Copy(), .Clone(), .ToArray(), .ToTable() and lots of String/Array manipulation functions. It's a universal data structure just like the JavaScript object or LUA table. It can act as a list/array, a key-value-store or an object tree. Take a look here https://github.com/karstenheld3/WhizzyVBA

Java and .NET still support "edit and continue" debugging. Once your program messes up a crash is usually better.

Visual Studio doesn't support edit and continue for 64 bit applications. I guess you can do your debugging in 32 bit but if that means compiling 32 bit versions of all your native libraries too, it's a giant pain.

I didn't know that, but I assume you're referring to native instead of .NET based? Java definitely supports editing while debugging so fairly sure MS would in C# and VB.net

Maybe I'm missing something since I haven't touched any of this in years but isn't .net winforms builder the same experience but with a saner language ?

Agree. To me the VB.net improvement all made sense. But it is true that VB.net introduced a few complexities as well. Like strings can be null, so checking for emptyness is a bit more complicated. But also simplified other things, like I believe VB6 was using only reference counting for its garbage collection so it was important not to create circular references.

In Common Lisp you can do the edit-and-continue thing, and the language can be very fast if you want it to be.

use electronjs

Is there a simple way to make an electronjs app with a python backend? Also does electronjs have a drag-and-drop GUI ide?

>And though historians love to talk about the visual part of Visual Basic, its signature ability had nothing to do with graphical widgets. Instead, VB became famous for a legendary feature called edit-and-continue, which allowed developers to run their programs, find problems, fix them, and then keep going with the new code.

I agree that Edit-&-Continue was a nice debugging feature but I disagree that it was the main draw to VB. The main attraction to VB really was the easy-to-use graphical widgets which was exposed to the programmer via an abstraction called "windows forms".

If one takes a look at a 1990s era Win32 "hello world" app[0] written in raw C Language, it has tons of complicated boilerplate. Lots of complexity with CreateWindow(param1, param2, etc, param11), GetMessage() loop, WndProc() callback. The Win32 HelloWorld example doesn't even handle a click event. One would have to add a switch case statement for the "WM_LBUTTONDOWN" message.

The VB "winforms" IDE eliminated all that and let a programmer "drag & drop" UI elements onto a "form" and put code on a "click" event. It was a clever simplification of raw Win32 API calls for business-oriented user interfaces. In the ~1991 era, the winforms abstraction empowered a bunch of 1980s 4GL programmers (e.g. dBase, Clipper, Foxpro) and business language programmers (e.g. COBOL) to immediately be productive writing apps for Windows -- without the steep learning curve of C/C++ and the raw Win32 API.

A lot of VB programmers I knew were not even aware of Edit&Continue but they nevertheless were able to drag a command button from the UI toolbox and add code to the button_click() event.

Another VB feature that I believe was more utilized than Edit&Continue was the VBX components ecosystem. Lots of programmers would buy add-on VBX widgets from various companies to enhance the UI such as calendar date picker, datagrids, charts & graphs, etc.

[0] http://www.prowaretech.com/Computer/Windows/WinApiHello

> I agree that Edit-&-Continue was a nice debugging feature but I disagree that it was the main draw to VB. The main attraction to VB really was the easy-to-use graphical widgets which was exposed to the programmer via an abstraction called "windows forms".

I'd disagree with both of you! VB's draw wasn't the edit-and-continue nor the drag-and-drop WYSIWYG GUI builder, it was all of the above plus more in a single self-contained package. VB was popular because you could do a lot of things using it, even if the depth provided by it was rather shallow (most people are fine with that). And if that wasn't enough, just grab some ActiveX control and it'll do what you want. VB was also built on the "common ground" of Windows tech, COM, essentially being the scripting language glue for Windows (yes Windows had a real scripting language - two in fact - but especially in the 90s, Windows=GUIs so it makes sense that The scripting language for Windows to be a one dedicated to GUIs).

It could have been better though, for example databases feel bolted-on instead of an inherent part of it, but i suppose if they added native database support (to the same level as native GUI support, not just talking to databases) it would cannibalize Access sales.

After a stint with VB 3.0, I focused into Delphi and C++ Builder as they were more in sync with my background and what I wanted from a programming language development environment.

It was only with VB 6.0 that VB finally got competitive regarding native code generation and ability to write OCX controls in VB itself.

Still, I do find VB.NET quite good even without the QuickBasic compatibility features, and the fact that I still see people move from VBA into VB.NET proves it is still approachable as on the old days.

For me it was the uncomplicated way of popping up a message box. Something which you cannot in most other stacks. Alert/console.log is also what makes JavaScript so accessible.

[...]VBX components ecosystem. Lots of programmers would buy add-on VBX widgets from various companies to enhance the UI such as calendar date picker, datagrids, charts & graphs, etc

There was a lot of optimism at the time about how much of the more mundane software development would become the assembly pre-defined components and there'd be marketplaces of components. That's mostly not how things worked out but they did, for a while, for VBX. Seems like a bigger, more startling achievement than 'Edit & Continue' to me as well.

How did that vision not work out? Seems pretty on the money to me - only difference between then and now is that we ship components as JARs or node_modules etc, and the components are mostly free and open source vs proprietary products.

The basic vision that mundane programming would become the assembly of pre-built components has worked out astonishingly well though, to the extent that now many developers actually get upset if they're asked to write a program in an interview that isn't an assembly of pre-built components. They go on HN or reddit and post diatribes about how they should be asked to do "real" work, instead of coding up things they can just grab a component off github to do.

Arbitrary chunks of source or object code are not 'components' in a usefully meaningful way. You're not firing up Reactant IDE and making things out of Enterprise Java Beans and ACME WebWidgets.

I remember getting catalogs in the mail with a huge list of VBX controls and all the amazing things it could add to your programs. It was a pretty amazing time.

You can still get them





It is just UNIX world is still busy replicating text terminals and daemons.

>It is just UNIX world is still busy replicating text terminals and daemons.

We got TCL/Tk in the 90's and right now I am doing some TCL code with the help of expect and some TK UI. Those replicating terminal and daemons forever and ever are just CADT Linux users who are trying to reimplement Unix poorly.

For everything else, TCL C bindings rock. Also, tcllib is pretty nice feature wise, too. For everyting else, as a RAD, TCL + SQLite, which is superior to Access on the DB field.

BTW, SQLite was born from a TCL developer, in TCL. Guess what's still used today, and which language, don't. Not even Access with VBA can match SQLite3's implementation.

Simplicity won in the end. The baroque interface of MS IDE's always gave a me a sense of innecesary bloat.

My first startup was a Tcl shop, doing an AOLServer clone.

It wasn't a match for anything related to GUI RAD tools.

In fact it teached me to never use a programming language without either JIT or AOT as part of their default toolchain.

And the Tk L&F back in 2000 would make any UI/UX just cry.

It still works that way for those of us on Windows development.

For example, https://www.devexpress.com/

Yes, the ability to drag-and-drop widgets on to a form (essentailly a window or screen in your app) to contsruct a GUI was the killer feature of Visual Basic.

But Visual Basic couldn't create self-contained executables. You needed to distribute an accompanying runtime dll. This was often a source of frustration for Visual Basic programmers when distributing their programmes: users didn't sometimes have the right runtime dll installed.

In contrast, Delphi, which also had a drag-and-drop interface builder was more powerful, faster and created self-contained executables with no external dependencies. My impression (which may be wrong) was that there wasn't much cross-over between VB and Delphi users. I think many VB programmers found Delphi's Object Pascal too complicated compared to the simplicity of the VB language so there was never an exodus of VB users to Delphi.

It could with version 6.

Also the runtime.dll is not any different from having the right MSVCRT.dll around, all programming languages need some kind of runtime, even if a very basic one.

The difference is that in MSVC (as well as in most other compiled languages) you can statically link to the runtime. In many cases having a single self-contained EXE file is very convenient.

True, but hardly any different when doing xcopy deployments.

AFAIK OCXs need an installer, though you could stay within the limits of what is provided by the VB6 runtime that is already part of Windows. But it might be a better idea to not do that in the long term as Windows dropping VB6 support is more likely than dropping all Win32 support so at some point you may need to have a proper installer.

Regardless, i'm was referring to single executable cases where you just download an EXE file and run it without the need for some sort of decompressing an archive to a temporary folder (especially considering that most people nowadays use 7zip which has broken behavior when it comes to running executables from an archive: unlike WinRAR it only extracts the EXE file, not any other files the archive may have and the application may need).

OCX and the VB6 Runtime are not the same thing.

Many Delphi VCL implementations are also COM objects, and even COM can be loaded via xcopy deployments, they don't need necessarily the register, it is called Side-by-Side Assemblies in modern Windows dev speak.

For very simple applications you can get with just the VB6 VM DLL but anything practical needs a bunch of OCX controls - even if you stick with the stock stuff you get with Visual Studio 6. AFAIK those OCX controls come with Windows for some years now so you can give someone a VB6 .exe and it'll work, but if you need anything outside of that you need to register them (unless i am wrong and VB6 can freeform OCX files directly but i'm almost certain it can only use stuff registered with the system).

Delphi VCL can use COM objects but on Delphi this is an exception rather than the norm, components on Delphi are (or can be) statically linked with the application. For VB6 the norm is using OCX controls... actually, i do not think it is possible to do anything else (outside of manually calling DLL functions of course, but even that is relying on a separate DLL).

Well, unless you counted the core Windows DLLS like USER32 as a runtime, Delphi programs didn't. The entire VCL was statically linked each time.

Shipping a dll alonside the .exe in xcopy deployments is hardly different from static linking, given lookup rules.

Yeah, and after Windows API you'd probably try MFC. It was easier than WinAPI for nicer looking apps, but was hell compared to the nicer WinForms code/layout that VB got.

VB only really died when C# WinForms came along.

That’s true if you didn’t use Visual C++ and its forms. They were click to edit and worked on a lookup table that was maintained by the wizard. But when things go wrong they are hard to debug.

Visual C++ and MFC were much better than raw Win32 API programming in this regard but they were still worlds more effort than VB. Honestly I still don't know of a development environment to this day which gives the same level of "just git 'er done" for hacking up small disposable applications.

Delphi or C++ Builder if you wanted to stay in C/C++ world. Nowadays there is also Lazarus.

Though none of them are as seamless as VB but then again, they are more powerful as languages, so you get some and lose some.

Delphi or its FOSS clone Lazarus.

> The main attraction to VB really was the easy-to-use graphical widgets which was exposed to the programmer via an abstraction called "windows forms".

This could be but it is worth noting that this style of development wasn't unique to VB. Turbo Pascal and later Delphi pioneered this style of development in the same era as VB, each with their own inventions in an arms race towards easy-to-use.

Yes, ActiveX was the sauce that made VB quick and even fun to use! I tell people it was the Python of its day.

ActiveX and OCX was a generalization of VBX using OLE, a document embedding standard built on top of object-oriented RPC (COM), but with simplified typing (Variant rather than the full gamut of RPC native types).

The concept of drag and drop components, and the PME (Property / Method / Event) programming paradigm is what made VB a success. VBX and OCX were implementation technologies and not really the secret sauce, except to the degree that they made the system extensible so it wouldn't be forever a toy with a fixed set of building blocks.

Also an idea that was explored in other 4GL tools of the day.

Indeed, as you're probably aware as we've riffed together on this before, I worked on the Delphi compiler for a number of years.

Yes, just pointing out that VB and Delphi weren't alone in this, just the most accessible ones to the general public.

Yet another interesting benefit of/interesting feature of VB is that it was the Python of its day in terms of the "there's a library to do that" factor. Not only was it easy to pick up, but (while not built-in like Python) it had access to thousands and thousands of easy to install and easy to use ActiveX libraries. There was almost always an ActiveX Library to suit your needs, ready to literally drop into the WYSIWYG editor and use.

That combined with the easy to use WYSIWYG editor and the edit and continue functionality were, to me, what made it such an amazingly useful language for creating quick utilities or small programs. It was truly a "Rapid Application Development" language.

I also saw some nightmares in my days, though I don't blame VB as much as the people who created the app. The most notable one was a document management system that I'd been asked to port from VB3 to VB6 (so that it could run on win32 among other reasons) and to turn the system from a batch system for document processing facilities into a desktop DMS for home use. I will never forget when I opened up the project and there were 60 some-odd "forms" in it, and when I opened any one of them up not a single one defined a variable. They all - every last one - was defined as a global variable in a single globals.bas file. There were thousands of global variables. Every single one in the entire application declared there, and edited at will in any of the myriad forms wherever they fancied. My first task became "untangle the global variable mess."

I have done a couple of projects during the last years at a few life sciences companies part of Fortune 500.

Their researchers aren't using R, Python or even eyeing on Julia.

They use Excel with VB macros and those skillful enough, get IT to install them Visual Studio Professional and carry on using VB.NET.

Also remember that VB.NET, contrary to F#, enjoys equal footing with C# across all .NET deployment scenarios and Visual Studio graphical tooling.

As I recall, Kernighan and Ritchie in The C Programming Language admitted that C had "idiosyncratic syntax" (with lots of results on Google and I'll save time by not searching the book itself). Then C++ used that, and C# borrowed some of it.

The .NET version of Visual Basic, VB.NET, seems to be about as good as C# for getting at the .NET Framework and taking advantage of the "common language runtime" (CLR) but with more traditional syntax (Kemeny, Kurtz Basic, Algol, Fortran, Pascal, PL/I, etc.) easier to teach, learn, read, write, and debug. So, shock, I wrote the code for my startup in VB.NET! But, IIRC, there's a translator to convert at least one way between C# and VB.NET!

I've used this a number of times, it has its limitations and faults, but it's usually pretty good for sharing C# code example to a vb. Net dev http://converter.telerik.com/

Many thanks! Gee, it claims to work both ways,

C# <--> VB

> Also remember that VB.NET, contrary to F#, enjoys equal footing with C# across all .NET deployment scenarios and Visual Studio graphical tooling.

enjoyed. Microsoft pretty much annonced it was a legacy technology and that they will not maintain parity going forward. Which is the only reason I switched to C#.

Enjoys. Try to do in F# many of the workflows VB.NET is capable of.

gp (cm2187) used past tense "enjoyed" for VB.Net because Microsoft officially stated back in 2017 that the newer platforms will be lead with C#:

Excerpt from https://devblogs.microsoft.com/vbteam/digging-deeper-into-th... : "But with regard to the cloud and mobile, development beyond Visual Studio on Windows and for non-Windows platforms, and bleeding edge technologies we are leading with C#."

Microsoft made it very clear that VB.Net will not have equal footing with C# across all .NET deployment scenarios. The VB.Net being deliberately left behind for some future scenarios is a separate issue from your comparison with F#.

Just like VB did not had and equal footing with C (VBX) and C++ (OCX), yet it did not bothered many non programmers to pick it up.

This is the audience that Microsoft cares about.

The kind of employees that outgrows their Office VBA macros, did not had any kind of CS background, and just wants to do some applications without having to create a custom IT order procurement for it, writing some code and dragging stuff out of the toolbox.

Except that .NET Core 3.0 will be the first core version with full support for the VB runtime lib

Most enterprises still don't care for .NET Core due to lack of support for WCF, EF6 (including VS UI tooling) and third party libraries from component vendors.

In fact we just moved into .NET 4.7.1 this year for our greenfield applications.

And the way the whole WCF vs gRPC has been dealt with, might mean some will even wait longer than .NET 5, so not a big deal.

>Most enterprises still don't care for .NET Core due to lack of support for WCF, EF6 (including VS UI tooling)

Yes, also the UI technologies of WPF and Winforms are not getting ported to Linux: https://github.com/dotnet/wpf/issues/607#issuecomment-487360...

It seems like the people embracing .NET Core are using it for writing backend services (scenarios where it competes with Golang usage).

Given Go's features I doubt many .NET devs would feel like using it, instead of dropping into alternative languages with C#, VB.NET, F#, C++/CLI feature level.

Where I am, when .NET is not possible, the alternatives are either the JVM languages or C++, no one ever thinks of Go.

Well the rest won’t have a choice. .Net full will become stale and legacy. I doubt enterprises will write new stuff on .Net full.

> .Net full will become stale and legacy. I doubt enterprises will write new stuff on .Net full.

Sorry for the misunderstanding. I agree that Windows programmers will eventually migrate to .NET Core v5+. My comment was meant to be limited to the Linux scenario. I should have written "Linux" again in the 2nd sentence so that was more obvious:

- "It seems like the people embracing .NET Core on Linux are using it for writing backend services (scenarios where it competes with Golang usage)."

Microsoft has no plans to include the desktop UI technology of WPF & Winforms on Linux... even in the future unified .NET Core 5+ that deprecates classic .NET Full. Because the Linux side doesn't include all the Windows tech, it doesn't quite have the same 1st class status as Windows. But that limitation does not prevent C# programmers that want to use Linux from using it to write server-side network services (because no GUI required) where others might use Golang.

For most enterprises stale=stable and stable=good, so i'm certain as long as it works, they'll keep using it. Also see the topic of this submission (yes, some still use VB6).

Run existing code I am sure. But write new code for it I don't think so. Not the least because even in large organisations, devs like to use the latest and greatest.

> Instead, VB became famous for a legendary feature called edit-and-continue, which allowed developers to run their programs, find problems, fix them, and then keep going with the new code. This was a sharp difference from almost every other programming environment known to humanity, which force developers to recompile their work and start over after every change.

Umm, cough Lisp environments from the 1960s, Lispms, Smalltalk etc...

I wouldn’t expect a VB programmer to really know anything about the higher forms of computing. Maybe I’m being a little harsh though.

At great risk to my HN karma I’m gonna share from the heart.

VB was the pinnacle of software development.

Nothing about it was perfect, except it was easy for anyone to build anything. I saw everything from kids making shareware to phd’s building multi-hundred-million dollar ERP systems.

A lot of nice-enough and useful software was built in VB that remained useful and editable over long lifetimes.

I pine for something like that in the mobile or web worlds. Everything else I’ve tried is an absolute mess in comparison.

> I pine for something like that in the mobile or web worlds

A recentish episode of a python podcast (https://www.pythonpodcast.com/anvil-web-application-developm...) had an interview with one of the founders of Anvil (https://anvil.works/). He claimed VB & Delphi as significant inspirations for their web app platform (using python for front & back ends, with a drag/drop GUI builder).

Might be worth a look, if only for curiosity's sake.

> except it was easy for anyone to build anything

I'm right with you. I taught so many people at places I've worked basic automation with VBA for Excel. People basically used Excel as a database so this was a massive timesaver for them. Being able to record yourself doing something and seeing the generated code was the modern-day software development equivalent of "teaching someone how to fish".

> I pine for something like that in the mobile or web worlds

Hypercard, but for the year 2019.

HyperCard. And if you like VB, check out Xojo. https://xojo.com

Anyone wanting to relive the glory of VB but on a modern system can use Gambas:


Vb6 is still out there being developed with, on Windows 10. Active community at vbforums

Open sourcing the original VB6 would be an incredible move by Microsoft.

Something tells me that this could be a quite successful community project. Possibly for building cross platform apps for phones.

I like how we are at least talking again about Visual Basic recently - maybe it inspires the industry to build a super easy to learn language/environment for UI and data apps again.

VB had an extremely low barrier of entry, it was truly empowering for many non techies.

They should open-source Q(uick)Basic and with it GORILLAS.BAS, MONEY.BAS, NIBBLES.BAS, and DONKEY.BAS. State-of-the-art programming power for your XT, 286, or higher PC compatible, free and open source.

Check QB64. It runs even that Stephen King novel based text adventure.

Yes, please! Would love to develop quick personal use apps using a modernized vb6.

I'm a big .Net & C# programmer. But feel like no tool is as efficient for quick GUI apps as VB6 was.

Or at least VB 1.0 for DOS

I programmed VB from the first version up to vb.net

to me it had these big draws 1) REALLY good documentation, this was the peak of MSDN.

2) object orientation for ui component reuse just made so much more sense than message queues in c/c++

3) out of the box ui that looked like a windows app. easy to make something that looked like users expectation of a windows app

4) speed of design and iteration. you could build new ui really quickly, and iterate with the edit/continue feature

5) it was cheap compared to other products, and continued to evolve with new versions on a regular basis. it had momentum

This seems relevant;

RAD Basic, a new IDE for Visual Basic 6.


Personally, I’ve always thought there was a niche for a VB6 runtime implemented on .NET that could intercept method calls an enable a system to be slowly rewritten in C#; issues with COM interop esp. visual components might be a challenge.

A great idea that I hope they can make happen. Sounds like quite an undertaking though.

The people still developing in vb6 are a pretty relaxed lot these days, no one worries any more that the apps won't run in windows, they will, forever. It's still possible to get new activex components for skinning or whatever and if all else fails there's always interops with .net. Meanwhile the vb6 ide is lightning quick, designed as it was back in win 95 days, and with a couple of add ons can be very up to date.

The first version of the software that made our company launch back in the 90’s was made with Delphi with a browser like component that we discovered, after making successful demos to French historic telco leading to more visible demos, was a 30 days demo and that we couldn’t compile anymore without a message box stating that.

So due to emergency we rewrote all in a week in VB6 (or maybe it was 4 or 5 I don’t really remember) with the Internet Explorer browser object.

And thanks to the simplicity of Visual Basic it was possible to do so !

And then the demos lead to sales and we are still here 22 years later

That's kind of weird. I recall Delphi could embed IE directly, maybe not in the version you used?

Why was it easier to rewrite all your code than just buy a license to the component though?

I think it was Borland Delphi 3 or 4, and there where a browser object, perhaps based on IE, but demo.

It was in 1997 and it was not possible to order via Internet so the times the letter with the licence number arrive from US to France and we would have missed the important demo.

Plus, to be completely honest, we were totally broke !

I got started with graphical programming with RapidQ, a sort-of cross between VB and Delphi (and the predecessor to RealBasic). I had a 486/Pentium I machine around that time, with not enough hard disk space to install VB (and too young to afford upgrades or VB itself).

It was not as powerful as VB, but being able to display graphical widgets in as few lines of code as VB got me hooked. Funnily enough RapidQ also supported writing CGI apps, which was my gateway into server-side programming.

I’m just going to put my two cents into this outpouring of love for VB. Of all the languages that were available, this one was one of the worst. For some reason they paired it with a highly useful RAD environment. (Probably because of billg’s historical love for Basic).

Error handling was dismal. It was painfully obvious very few VB developers understood it and most applications would crash on failed IO. I’m talking production applications sold to third parties with 10+ years in the field. Syntax was incredibly clumsy. String manipulation was painful. It had classes but no inheritance. Small programs required complicated installers because OLE was the basis of all libraries. Most components came from for profit ISVs, and community sharing was actually rare. Many components had confusing license terms enforced by software that was as buggy as VB code often was.

You are describing the 90s, not VB specifically.

I still have two products in production that I am supporting, both written in Office Basic on Access - It's been over 10 years now.

And my search through FOSS has been for a similar environment, preferably supporting Python 3, now that I reflect upon it. Kind of a hold-over from working in Borland's ObjectVision back in the day, or FoxPro before that (the jump to Visual FoxPro caused me to stumble), or Paradox before that (as well as Ashton-Tate's DB2-3 and variants).

And yes, I am a hack who still manages to comment my code, at least at first. One of those "bad examples" I imagine c-corp professional programmers cite in TedX talks. But I do get paid :)

I am very thankful for MS to abandon VB Classic and suddenly destroy years of my work on the merit of an egoistical businesses decision. After that I valued the freedom of software as no 1 priority, rebooted and never looked back.

Honestly there were many ugly things in VB classic that the destruction of backward compatibility fixed. Like the useless and inconsistent "set" keyword. Parameters being byref instead of byval by default. Collections being inconsistently 0 based or 1 based. Parenthesis for methods called as function but not as sub.

The tool to port to .Net wasn't as bad as the article claims. I ported a pretty big messy WinForms application which was somebody else's years of work and today it's even more successful than ever. It took maybe a week or two to work through the many 100s of errors, but none were that difficult. I had already learned not to rely on proprietary binary libraries that were popular back then because you knew they wouldn't be supported in the future when you'd need them.

I'm very grateful for VB.Net. It's much cleaner and safer than VB6. My biggest wish now is for a way to port to C# piecemeal instead of doing the whole project in one shot.

I never tried to porting tool. Because porting to another proprietary platform did not make any sense to me after I experienced first hand what non-freedom means. I learned my lesson the hard way.

VB was the greatest thing I'd seen (before I saw SmallTalk or NeXTSTEP). I preferred the 1.0 'edit on your desktop' over the later nested window UX.

I had recently taken OS/2 Presentation Manager courses at Microsoft and started to tinker with making an OS/2 version. The toy turned into a client/server product for the company that produced code generator and analysis tools for enterprise. It eventually because a cross-platform tool running on OS/2 or Win NT and targeting OS/2 and Win32/Win16. A separate X11 editor targeted several Unixes using the same document format and generator templates.

Good times.

> I preferred the 1.0 'edit on your desktop' over the later nested window UX.

Later versions including 6 could be switched back to SDI mode. I never liked it though, too confusing if you had stuff open in the background.

I will go ahead and say that it still is a better tool in various contexts than what a lot of programmers use now.

I'm saying that as someone who did quite a lot of VB6 programming many, many years ago but now generally creates UIs with some HTML or Vue or whatever inside of vim.

I think a lot more of what we do is related to fashion as much as any technical reason.

It's definitely not cool to program in VB6. People will assume you are not a programmer or just write awful code.

But that happens with any tool that really significantly makes programming easier, if it touches on the core paradigm of colorful cryptic text.

IMHO VB was not respected because you could not write your own components/widgets in VB, you had to resort to C++. Delphi components were all written in Delphi. It was clear VB was a second-class citizen.

Due to this factor, and others, VB had the typical Microsoft learning curve: extremely easy to do simple things, and then exponentially difficult to do big things. It was the same in MS-Access that many people thought it was the future of client/server apps, ERP apps, etc.

This limitation was lifted in VB6 or so (dumped VB for Delphi when left win16 for win32 so I am not sure).

this started to get interesting with VB4. Suddenly you could create COM servers which especially back then was really difficult to do in C++. VB6 was a really well rounded tool.

You couldn't compile it into an app. So you had to distribute the source code. This meant it was a dead-end for anything serious.

VB6? You could definitely compile VB6 code into an application and distribute it without the source code!

It's worth mentioning that VB6 became a very potent tool for script kiddies to wreak havoc all over the place. This was ~14 years ago and there was no good decompiler back then. VB6 compiled to machine code (.exe) so trying to trace exploits against software was within the ASM itself. Aside from that it was a solid workhorse language that was breezy compared to VS2005 and MFC programs. I still have nightmares to this day that start out with me writing an include to stdafx.h because something went wrong...

I learned BASIC in the late eighties. When VB appeared it was close, but not really BASIC. When VB.NET and Visual Basic for Applications (Excel/Access/etc version of VB) forked in all directions I had to write some VBA, but I ran away as soon as possible: from one language it forked to too many dialects that were too incompatible to matter. Divide and conquer transformed in divide and destroy. Now I use C# whenever VB would be a choice, I am not Microsoft's puppet to put up with the VB mess.

VBA is exactly the same language as VB 6. VBScript, which was used for ASP, was quite different though.

I learned to "seriously" program in VB. First in 6, then every version up through 2018. It was easy to get into because the hard parts (gui programming) were not done with code—or at least, not done with code you ever needed to look at. The error messages helped young me worry about logic and control flow instead of memory management. I got to learn how to build software that was good to _use_, practice algorithms with the insanely good debugger, and build actual executables that I could share.

This led me to JS and PHP (asp.net drove me away from .NET for web) which ultimately led to my current career.

Granted, there was a lot to learn after I left VB, but for a self-directed ten year old, it was the perfect tool. Whenever I see someone trying to teach a youngster C or C++ instead of VB, JS, or Python (or Ruby) I cringe because there's so much there that they don't seriously need to learn, especially if they're just interested in dipping their toes in software.

It is alive and kicking: deep learning with TensorFlow on VB.NET: https://github.com/losttech/Gradient-Samples/blob/master/VB/...

VB6 got me started on programming, in a really tangible way I could really understand - when I was only about ten years old.

I was lucky enough to be playing Sonic 3 and Knuckles on my Sega Genesis enough that I eventually asked my youth pastor, whom I knew was in IT, 'how do I make a game like this?'

He responded 'I dunno' and handed me a copy of Visual Studio 6 on a CD, and I grabbed a bunch of books from the library, and foolishly (but also correctly) tried to start with C/C++. The frustration of simply getting graphics to appear on the screen was enough to drive me away from it. While I understood the logic, what I really needed was a basic-level 2D graphics API like Cocos2D, likely.

Visual Basic was a very nice balance between code and it's visual link - I get the same feeling in a great way with Xcode and Interface Builder today. I owe it my career. :)

Same. I wasn't smart enough to make sense of what was going on but the ability to connect a GUI to actions and event was really neat. I still remember marveling at the fact I made a standalone exe---that I could share with the whole world---that closed when you clicked the only button on it.

Web, particularly Dreamweaver and Frontpage served as the entry point for me.

VBA (also VB6) is what got me started. It is hard to underestimate the power of placing a scripting language at the fingertips of Office users, arguingly a massive user base of people who need to get stuff done immediately. I just wish Microsoft would have a more modern language integrated to Office.

They were actually very close to doing it. They created VSTA, which was a mini Visual Studio integrated in Office, allowing to integrate any .net code in Office just in the same way as VBA. I think one of the components of Office 2007 even shipped with it. Then they killed it.

Wasn't VB pretty much a clone of Xcode's granddaddy, the IDE that came with NeXT step? Even the idea behind ActiveX was copied from there AFAIK. No wonder Xcode reminds you of VB then.

That's a really cool note! I actually own a NextCube...I hadn't made that link, especially when I was younger and actually had just gotten started.

VB and Delphi as well as other 'RAD' software from the 90's still has its fans, and some of these systems power very large installations even today. You wouldn't know about it because all you see is the outside but behind the scenes you'd be surprised what is running.

I think VB dead just because RAD is dead just like the article states: Careless newbies, bored company workers, and summer students trampled in, solving challenges that would have been much more difficult on any other platform, and spraying spaghetti code everywhere. In other words, because VB was easy enough to use even if you weren’t a trained coder, it was used by plenty of people who weren’t trained coders. And VB did nothing to encourage them to correct their bad habits.

The article present the fact that VB is accessible to non professional programers as "a problem". I could not disagree more. The future isn't to coding being a specialized field, but to everyone having basic coding knowledges. VB in that respect was extremely powerful, and its integration with Office a genious idea.

The problem rather is that VB6 is a 1990s language and that not only Microsoft has never made a more modern scripting language available in Office (and I mean pre-installed on everyone's machine, with an integrated IDE, etc. I know there are all sorts of hacks and addins) but if anything they seem to consider scripting nothing more than a security risk and are doing anything they can to lock office down and make it hard for people to script it.

I loved VB a lot and am trying to build a modern day version of it which can build Webapp and Microservice based apps at yazz.com

(Full disclosure: I work at Red Hat but my views do not necessarily reflect my employers views)

Why? Is the language really what you want or is it the tools surrounding it?

I want the all in one development system for quick prototypes that can be made by non technical people , that’s why

Right, but why use visual basic as the actual language?

I don't. I use Javascript instead of basic. I just use the concept of components and events and forms from Visual basic

Am I dating myself if i say i started with GW-BASIC... I remember how it was a big deal to code a menu by highlighting text based on the arrow keys... and then based on mouse movement

If it makes you feel any younger I started with TRS-80 Level 2 BASIC years before GW-BASIC existed.

We have probably 100,000 lines of VB code at work. Manufacturing environment of course. Some of the worst design patterns you will see. None of it is “modern” Visual Basic. It’s stuff people learned around 1995/96 and stopped there.

Objects were never embraced. Libraries are shunned. The project started to encompass every part of the company. It’s truly a picture of “persistence over skill”.

The worst part is that a couple years ago, the VB programmers started writing PHP code that is just as bad.

Also in manufacturing similar story.

Most of the VB I've seen is front end code to MS Access '97 running underneath. We have been slowly chipping away at it and replacing various components but I wouldn't be surprised if at least some of it still around in another 10 years.

All sorts of legacy stuff here Visual Fox Pro - which I think is VB precursor as well. Lots of old 90's Commercial Unix stuff (RS/6000 era - Old C++ code - pre STL etc). Older than that we have a heap of Fortran and mainframe era stuff written in PL/1 language. Code and software here has very long lifespan and not always easy to replace it.

Welcome to the 2000s!

As a kid I dabbled with BASIC on an MSX, but the first real desktop app I made was with VB on Windows 98 if memory doesn't fail me. It was a catalog of Starcraft units.

My first "real" job was fixing a VB6 app used in a manufacturing setting that consisted of one 3,000 line function, and one 2,000 line function.

And this was a critical system. It certified the units we made were configured correctly-- which were then installed in semiconductor fabs.

Also, VB6 is responsible for my favorite bug ever-- an if statement: no more than "if count=0 then" that opened a dialog box, somehow. It was reproducible as well.

Anybody think there's an opportunity to bring a VB-like experience to web programming? Could widespread availability of WebAssembly help in that regard?

I'm still using VB .NET for hobby projects today: My home automation system runs on it. Sometimes I have to convert sample code or examples when I'm having issues to and from C#, but I can write VB a lot faster than other languages, because as the first one I learned, it still comes second nature to me.

I was shocked how fast it actually was. In the VB6 days, it was only slightly slower than the lovingly crafted ATL C++ code for some of the COM component development. It was crazy - rough out a VB component in a few hours, then spend a better bit of the week making it 'real'.

VB was a money maker, flat out. You could deliver great solutions to problems while standing on your head. And the fact that it extended into Office S VBA made it even better.

We wrote plenty of code in VC++, but I have to admit that VB had massively better ROI.

Started programming with BASIC on a graphing calculator and it was easy to move on to C and Java from there. The use of english words over symbols and a lack of boiler plate and "concept clutter" is beginner friendly.

Btw, VB6 still kinda lives on in form of VBA macros on Microsoft Office products

I started off doing VB6, both at a personal level, then a few years later, commercially.

It wasn't bad. If you wanted a quick app with a few forms and a backend DB, then this was a decent choice.

I quite like it.

I keep my favorite VBA jokes in github library called NVBC, the "NecroVisualBasiCon".

With the Regex and Scripting runtim COM objects, tools like a string interpolator are within reach.

I wrote my first program in QBasic. I played Gorillas (like, a lot). If they decide to kill VB, I'm gonna cry.


Still in vb.net! Async/await before its time!

I’m so glad people are finally talking about VB! For a certain subset of programming, VB is very effective.

I’ve been working on “VB, but hosted in the cloud, and built specifically for developers”: https://tryretool.com. We’re still early, so I'd appreciate any feedback :). To use Retool, you’re ideally an engineer who knows both SQL and JS. We connect to most databases, as well as any arbitrary REST / GraphQL APIs.

(Our docs are at https://docs.tryretool.com.)

Edit: removed a part I didn’t fully agree with, but paraphrased.

"As the essay notes though, I think VB possibly made programming _too_ easy, which led to poorly built and poorly maintained apps."

This feels a little elitist to me. VB (and Access) allowed a lot of people to develop mission critical things rapidly they would never have been able to afford before.

When I look at the complex monstrosities we develop these days I don't know if they are in any way more maintainable or well-built. Yes the people who created them know them in and out but give them a few years to become legacy and outdated and they will become a maintenance nightmare.

> which led to poorly built and poorly maintained apps.

Looking around, I don't think these needed any help from VB to exist.

This looks pretty good. Is pricing per developer or viewing users too?

What's your front end stack?

The story is behind the paywall but I think from my experience that the VB had been an inferior version of smalltalk.

uBlock with Firefox gives me no paywalls on medium.

Or block javascript in any browser.

I'm using uBlock on Firefox and still getting the paywall.

stopped reading after the third time the author dissed javascript

A practical and popular corporate-driven language. Just like Go and Rust.

Then the company decides to bend it out of shape or slow down the development. People cannot do anything about it because it's corporate-driven.

And yet, people have not learnt the lesson.

Well, yeah, kinda, sort of... difference being that if Visual Basic was open source, it'd probably still be around, just not under Microsoft.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact