Hacker News new | ask | show | jobs
by RebeccaTheDev 410 days ago
I miss VB6 so much.

For rapidly prototyping an idea, I have yet to find anything that was as good as VB6. Drag a button, write code. Want to change things about the button? Use properties, that live update the GUI without recompiling. It was so simple that a reasonably intelligent person could grasp it in an afternoon, but in the hands of a capable developer could do some very impressive things.

It was also a fun game to hunt for VBX/OCX controls that you could use in things that were downloaded or came on random disks or CDs.

I really feel like VB6 was the peak of that development model and we've been moving away from it since. And I get some of the reasons why (just look at the mess that comes from trying to do anything with Xcode storyboards and version control.) But for just rapidly trying out an idea, I have yet to find anything anywhere that was as good as VB6 was.

9 comments

I feel the same about MS Access databases, for databases obviously. Provided you kept within its limitations, and actually used relational models, it was really quick at setting up a database program. I never used VB6 but the workflow sounds similar.
It was almost exactly the same expect in VB you had use some esoteric code to access databases — and they kept changing what was the “proper” way to do it. (I think by the time I quit VB it was ADO?)
It was indeed ADO (ActiveX Data Objects) - Connection, Command, Recordset etc - and this is also the API used by Access.

Microsoft wouldn't be Microsoft without having confusing naming for its APIs, so the one before ADO was called DAO (Data Access Objects).

There was also some very confusing layering in play. ADO didn't work with the database directly - it was a layer on top of either ODBC or OLE DB, depending on the database.

I don't recall it being particularly esoteric. There were libraries to call various databases. In my first job I converted a vb6 application from Foxpro to SQL server. I was just getting into Ruby on Rails at the time and wrote a COM library the the data layer that was somewhat like activerecord, and ended up using it from ruby scripts. Fun times. Just looked it up and the software still seems to be being sold 20 years later.
I agree! I still sometimes use LibreOffice Base for quick prototyping [0] or Microsoft Access if I am on Windows. It uses HSQLDB by default but you can connect to several external JDBC, ODBC and ADO compatible databases, though I often use DBeaver for that purpose. [1]

[0] https://en.wikipedia.org/wiki/LibreOffice_Base

[1] https://dbeaver.io/

I feel much the same about NeXT's Interface Builder.

It wasn't perfect, but it seems that we threw out $100 of capability to "fix" 10 cents worth of flaws.

Instead of fixing the flaws.

https://www.diyaudio.com/community/threads/murphy-law-applie...

I liked Flash for these reasons too, the way Macromedia fused design, animation and programming was amazing.
Ever looked at GNUstep's GORM?

https://www.gnustep.org/experience/Gorm.html

I'd be interested in an assessment.

Good point!

I haven't really been paying attention to the GUI or dev-tools side of GNUstep, it was just duplicating what I have on macOS and I was more interested in server applications on other platforms.

An obvious mistake, in retrospect.

With Apple destroying both the UI and the development tools, the situation has fundamentally changed and that assessment is no longer valid.

I need to take a closer look!

I totally agree with this. When I worked at a University (mumbles) years ago I wrote a build system for rebuilding the OS and apps on student lab PC's and I used VB6 as the front end. It seemed in those days we could do anything, and nobody told us we couldnt do it.

I also made a simple two button menu app for use on repurposed 386's that we were using as thin client pc's. Years later I went back to see they had been replaced with tiny HP thin client devices but my menu was still being used!

Have you checked out Xojo? It is a VB6-like language with a similar development UI. There are desktop and web versions.

https://documentation.xojo.com/getting_started/tutorials/des...

How do they compare to Gambas https://gambaswiki.org/website/en/main.html ?
I don't know much about Gambas but it seems it is Linux only whereas Xojo is cross platform.
.NET with Windows Forms - either C# or VB.NET, depending on your taste - is very similar in experience, and is still a fully supported stack today even in the most recent .NET versions (so you get e.g. high-DPI support, dark mode etc) with new features added regularly: https://learn.microsoft.com/en-us/dotnet/desktop/winforms/wh...
Except if you need to touch COM.

The RCW/CCW approach is much more low level, to the point there are whole books on how to use COM in .NET, whereas it was just part of how to program in VB (pre-.NET).

It also went through two reboots.

So now you have .NET COM support for .NET Framework, COM/WinRT support for UWP, modern .NET support for COM.

Every variation with its own APIs, only the classical .NET Framework approach has Visual Studio "import COM component" support, and none of them as easy as VB 6 was in the end.

Quite bad as developer experience, given the COM focus since Windows Vista.

Thanks for sharing! I'm glad Microsoft is still providing active development for WinForms and on recent .NET Core versions and not just .NET Framework, although the later seems to still be supported indefinitely (for now?). [0]

[0] https://learn.microsoft.com/en-us/lifecycle/products/microso...

Oldschool .NET Framework is a Windows component now, so as far as support goes, it is treated the same as any other OS component - meaning that it's supported for as long as the corresponding OS is.

How long that will be remains to be seen. But Windows still ships the VB6 runtime (MSVBVM60.DLL) in the box today, 27 years since it was first released: https://learn.microsoft.com/en-us/previous-versions/visualst...

I suspect that .NET will last just as long given the sheer amount of enterprise software that was written for it - even today there are places that target it in lieu of the new OS-independent .NET versions.

Lazarus and Turbol Pascal it's close.

Also, TCL/Tk with Tcllib and TkLib plus maybe Tkimage and SQLite3, which was born from TCL code. With that you can create a fast RAD tool in hours.

Tcl/Tk mentioned. Let's goooooo!

I have never, for the life of me, found a quicker way to go from zero to GUI than Tcl/Tk. Even VB requires a lot of rat wrestling to set up a UI. Some people think that's how it should be done, but compared to just telling the machine what you want and letting it take care of layout, to me it's still cumbersome. Plus, Tk has had hierarchical, relative positioning and sizing, no need for doing layout in terms of absolute pixels or "dialog units", from the jump.

Also Tk is in every language, as it's dumb easy to duct tape it into C. TkInter, Perl-Tk... I'm pretty sure if some Forth user created a Tk UI for PForth/GForth, it would be almost as easy as in TCL, but with the syntax reversed. That's it, you would find 'pack' in the end of a sentence full of words.
Microsoft has yet to produce a tool that makes as convinient to produce/consume COM libraries.

.NET support has been through a few reboots, and it is much more low level.

For a technology that nowadays runs so deep on Windows APIs, it is really surprising how Windows Development team is not capable to embrace better tooling for COM, only mini-projects that eventually are left abandoned as people move on.

I totally agree. If they had stuck with that model, I wonder if they could have eventually built something for wireframing and prototyping.
Doesn't Lazarus serve a similar purpose?
It could, if the documentation were usable. 8(
Thankfully their forums are quite active with folks sharing lots of sample code [0]. I was able to get some assistance with getting their SQLite library to work. Also the wiki has quite a few tutorials - when I get some more time I hope to check out this pas2js Electron tutorial. That would be something quite useful to go from a WYSIWYG RAD IDE design to a working JavaScript web app running in a browser.

[0] https://forum.lazarus.freepascal.org/index.php [1] https://wiki.freepascal.org/lazarus_pas2js_integration