Brian Lovin
/
Hacker News
Daily Digest email

Get the top HN stories in your inbox every day.

Stratoscope

Ryan and David and team, I am so happy to see this posted!

I'm quoted a few places in it. Yes, the story about the origin of the phrase "fire an event" is true and correct. I could even tell you exactly where I was sitting and which way I was facing when that event fired.

Some things stick in your mind, doobies or not.

Also mentioned is the VBX. In some ways, this may have been the worst API I ever designed. It was so bad that Microsoft eventually replaced it with COM! But it was the most successful.

If anyone has any questions, fire a comment!

RyLuke

Thanks, Michael! Finding your comments on HN about the design details of the original "Ruby" version of VB and VBX was part of my inspiration for writing this article in the first place. Your recollection of "firing an event" is my favorite kind of classic Silicon Valley story.

Stratoscope

Ryan, thank you for writing the article. I remember you described it to me as a "labor of love". Indeed it is that. It also reminds me of how much work goes into journalism like this.

Ruby/VB was a labor of love for us. One of my favorite episodes of Silicon Valley was the TechCrunch Disrupt where every founder said "we want to make the world a better place." It's funny, but true! That is exactly what we wanted to do.

Anyone who likes the "fire an event" story may also enjoy What the Dormouse Said by John Markoff:

https://www.amazon.com/dp/B000OCXFYM/

tarasglek

Hey, I got started programming in VB3! Thank you for your involvement in forming my expectations of programming.

I feel like my path was so much better because I started from laying out a UI and then learning code as a way to make it do stuff instead of the "lets learn complicated goop with no clear purpose first".

To this day I'm amazed by how ok devs are with not being able to get instant satisfaction from achieving things that should be simple.

svachalek

Today's equivalent would be an IDE that you hit "new project" and type a few lines and draw a few boxes and you've got something up and running in the cloud. There's nothing like it as far as I know; there's an entire generation or more who have never seen programming work like that, and don't even envision it, it seems. Bold ambitions these days usually amount to a clone of a popular thing, with some kind of tweak that's interesting but not nearly interesting enough to get people to move.

analognoise

FreePascal/Lazarus is like that, it's actively maintained and totally free.

They're even adding iOS, Android and web targets. Give it a try!

jeffdn

ReTool is sorta this — I imagine that’s why they published this article!

st00

Would Glitch be a modern equivalent? https://glitch.com/

Stratoscope

Just a note of thanks to everyone who has replied. I thanked one or two of you individually, but I don't want to clutter up the thread too much.

Your kind words mean a lot to me, but more importantly, thank you all for the great things you built using VB.

And if you liked VB, you should definitely check out Retool!

jefflub

I always loved VB. Super useful for banging together a quick "enter a value in a text box and click a button to do something in the database" utility.

And VBX was a pain, but had some advantages over the COM-based controls. My first job at MSFT in 1994 was to build demonstration apps for interactive TV. When I started there was already a base application in VB3. I needed to add transparently layered images and text with rotation and animated transitions, and a windowless VBX made it easy to build that transparency. IIRC, you could not make windowless OCX controls. I'm not even sure how you'd do independently positioned transparent controls in VB4+.

kevingadd

Thanks for all your hard work! Without VB my career definitely wouldn't have happened.

Stratoscope

Kevin, I can't tell you how much that means to me. (Well, I guess I just did.)

I checked your HN profile, and my gosh, if I had even a small part in getting you started in this crazy business, that makes it all worth it.

WillAdams

Were you aware of how MS killed off the competing MacBASIC?

Did you ever see the sourcecode for it?

How would you tell the VisualBASIC side of this story:

https://www.folklore.org/StoryView.py?story=MacBasic.txt&cha...

Stratoscope

I hadn't seen that story before, thanks for pointing to it. Lots of great stories on folklore.org! I recommend it to anyone interested in the early days of Macintosh.

I don't think there is a Visual Basic side to the story. Our work was many years after those sorry events.

In fact I never saw the source code for any of the Apple or Microsoft Basics, not even the "Basic" side of Visual Basic. Our team built the "Visual" side of it, code named Ruby. (No relation to the programming language.)

Originally Ruby wasn't going to be combined with Basic at all. It was going to be a user-customizable shell for Windows 3.0. Instead of Program Manager and File Manager, you could create your own desktop with things you wanted on it.

Ruby had a very primitive scripting language, but the language API was designed to allow other interpreters to be plugged into it.

Microsoft later decided to scrap the "shell" idea and create Visual Basic instead.

WillAdams

Thanks!

Did HP coming out with NewWave and its scripting language influence this at all?

fernandotakai

it's thanks to you and and the whole team that i have a career! i started learning vb late (early 2004), but soon enough i had a small job writing custom software for small business with a couple of friends -- that lead me into actually finding my passion.

honestly, i kind if miss vb6's simplicity: you could create a "proof of concept" in the matter of hours, without having to bother with compiling tools, libraries or anything like that. everything just worked.

mysterydip

VB was my swiss army knife for many years, making utilities for solving organization's pain points, some of which were used unchanged for over a decade. I even made some games in it back in the day!

dvdhsu

It was surprising to us (here at Retool) that visual programming has never taken off, despite countless attempts over the past few decades. (That's why we started Retool, after all.) But Visual Basic is probably the product that came closest, and that's why we wrote this homage to it. It, along with Filemaker, Hypercard, are products that we loved. And we always wished that they had flourished, since then we wouldn't have had to start Retool, hah! As Linus says (in the article):

> “For example, I personally believe that Visual Basic did more for programming than Object-Oriented Languages did,” Torvalds wrote, “yet people laugh at VB and say it's a bad language, and they've been talking about OO languages for decades. And no, Visual Basic wasn't a great language, but I think the easy DB interfaces in VB were fundamentally more important than object orientation is, for example.”

illiarian

> visual programming has never taken off, despite countless attempts over the past few decades.

It has, in some niches like Unreal Blueprints.

I think one of the reasons it doesn't become more popular is because most visual programming is just a more cumbersome and slow way of programming. It's stringing the same concepts together in the same way, but slowly and tediously with a mouse.

Non-tech users wouldn't know what to do with it. Power users would rather program directly.

WillAdams

I find dragging-dropping and re-arranging far more expressive for 3D modeling using BlockSCAD than I do the equivalent OpenSCAD code:

https://www.blockscad3d.com/editor/

I'm trying to achieve a similar fluency using OpenSCAD Graph Editor:

https://github.com/derkork/openscad-graph-editor

hopefully a future version will be even more useful than BlockSCAD/Blockly.

Stratoscope

Originally Ruby had a Blueprints-like UI to connect an event fired by one gizmo to a property of another gizmo. You would right-click a gizmo, select an event, drag a line over to the target gizmo and select a property.

In fact when Ryan first contacted me about the article, he was looking for a screenshot of this UI. Alas, I didn't have anything.

When Microsoft turned Ruby into VB, they abandoned this UI and just kept the form designer with Basic as a scripting language.

mappu

> You would right-click a gizmo, select an event, drag a line over to the target gizmo and select a property.

This idea lives on in Qt Creator - https://doc.qt.io/qt-6/designer-connection-mode.html although I think most larger apps write their `connect()` calls in code instead.

Was it kind-of like this?

badsectoracula

> It has, in some niches like Unreal Blueprints. [...] I think one of the reasons it doesn't become more popular is because most visual programming is just a more cumbersome and slow way of programming. It's stringing the same concepts together in the same way, but slowly and tediously with a mouse.

The latter bit basically perfectly describes Unreal Blueprints :-P.

It was hyped when it first came out and for some time (years) it was well received - until people had to deal with the spaghetti mess others made in blueprints.

Visual languages are fine as long as they are limited to high level concepts, but UB not only is not that (there is even a type cast node!) but instead of being there in addition to Unreal Script, it actually replaced it, forcing many people who didn't want to bother with C++ (especially Unreal's flavor of C++) to use blueprints.

Epic supposedly learned from this and UE5 at some point will have a new scripting language, but AFAIK so far it has been vaporware. Meanwhile i (i am into gamedev and have worked with UE) increasingly see people get disillusioned by Blueprints.

qsort

I'm the last to defend visual programming, it's mostly spaghetti nonsense and you'd be better of with an actual programming language for most complexity levels -- but I think there's a viable niche for stuff that satisfies both of the following:

(a) it's simple and it strings together off-the-shelf components;

(b) it has an intuitive, well-defined computational model

examples: defining compositions of matrix transformations for camera angles, defining data pipelines (read from this source, do these operations, write to that sink), very simple automation Apple Shortcuts-style (whenever I receive a message from this number, make a note on this file, etc.)

As soon as you venture into general-purpose territory, visual programming is just a disaster. Which is a problem because you have no way to convert your mini-idea into something usable, and you always find yourself wishing you had started with a normal script.

I tend to stay very far away, but it does have its moments admittedly.

WillAdams

The thing is, using modules it should be possible to create even higher-level concepts, so things should become more expressive --- that's how I work in BlockSCAD.

The problem always becomes such expressions become just a list of names of modules and their inputs, so one is back to the wall-of-text problem which a visual tool is supposed to solve --- the fundamental issue is, "What does an algorithm look like"?

and the solution we need is, "What is the most expressive way to create algorithms"?

hnthrowaway0315

BP is the only reason I don't want to play with UE. It's too painful IMHO. I wish we had Unrealscript.

m_mueller

I wouldn't say it didn't take off, it just has 'landed' again somewhere over the last 10-20 years. VB, Xcode Interface Builder, Hypercard, Filemaker & Lotus Notes all had pretty good runs, we just never got something similarly successful for the web & even smartphones, probably due to compatibility issues with varying screen sizes.

Once the screen can be wildly resized, it just becomes too murky. Maybe have the programmer do it manually for 2-3 sizes and then let some AI model interpolate the sizes in between?

dgb23

People still use VB and Filemaker to make applications along with very complex Excel spreadsheets. It’s way more common than the general sentiment here implies.

In fact, I get handed stuff made with tools like these somewhat regularly in order to develop a web app. At some point they become unwieldy and limiting.

I think it’s wonderful that anyone with some technical curiosity can make useful applications with these.

Of course they have a lot of limitations. But that’s fine. They can call a software developer when they actually need one.

fatneckbeard

yup its like two different worlds that don't know each other exist

the excel tribe and the open source programming world tribe

mike_hearn

The problem isn't responsive design, GUI builders were able to do that just fine. The problem with making it work on the web was that the dominant design paradigm for web apps was (and to some extent still is) templating, in which there's no clean split between UI layout code and UI controller code and no proper notion of encapsulated components. PHP, JSP, ASP and the <script> tag all mix UI layout with code that works with the database or controls the UI itself. Yet all VB-like platforms require this to be split, because the GUI designer has to be able to edit the GUI code without breaking your app logic too badly, and they really need a strong component model.

How they do this does vary, I don't remember how VB did it but Delphi had a binary file format for describing forms, Java Swing used IDEs with code generation inside magic comments that you weren't supposed to touch, JavaFX and WPF have the cleanest approach with an XML dialect for describing the UI and then the event handlers and controller logic are implemented as classes that are bound to the UI using reflection, Android has something similar, macOS uses NIB files and so on. And they all have a notion of a component being something you can install and treat as if it were one of the built-in widgets. On the web there's no equivalent to this. React sort-of brings components but they don't provide sufficient metadata to be used in a visual designer, and it still mixes code and data together in such a way that visual editors would struggle to not corrupt the user's code.

Ultimately the web came to dominate not because it's a good way to do GUIs. It mostly tossed out what was learned about making GUIs easy to use and develop, because it was never designed to do that in the first place. It came to dominate because it made distribution easy at a time when desktop OS vendors were totally dropping the ball on everything internet related. That's why classical VB-style development app development paradigms dominate on mobile: mobile OS vendors put way more thought into distribution, and that took away the web's primary competitive advantage.

On the desktop distribution can still be quite hard, which is why I put a lot of work into making a tool that makes it drop-dead easy and which gives you the option of web-style forced "immediate mode" updates (we call it "aggressive mode" but that's kind of a dumb name). See my profile for a link. It brings desktop way closer to the web in both UX and DX, which opens up the possibility of VB style development again. Not only for professional devs but also for people who benefit from a lower barrier to entry.

pjmlp

VB did it via VBScript and COM, later with Web Forms in .NET.

Outsystems picked up on this and created a visual programming language for the Web, still going strong 20 years later.

Turskarama

Visual programming is useful in some niches, but for general purpose you either have to have less power than a text based programming language (and users will beg you to add that power) or it will become exactly as complicated as a text based programming language, but more cumbersome because whatever you're doing is slower than typing.

I feel like the whole idea of visual programming comes from some fundamental idea that the hard part of programming is learning the syntax, which I just don't agree with at all.

Yhippa

These are the original low-code tools. Easy to pick up and your average citizen developer could figure it out with some trial and error. So much lost productivity due to whatever happened in the next several decades.

XorNot

The biggest problem is that it's just impossible to use modern coding tools with them. If we could fix that, so much would work better. Even the best efforts at it haven't really worked out, since there are some truly sprawling VBA codebases out there (tried Rubberduck with a big MS Access app for a business - reliably crashed it).

simonbarker87

In science and engineering I would say LabVIEW has taken off. I doubt there’s a university in the world that doesn’t have it running in some capacity. Without learning LV I doubt I would have learnt to code.

fatneckbeard

VBA, a visual language, runs the entire planet, it's just that nobody knows it or talks about it.

pcdoodle

Xojo is another one worth looking at. Desktop and Web apps can be written pretty quick.

pjmlp

Besides all sibling comments, OutSystems is doing quite well for the last 20 years.

Just like most low code, CDP and data analytics tooling.

djhworld

Visual Basic was so good.

Growing up all I knew was Windows, so being able to create fairly reasonable looking GUI apps at the time seemed like magic. I remember building a "web browser" in VB, I put that in quotes because it was really just an IE webview/control wrapped in my own custom UI with features like not recording browser history.

I remember making a "virus" and sending it to a mate, and when he opened it, you could send messages to him and open the CD drive on his computer.

I remember making a lottery number generator program and sending it to my Dad.

I even remember doing work experience in a computer repairs shop, the guy that ran it used to sell PCs with not so legit software on it and he got me a copy of Visual Basic 6.0, which was amazing at the time.

Definitely attribute my interest in programming, computers and everything to VB, no matter how much its look down upon!

pcdoodle

Remember being able to pause execution, check variables by hovering, changing the dang code and resuming like nothing happended?

"Do you ever wish a = 2 and not 3? introducing, pause button, let's you add anything at anytime and we don't ask no questions!"

orthoxerox

> I remember building a "web browser" in VB, I put that in quotes because it was really just an IE webview/control wrapped in my own custom UI with features like not recording browser history.

Haha, I built one as well. Couldn't have the parents accidentally discover what sites their horny teenager visited when they were at work, even if all I could rely on with 21600bps was written smut.

sussmannbaka

> I remember building a "web browser" in VB, I put that in quotes because it was really just an IE webview/control wrapped in my own custom UI with features like not recording browser history.

Don’t sell yourself short, that’s how everyone seems to build browsers nowadays.

lappet

whoa, I made a fake virus too! Mine would freeze the user's screen, and display a progress bar that their hard disk was being deleted. I shared it on download.com and got a few thousand downloads. VB6 was so much fun as a teenager. If you all know anything that is close to it please let me know!

sigmonsays

i recall around the time windows released transparent windows API calls. I promptly wired them up into a VB6 app and could make any window I wanted transparent.

VB6 Rocked.

heap_perms

I did those things as well as a teenager. I wrote a tcpi/ip chat program and we used it in school to chat with each other. It all seemed like magic to me. I did the thing with opening the CD drive continuously in a loop, and sending this to friends. It was hilarious.

Altough I'd never use it today, it still acted as a catalyser for my interest in programming and computers.

ShadowBanThis01

VB was the one thing that most closely approached the promise of object orientation: "bolt-together," "off-the-shelf" components that you could build software with.

In VB you could slap together a CRUD app in days, with VBXs (later renamed OCXs). I worked for a company where a bunch of programmers turned up their nose at VB and insisted on using C++, and then they got canned when the VB prototype functioned perfectly sufficiently for a production app.

omnibrain

> VB was the one thing that most closely approached the promise of object orientation: "bolt-together," "off-the-shelf" components that you could build software with.

I think Delphi perfected it with the data aware components. If you had a DB you could throw together a CRUD application with several screens with tablegrids and edit fields without any code at all. Even Master:Detail relations are taken care of. (Of course it's not pretty and it's going to miss validation, etc...)

petepete

Delphi's data aware components were power tools. It didn't take much longer than building something in Access, but dead easy to plug it into a RDBMS; extremely fast to work with; stable, simple to deploy.

As I remember, making validation errors pretty was a bit of a chore, but on most of our backend stuff we just showed the SQL error and it usually made sense.

grumpyprole

When I first played with VB in the early nineties, it was also about the time Microsoft Foundation Classes was released. I compared the two approaches for building UIs and it pretty much soured my opinion of C++ for life.

ShadowBanThis01

Oh man, while we got a lot done with MFC, I scorned the macro mess that VC++ generated. To this day I detest C/C++ macros and never use them in my own code.

But years later, when I had to switch to the Mac and Project Builder, I couldn't believe how half-assed its integration with Interface Builder was. You couldn't even drag from a control in your UI layout to your view's source code to generate a code stub. You had to manually type stuff like IBOUTLET. And there was no bi-directional updating either, of course. It has gotten a lot better since. Meanwhile, whereas I used to love the Visual Studio IDE itself, I find the same ridiculous bugs in it that I reported 20 years ago...

fjfaase

VB6 is often underrated as a programming language, but it did have some neat things that are still not present in existing programming languages. (They were dropped in VB.NET.) In a sense VB6 is still ahead of its time.

One is the transparent intergration with COM objects, allowing you to access objects in another process (possibly from a different executable) in exactly the same way as in-process object. All the marshalling is done under the hood. The only problem with this is that the execution of a single statement could be intermixed with another statement in another thread. I once had to deal with a nasty bug that was obscured by this fact, which was actually caused by using a programming mistake where someone had used a global variable for something that should have been a method argument.

The other is the very nice event mechanism where there is no need to (un)register event handlers. They are automatically registered and unregistered. Very powerful mechanism that I started to use more and more the longer I worked with VB6.

teh_klev

> One is the transparent intergration with COM

I think this is one of the things detractors of VB kinda miss. You could build quite sophisticated software to leverage COM/DCOM without needing to go full C/C++ and IDL.

The place I worked at built software that ran inside Microsoft Transaction Server (latterly COM+) to exploit distributed transactions.

And then there's the really "advanced" stuff you could do in VB as written about by Matthew Curland in his excellent book "Advanced Visual Basic 6: Power Techniques for Everyday Programs"[0]. Armed with a copy of Curland's book and Don Box's "Essential COM" you could be really dangerous :)

[0]: https://www.amazon.co.uk/Advanced-Visual-Basic-Programming-D...

pjmlp

It is incredible how on one hand WinDev has doubled down on COM after the way Longhorn was botched and rebooted into Vista,coming up with WinRT afterwards.

While on the other hand they keep failing to deliver a VB like experience to deal with all that COM.

All C++ improvements were killed in the name of the mighty IDL, and even .NET has always been hit and miss with RCW/CCW, and CsWinRT requires manual boilerplate coding.

melony

The integrated debugger was also excellent. Outside of Lisp, few languages have decent support for Edit and Continue.

https://blog.codinghorror.com/edit-and-continue/

I think Java and .Net are pretty close. It is utterly shameful that languages like Python and JavaScript consider themselves to be developer friendly when their debuggers still require full reloads whenever the local state gets modified in place. Common Lisp had Edit and Continue (equivalent functionality in their debugger) before the dotcom crisis.

Vercel and Microsoft product managers, if you are reading this, please implement this feature in Next.js, VS Code, and Typescript.

jlarocco

I've had good luck using Python with COM. It has some rough edges, but it works well enough, and can even tab complete methods and accessors in the REPL.

Here's an old example working with Catia: https://gist.github.com/jl2/2704426

draw_down

I promise you this: nothing about working with COM induced feelings of “transparency” or ease.

tomcam

Was a huge fan of the product. Joined the VB team as a PM in 1996 and worked for a few years while my health declined. The whole division was beautifully run. The people were, to a person, amazing human beings. I honestly think I stumbled into the best team Microsoft had before or since. The Microsoft campus was verdant and tranquil. Everything you sort of imagine Apple would be to work at was true on that team, and has never actually been the case at Apple. At the same time our first child was born. For me, it was a time of pure magic. All that and I got to work on VB.

ShadowBanThis01

I don't know who approved the inclusion of VB in Word, but that person is a hero.

WordBasic was a career-maker for me. I worked at a Big-6 consulting firm and used Word to parse and rewrite thousands of SQL modules (that resided on a VAX, no less) with a Word macro when the DB structure changed. It ran for 11 hours and saved man-weeks.

That was after I had used WordBasic to add tons of features to Word for our doc team, which we take for granted today: cross-file searches, cross-file page numbering, style enforcement... just incredible.

It's sad to see the mess that Word has become, however. And Windows too.

sasulzer

I joined the VB/Ruby dev team in 1992, first as an intern and then full-time a couple years later and stayed in the team thru 1999 / VB6. I implemented the Data control and some of the data binding logic for VB 3.0. It was such a special team and code base - even 30 years later I still fondly remember my HDesks, HDeskrefs, and Gizmos. We tried hard to get the Ruby forms engine running on the (what became the) .NET/CLR runtime - but alas it was not to be.

RyLuke

Hey Stephen, I wrote the original article. Had no idea that MS actually tried to port the Ruby forms engine to the CLR—what a fun twist. Did it end up being too difficult technically, or were there other factors that killed it?

sasulzer

We kept the Ruby forms engine as unmanaged code written in C/Win32/COM and tried to integrate it with Basic code compiled and running on the CLR, but it didn't work very well. There were a lot of problems back then (this was 25 years ago now, a couple years before .NET 1.0 shipped) with CLR/COM interop. One particular problem I recall was that the interop layer did not support calling event handlers via IDispatch which the Ruby forms engine required.

CharlesW

> Everything you sort of imagine Apple would be to work at was true on that team, and has never actually been the case at Apple.

I'm glad to hear your Microsoft experience was amazing. But as someone who worked at Apple during that time, this assertion is untrue and seems unnecessarily mean-spirited.

tomcam

Agreed, and I apologize. I should have said I never met anyone who loved their experience at Apple. Thanks for catching that, and for doing it so civilly.

DeathArrow

Ideally we should have a modern programming language and environment that

a) is very easy to use for new comers and people that aren't professionals to build small functionalities and link different functionalities together

b) has visual components (so this disqualifies Python)

c) it is flexible and can be used by seasoned professionals to build complex things

The complexity of the programming should be gradual, i.e. if you are a beginner, if you are learning, if you don't plan to be a full time programmer but you need to build something very simple, it should be possible.

When I studied programming in highschool, the tool of choice was at first Turbo Pascal. Using Turbo Vision it was easy for US to construct simple text-based UIs and using BGI allowed us to dabble with graphics and draw simple things in a simple and straight forward way.

Now, if I have to explain to a potential beginner that in order to build a simple to do app he should learn: HTML, CSS, Typescript, React, install VS Code, install VS Code extensions, linters, NPM, sass, less and tens of packages, just to be able to start, he might feel a bit discouraged and want to become a cab driver instead.

But if I, in a totally unmodern, uncool, unwelcomed by community way I tell him to open Notepad and show him a few bits such as <button onclick="myFunction()">Ok</button> and alert("Ok") he might discover a taste for programming, and start to learn his way up to building something.

lproven

I think you're right.

And there were things in this general direction... Smalltalk and Logo spring to mind.

But there is a lot of culture in computing, and a big problem that isn't recognised let along acknowledged is that today, there are basically only 2 surviving branches on one tree, when 30-40 years ago there was a whole forest.

The branches are Windows (which now means NT) and Unix (which now means Linux and macOS). They both grow out of the same stump: DEC's minicomputers, specifically DEC's 16-bit line.

DEC also had 12-bit, 18-bit, 20-bit, 24-bit and 36-bit lines, all profoundly deeply unlike anything that ever ran C.

And of course there were lots of other minicomputer and mainframe brands that were far far more different than that: Burroughs, UNIVAC, NCR, Control Data Corporation (CDC), RCA, General Electric, and Honeywell. Once known as "IBM and the seven dwarves".

All we have left descends from one branch: DEC 16-bit machines.

The rest is mostly gone. Some are still around, emulated and in maintenance mode, because they run the world's banking systems and air-traffic control and things. Kinda important.

There are whole families of languages and OSes that never used a single line of C or involved any Unix code at all at any point. Whole types of OS and GUI and editor and filesystem and so on more different from Unix than Unix is different from Windows NT.

Whereas today, the traditional Mac is totally gone, replaced by Unix. And Windows is getting more Unix-like all the time and now includes a choice of Unix and two different Linux runtimes.

Suggest that, hey, let's run Smalltalk on the bare metal and teach kids on that, so that they don't even have to ever know what "a file" is or means, and people will say "that's crazy talk!"

Remember the Blues Brothers? "We got both kinds of music! Country AND Western!"

Well, we got both kinds of software today! Unix AND Windows!

They are the same damned thing, and gods help you if you are some heretic that says hey, you know, there are other things out there...

DeathArrow

>But there is a lot of culture in computing, and a big problem that isn't recognised let along acknowledged is that today, there are basically only 2 surviving branches on one tree, when 30-40 years ago there was a whole forest.

I guess 30-40 years ago computing was much newer, there was a lot more enthusiasm and people were willing to try many new things and do things in many different way. At a conceptual level, Go isn't very different from Java which isn't very different from Python. LISP is quite different from Smalltalk and Smalltalk is quite different from ML and ML is quite different from Prolog.

As for small, home operating systems, BeOS was quite different from both Mac and Windows. :)

> Suggest that, hey, let's run Smalltalk on the bare metal and teach kids on that, so that they don't even have to ever know what "a file" is or means, and people will say "that's crazy talk!"

A file is just an abstraction, and so are Unix pipes. I don't see while there can't be other valid concepts to hold data than files.

follower

One of the leading contenders for being a modern equivalent IMO would be the Godot game engine.

The Godot editor is less than 100MB to download for many platforms--the recent Godot 4 release also supports running the editor on the web[0] and on Android.

Its packaging/distribution story for GUI-based applications is easier & stronger than any other modern programming environment of which I'm aware--in a large part due to the (IMO inspired) architecture of using per-platform pre-built application templates/shells paired with per-project "data" files that contain assets & script byte code.

Godot's modularity, ease of development & distribution has led to it being adopted for non-game applications too: "Apps & Tools - 2022 Showreel" <https://www.youtube.com/watch?v=9kKp0oguzr8>

I do think the initial "complexity of the programming" for an absolute beginner is probably still at least a little bit higher than drag-and-drop GUI environments like classic VB, REALbasic, VBA or Hypercard. (Primarily from a UI/UX point of view because Godot doesn't directly have the "drag button from toolbar" workflow which I think was key in earlier systems. But it is extremely modular by way of configuration & extension--one intended use case being e.g. specialized feature-subsetted tools for artists.)

In my experience it also works really well for iterative development where you can just hack around (from visual & code perspectives) to get something working & then refine it (and using Godot's "Scenes" paradigm for encapsulation).

Anyway, you might like to consider suggesting Godot next time you're riding in a cab & discover that the driver is a beginner who would like to learn. :)

[0] <https://editor.godotengine.org/releases/4.0.stable/godot.edi...>

MrJohz

I mean, the notepad method still works, and there's nothing stopping you from going down that route. Hell, you can probably make it easier: open up a browser on any page, open up the inspector console, and you've got a REPL and semi-visual environment right there at your fingertips. A combination of that and using notepad to "save" your progress would probably be a pretty potent learning tool.

I don't really know what your point here is. Professionals use different tools to beginners to program? Yes, obviously this is the case. I started making videos with Windows MovieMaker, but that is unlikely to be the favoured tool when editing together a Marvel blockbuster. But you can learn a lot just by using more simple tools and then graduating to the more complicated ones when you find you need them.

fabianholzer

The WYSIWYG GUI builder that VB provided, I have never encountered afterwards again in quite that manner.

Now, in VBs heyday the field of UX design we now have as a profession adjacent to software development was in its infancy and was usually an implicit part of the developers job. What was lost with the demise of the RAD tools was a potentially shared medium of expression. Today designers build Potemkin villages in Figma and the likes, throw them over the fence and as a developer I then need to reverse-engineer them. How much more productive would it be if they didn't throw something over the fence but would actually build the UI in the same tool that the developer uses to write the logic behind it?

And another thing: I don't know if I had gotten into the field without BASIC. I started with QBasic, because it was the only thing readily available and switched over to VB when I got my hands on a students' edition. The thing that distinguished these two from educational environments like Scratch or Logo is that I could build actually useful stuff for myself with it.

Joeri

The WYSIWYG GUI builder that VB provided, I have never encountered afterwards again in quite that manner.

At the time I think delphi did that concept in a better way, and I definitely switched from VB to Delphi as soon as I learned about it. Delphi still exists to this day.

There are also many low code platforms which have a VB-like UI builder, like mendix, or outsystems or microsoft’s power platform, but they tend to be a bit too enterprisey where VB was really the people’s champion.

I think canvas apps in power platform give much of the “feel” of dragging and dropping visual basic forms and let you build actually useful stuff, while targeting web and mobile. The downside of power platform is that as soon as you try to do anything serious with it you need the premium stuff and end up paying a lot. That makes it less suited to take up the niche that VB and Access had, because that niche mostly can’t afford power platform. Contrast that with scratch which is free to use and has a large community of “regular people” sharing cool stuff. Intuitively it seems that Microsoft should make power platform entirely free and use it as a lure for azure paid services, but then it is easy for me to spend their money.

By the way, I still don’t understand how power apps on iOS are according to apple’s guidelines, because you can use it to ship mobile apps to iOS users while entirely bypassing apple.

sharemywin

I remember in Access(for like $100 one time) and how you could use a wizard to build like a contact manager with all the tables and forms. I always thought that was really cool. Now I guess you can spend like $30/user per month or something like that.

hahamrfunnyguy

I think the WYSIWYG WPF and Silverlight tools were pretty close to VB6 level of usability. The tools are great for building a quick UI, but I think they fall short for more complex applications.

This is why designers have their own preferences when it comes to designing the UX, to give them the flexibility to create the UI as they see fit. When different teams are working on a shared goal, there can always an element of "throw it over the fence".

As a developer, I always saw part of my job as getting plugged in with the other teams as much as possible. Providing continuous advisement and feedback on UX patterns as projects progress really helps things move smoothly.

AnIdiotOnTheNet

I would argue that "more complex applications", when it comes to UI, are an anti-pattern. Use standard widgets, and don't be creative.

Of course "standard widgets" don't really exist anymore because of where UI design has gone, but they did provide a consistency that users could rely on. That is gone now. Buttons don't even look like buttons anymore.

EdiX

The GUI builder of VB6 fell apart the moment you wanted to do a resizable window. Here "more complex applications" = "window that you can resize or maximize".

DeathArrow

Couple of thoughts:

1. Microsoft did a good thing at that time with Visual Basic. Building visual interfaces with RAD tools is the most efficient way, as defining visual elements with code is harder. VB was great at its time, Borland Delphi and C++ Builder were good, QT Builder was good, Windows Forms was good. Of course, why use good models when you can inflict pain and let people define UIs by using plain code?

WPF used XAML and the new MAUI uses XAML, and while it is a better experience to define the visuals with XAML, a RAD tool like VB or C++ builder is much better. We should have RAD tools for desktop apps and mobile apps.

In my software career I've not only built apps and websites and web applications and backends, but I worked as a game programmer, too. And people preferred game engines like Unreal and Unity because they were rapid tools with which is was much easier to build game levels and UIs than doing that by code.

2. I didn't use VB, because by the time I've encountered VB, I already knew C and C++ and felt they were more powerful and fast. I enjoyed using Borland C++ builder very much, and I wondered why MS didn't provide such a tool and enforced Win32 over programmers. I thought Microsoft hated programmers. And being that failed to provide one API for desktop programming, switching from Win32 to MFC to Windows Forms, to WPF, to MAUI - I still sometime think MS doesn't do the best job with providing tools for programmers. Now that MAUI is the thing, I hope it will stay and won't be replaced in two years by another thing.

3. If people think using Haskell or Rust is hard, they should buy Petzold's Book and try to program Windows with the info provided in that book. To do very simple things like apps with menus and child Windows, you really had to spend hours, correct compile errors, have the program crash, debug it, make it not crash, observe that things don't work as they should, change the code, solve errors, observe that the program crashes, solve those bugs, make it not crash, observe that things don't work as they should. And all that without having learn.microsoft.com, stackoverflow, YouTube to learn from.

wsc981

I’ve started looking into MAUI over the last week and it honestly seems like a big improvement over Forms, in various ways.

Though it’s probably risky to use in production.

DeathArrow

Yes it is nice, but I hope that once people and companies will make an investment in it, they won't deprecate it in favour of a new thing.

Kwpolska

WPF’s and Android’s approach are the best of both worlds. You get both a visual designer that can get you far, and human-editable XML, which is useful for more complicated layouts or for copy-pasting similar widgets around.

mike_hearn

Yes, note that JavaFX has the same approach but also has a visual designer (Scene Builder). It can be used from any JVM language which is a lot these days. Like, you could write a JavaFX app in JavaScript or Python if you wanted to.

DeathArrow

WPF is dead, now we have MAUI for both desktop and mobile development. Let's hope MS doesn't find a new shiny thing.

Kwpolska

WPF is definitely not dead. It may not be the latest shiny thing, but it works, it is maintained (judging by https://github.com/dotnet/wpf or https://devblogs.microsoft.com/dotnet/wpf-on-dotnet-7/), and it is fully and officially supported on the modern .NET platform.

tragomaskhalos

There was more to VB than just guis though - one could use it to build COM components far more easily than with C++ - the fact that a string was just String rather than the miasma of competing flavours that abounded in Visual C++ was worth the price of admittance alone.

Delphi was arguably best in breed here, but always suffered from lacking the Microsoft badge.

juliangamble

There's a generation of programmers that fell into software development through Visual Basic. Maybe you could say the same about the Apple II/Commodore/ Sinclair/ BBC Micro generation of computers that booted up to a BASIC prompt.

Zardoz84

On my case was : ZX Spectrum +3 -> TurboBASIC/QBasic -> VisualBasic 3 to 6 -> PHP + early JavaScript -> C, C++, JavaScript, Java

StopHammoTime

When I was younger, I HATED VB6. Even today, I still loathe some of the weird apps that I had to support running in Excel with VBA. I truly never thought about the power of VB until I read this article - those apps I loathed so much probably wouldn't have existed if it weren't for VB. I ran into so many tools that provided immediate value and go things done, even if it was dodgy or weird.

Even though I'm a Platform Engineer these days, I hate the tooling that we have to do deal with today. Instead of having people build solutions, we all need to understand hundreds (if not thousands) of cloud/vendor-specific APIs. The actual solution itself is almost a by-product of the job of getting in run in the cloud.

Maybe don't bring back VB, but a world where we can deliver solutions quickly and effectively without spending hours debugging dependency issues between releases.

Syzygies

"Alas, the final product horrified Cooper—who loathed BASIC"

This so reminded me of that wolf-to-dog "What could go wrong" meme.

https://imgur.com/uVJPlZF

Daily Digest email

Get the top HN stories in your inbox every day.

Something Pretty Right: The History and Legacy of Visual Basic - Hacker News