A lot of people on Hackernews get wistful for VB. But the VB of the Unix world is still here—Tcl/Tk. It's not for the faint of heart, but it's the fastest way I've seen to get from zero to functional GUI. Entire desktop environments have been built in it—before GNOME 1.0 even came out. It even has metaprogramming capabilities that approach Lisp in flexibility.
VB and Tcl/Tk are very different at a fundamental level. Nowadays the closest to VB would be Lazarus[0]. There is also Gambas[1] though personally i haven't tried that recently (it also cannot make binaries for Windows FWIW) and back when i did, it was very clunky.
Though there was an attempt[2] to make a Visual Tcl at some point. IIRC one neat aspect was that the program was actually live while you were designing it instead of having separate design / run modes.
[0] https://www.lazarus-ide.org/
[1] https://gambaswiki.org/website/en/main.html
[2] https://vtcl.sourceforge.net/
> VB and Tcl/Tk are very different at a fundamental level.
Well, yes, I get that—and I much prefer Tcl. What I meant was it filled the role of "tool you use to get a GUI together quickly", especially in the early 90s. Gambas and Lazarus were not around back then.
Lazarus is closer to Delphi than VB, and I've found it to be clunky also in practice if not in principle; Delphi took on a lot of production workload in the 90s, and having an open source workalike would be a boon to business. We seem to have trashed tools that enabled line-of-business apps to be built by single devs, only for AI companies to sell that ability back to us again in the form of LLM assistance. Sometimes I hate this civilization.
The main difference between Delphi/Lazarus and classic VB is that in classic VB you can pause the program and run commands in the paused program - i.e. running it in a "half-alive" state, though it wasn't fully editable as many changes requiring restarting.
On the other hand Delphi/Lazarus has a much more capable language and richer set of components (and in Lazarus' case much better support for automatic layouts), which IMO is better overall.
But yeah, in the 90s Lazarus didn't exist (Delphi did though) - IIRC it was made around 2000 or so but it was really janky for most of the 2000s.
Note that Delphi (and Lazarus) is used for a lot more than LoB apps. It was used a lot by shareware developers for example (and some still use it, e.g. IIRC both Beyond Compare and Total Commander still use Delphi - with Lazarus for crossplatform and/or 64bit builds).
I remember not only running commands while debugging. I remember moving the program counter back, until a statement above my breakpoint, making live changes in the code and stepping it again until the breakpoint to see the effects of my changes without needing to restart the program.
Yes, but as i wrote "though it wasn't fully editable as many changes requiring restarting".
FWIW this was actually something you could do in QBasic too.
"pause the program and run commands in the paused program" - that's often possible in Tcl too. There are various ways to interact with a running program, query or modify variables, run commands, load updated code, etc.
Yeah that is what i mentioned with the Visual Tcl bit above but the comparison here was with Delphi/Lazarus.
JavaFX has a role here too.
> but it's the fastest way I've seen to get from zero to functional GUI
I think Qt Creator is still the best option I've used there. It has a very good GUI form editor (probably the only one I've ever used that is good). You can have a basic GUI up and running in like 5 minutes tops. And C++ is a much better language than TCL, and Qt is a much better GUI toolkit than Tcl/Tk.
Just steer clear of QtQuick and QML. It's kind of trash. QtWidgets is still supported though.
Why would you say QML is trash? QML is absolutely awesome for UI stuff (while still developing the models/logic in C++). I built my own block editor in QML and C++: https://rubymamistvalove.com/block-editor
Except given the way JavaScript and Electron have gone, QtQuick and QML are pretty much the future, as far as Qt is concerned.
Especially because it opens the door to also have Rust in the mix, Slint style.