back
128 comments
In my opinion basic was not about the language. It wasn't that easy to understand, it wasn't that powerful, it was slow.

It was about simplicity, it was easy to make sound. To draw to the screen.

It was about accessibility. Computers with it would boot right to a basic prompt. To use a computer was to program, and you were certain to naturally be exposed to programming and learn by doing rather than in a classroom.

It was also about the fact you could easily open up other programs and read and modify them, much like older fashioned web and HTML.

That's why these new basic projects fail so often. Python is simply better, and the ease of use of modern computers and phones means that the push basic used to have is just gone.

Basic is being able to hear your data when you play it on a tape. It's about being able to cheat in your game by changing the code. It's typing code in from magazines and making games in math class. It's warm and fuzzy and you just can't bring it back.

> It wasn't that easy to understand

Out of all the complaints I've seen about BASIC/Visual Basic, this has never been one of them.

> It wasn't that easy to understand

Yes it was.

https://www.dartmouth.edu/basicfifty/basicmanual_1964.pdf

You are talking about different BASIC of different era, a decade before VB.
There’s nothing inherently slow about Basic. There were several implementations of Basic compilers that were plenty fast enough. Sure, they weren’t as fast as C, C++, Pascal, and Fortran, but they were good enough to make commercial software with.
actually, basic being so slow might be some kind of good feature. one of the first programs i ever wrote was an implementation of conway's game of life in basic on a z80 cp/m machine. i was unhappy with the results. this made me learn z80 assembler so i could get it to run much, much faster.

but probably, looking back from old age, what i should have done was improve the algorithms i was using.

i think basic is a good thing. perhaps a bit sad that people today do not have instant access to it.

I think VB was such a smash hit not because of the language but because the ease of writing a quick GUI for Windows, there wasn't really anything quite like it at the time. Other GUI builders existed but were harder to use and not as well integrated.

The appeal of VB lives on in WinForms with C# as the backing language. Initially MS tried hard to keep VB.Net around as a fully emancipated partner but it turns out everyone just moved over to C#.

> "Initially MS tried hard to keep VB.Net around as a fully emancipated partner"

Not very hard[1]; "making Visual Basic.NET not backwards-compatible with VB 6.0. This was literally the first time in living memory that when you bought an upgrade to a Microsoft product, your old data (i.e. the code you had written in VB6) could not be imported perfectly and silently. It was the first time a Microsoft upgrade did not respect the work that users did using the previous version of a product.

And the sky didn’t seem to fall, not inside Microsoft. VB6 developers were up in arms, but they were disappearing anyway, because most of them were corporate developers who were migrating to web development anyway. The real long term damage was hidden.

With this major victory under their belts, the MSDN Magazine Camp took over. Suddenly it was OK to change things. IIS 6.0 came out with a different threading model that broke some old applications. I was shocked to discover that our customers with Windows Server 2003 were having trouble running FogBugz. Then .NET 1.1 was not perfectly backwards compatible with 1.0. And now that the cat was out of the bag, the OS team got into the spirit and decided that instead of adding features to the Windows API, they were going to completely replace it. Instead of Win32, we are told, we should now start getting ready for WinFX: the next generation Windows API. All different. Based on .NET with managed code. XAML. Avalon."

[1] https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost...

> I think VB was such a smash hit not because of the language but because the ease of writing a quick GUI for Windows, there wasn't really anything quite like it at the time.

I agree completely. The language itself was pretty crap, but there was nothing like it for rapid layout and wiring of a GUI. IMO, even modern tools like the storyboards and visual components in Xcode don't quite make it (they're more powerful, certainly, but also much more complicated to use).

I started programming with BASIC back in the late 80s and into the early 90s. Started with gw-basic and then with QBasic, both of which were included in versions of DOS.

QBasic was really cool at the time. I wrote a lot of (very crappy and slow) games in it. The documentation was all readily available and it had a lot of power. QBasic (and VB) were very "batteries included" and that was amazing.

But, and this may sound harsh, I've always felt that BASIC was a language of desperation. You use it because it's the only thing available to you, not because you actually want to use it. There was a time where some form of basic was available on literally every computer. This continued well past the 80s with VBA and gave a lot of people the power of extensibility over their applications.

Back when I was writing a lot of BASIC code, I quickly found myself running into walls and realizing that it just wasn't a great environment to build anything serious in. The lack of a real compiler in DOS was the primary reason I found Linux and C in the mid 90s. Once I had my hands on a C compiler I never wanted to look back ever again.

(I know that QuickBasic and Visual Basic existed and could create binaries. But, I was young and couldn't exactly afford them. Before finding C, I was using a BASIC environment called ASIC, which wasn't quite as nice as QBasic, but could produce binaries.)

It makes me wonder how things might have been different for me if DOS came with a C compiler and something like raylib. The lack of a real (free) compiler drove me to Linux. Would I have still gotten into Linux? I don't really know!

> I know that QuickBasic and Visual Basic existed and could create binaries.

Very small binaries. Unfortunately you had to include the rather large run-time libraries with them (BCOM*.LIB or vbrun*.dll respectively). IIRC vbrun300.dll was >300MByte which was rather large at the time, as well as the library functions it contained an interpreter and your executable wasn't fully native code (your code was transpiled to something the interpreter could process more efficiently, and the executable had a small chunk of native code to load the RTL and get it to execute the rest). IIRC VB6 was the first version to properly compile to native code.

You never got to the stage of pirating QuickBasic off of a BBS somewhere. I went from 8bit BASIC to QBasic to QuickBasic and then to VB. I even started writing some assembler and linking it with QB code.

QuickBasic and all the variants filled a niche that exists in multitudes now but did not exist in the early 90s. There weren't many high-level languages with garbage collection in common use.

TurboBASIC was fully compatible with QBasic/QuickBasic and could generate executables .
The company I worked for in 1996 made all kinds of money from Visual Basic development for clients. We built what one would call a CRM system, we built a legal document management system, we build a CMS for early web site publishing (kinda sorta echoing wordpress), we build a timecard entry system. The rapid prototype and good debugging support meant quick time to market. And you'd still be able to run them all with the VB6 runtime preinstalled on every windows machine in the world. I recently discovered various projects of that era on my archive and was kind of scratching my head on what those .cls files meant, and chuckling over my comments from 30 years ago...
This is a great point. I haven't run into an easier visual prototyping system that's accessible and fairly close to what the end user would see from an interaction perspective. Did this way back in undergrad. Used VB to quickly visually prototype and then Visual C++ for the final project.
For smaller projects, VB6 was great. I wrote a number of tools with it. For anything large-scale, things could get out of hand quickly. I remember having to work on localising a VB4-based ERP system that was very slow, unwieldy and full of spaghetti code.
And in the 90's, what people would do is to do the prototype with VB and expect to write the app in something else. But then the executives would see it, think it's 80% done because the UI was done, and push forward with it in VB. Or it would start out as a small, niche app in VB and then grow in scope.

Either way, what would start off rationally would end up in chaos. Part of that was the language, and Microsoft is to blame there; the fix, C#, came too late. But the other, larger part was the failure of component development. And that's what people miss and that's what still remains to be solved.

When I was young and stupid I was trying to learn game development in VB6. I had a type library that provided bindings for DirectX. This was in the late 90s, so I would have been on Windows 98.

I learned quickly how SLOW VB was, but was in denial about it. I wanted to make it work, but anything that required more than a few lines of logic made it impossible to maintain even 30 fps. At the time, though, I was afraid of C/C++. I thought "Those languages are too complicated! Why would anyone use them when VB is so simple?"

Yeah...I learned.

> unwieldy and full of spaghetti code

When I was young, I saw the same until I worked with a team of professional devs and the code was clean and performant and easy to get around in.

> VB4-based ERP system that was very slow

Yep. VB4 was made for the transition from Windows 3.1 to 95. The first effort was good enough but not great. IIRC, it compiled to byte code and then a runtime would interpret it. Once VB5 came out with native compilation, the resulting code became very snappy.

Visual Basic was an incredible leap forward in programming in that it made programming accessible to much wider range of people. People that just wanted to make a computer perform a task without necessarily writing a commercial product or changing the world. Being a child of the 70's/80's, I was fortunate enough to learn by just diving in and writing Basic on a BBC Model B. I think the problem people have with BASIC is the 'B' for Beginner. It created a lot of snobbery. I remember being amazed when Windows came out because it brought a level of consistency to everyday software which meant that by and large you could get the basics of a piece of software without a manual. Before VB, there was a huge barrier to programming in Windows because for a long time it was C which, for all it's power, is not a language many people should be using. I suspect a lot of people here won't have experienced starting with an empty Window, dropping a Button on it, double clicking the Button and being dropped straight into the event handler code. It was a revelation. Especially when you realised that you got access to all of the other Windows goodies like printing, database access etc just by dropping a control onto a Form. Software development now is a long way away from the ease of access that VB gave us and is probably poorer for it.
Isn't there still Visual Basic.NET? Along with a C# version, it had all the VB UI goodies as far as I recall.

MS also had some awesome tech around DCOM in VB - transparent RRC was very futuristic at the time.

It was mentioned briefly at the end of the article, but I think Free Pascal and Lazarus are the closest in spirit to what Visual Basic classic was.

It’s the best drag and drop interface builder I’ve seen in an open source project and it’s cross platform and compiled to static binaries for easy distribution.

Lazarus is really nice.

In BASIC land, the QB64pe project has a maintainer for Inform-pe, a pretty straightforward drag & drop interface builder:

https://qb64phoenix.com/forum/showthread.php?tid=1311

Here's an example running under QB64 (though not Phoenix Edition/pe):

https://www.youtube.com/watch?v=a9pNGBaIr94

Background on the Phoenix Edition:

https://qb64phoenix.com/forum/showthread.php?tid=259

There's also Purebasic and Gambas, though Gambas isn't cross-platform...

https://www.purebasic.com/

https://gambas.sourceforge.net/en/main.html

Zooming further out you have e.g. Defold and Cerberus X, which I'm not sure about the drag & drop but GUIs are certainly doable.

https://defold.com/

https://www.cerberus-x.com/community/index.php?pages/about/

Then there are Wonkey and wxBasic...

https://wonkey-coders.github.io/

https://www.wxbasic.net/

Et cetera... :-)

Personally I'm pretty fascinated by the way these projects typically center around a traditional forum, with various software structures in place that shape the user experience.

For example, prolific library authors may be invited to publish directly to their own subforum and kind of use it as their own website, etc.

When new projects start, spin off, fork, etc, the forum is often the first part of the user experience to see created, frameworked and decorated in depth.

https://www.radbasic.dev/ <--- also an interesting take
I think Qt Creator deserves a mention as well. It's a batteries included c++ environment with drag and drop GUI building and etc.
I've always wished that MacBASIC hadn't been canned:

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

and would give a lot for something contemporary and cross-platform along those lines which was likely to stay around. Thought that was going to be Runtime Revolution/Livecode, but that went back to closed source --- I suppose I should look at Lazarus/FreePascal (but I didn't do well with Delphi back in the day).

Applescript Studio seemed promising --- really wish that that had been opened up to make iOS apps.

BASIC is ripe for a classic if-by-whiskey argument:

If by BASIC you mean the line-numbered language with single-character global variable names, with no flow control beyond GOTO and maybe GOSUB, which encouraged, nay, demanded humans crunch their own programs by removing as much whitespace as possible to fit them in RAM, then it wasn't a good language.

If by BASIC you mean the block-structured language with most modern flow control features, normal ideas about variable names and scope, which allows people to write GUI applications in a short period of time using GUI builders and easy access to libraries written in other languages, then it is a good language, but still not my favorite.

> Nostalgic for VB?

No. I actually liked VB when I was a teenager. It was very easy and (using ms parlance at the time) quick to develop small applications. For me it was not much more from a mere toy. I know some people used it for serious purposes, but I'm sure many of these uses were makeshift prototypes that eventually nobody had the time or money to rewrite. I don't think many serious and popular apps were written in VB and were maintained for a long time. I don't think it was adequate for that purpose and I don't know anyone who thought it was.

I used to do support for software developers.

I used to joke that anyone claiming to be a "Very senior VB developer" was basically saying, "I don't know how computers work".

While it was a funny way of blowing off steam (and indeed senior VB devs didn't seem to know things like calling conventions or static linking), therein lies the miracle of VB. People could make business applications without having to know that stuff.

Often enough, they had VB devs for the frontend, and the heavy lifting done in *.dll's written by more hardcore C++ devs. I guess it worked out well enough that way.

I also got a copy of VB (I think VB4) as a teenager and it was a perfect stepping stone into GUI programming. I had been writing DOS games in QBASIC for years, and some basic (heh) C/C++. But the leap to writing Windows apps in C++ was terrifying. There was so much more to learn. What the heck is an SDK and why does the Windows SDK contain like 5 trillion different functions, many of which have ALMOST the same name and method signature? What is an event? What on earth is a CORBA or an OLE? As a teen with no mentor and no resources besides books and the early web it was overwhelming.

But VB did so much of the work for you. And it was BASIC, which I already knew well. So it was exactly what I needed to understand the fundamentals without having to boil the whole ocean at once just to get a window with a button on my screen.

Agree it wasn't really suitable for large scale projects (although it got used for them anyway heh). Somehow VB apps always looked and felt "wrong", like they were a cheap knockoff. But for learning, and writing quick non-commercial apps, it was just right.

All that said, I feel no nostalgia or desire to go back.

I got into programming using GFA Basic on the Atari ST, which had:

• no line numbers

• indentation-based code blocks for conditionals, loops etc.

• string/byte/word/float/boolean variables

• pointers

• arrays, hashes and record types

• editor with auto-indenting, code folding and immediate error highlighting

• a super-fast interpreter and the ability to compile programs

• 600+ function library covering hardware/OS calls, matrices, collections etc

Really, it was an amazing language and I was very lucky to start on it, as it made the jump to Turbo Pascal a few years later relatively painless.

GFA Basic v3 Manual - http://www.atarimania.com/st/files/GFA_BASIC_Version_3_Inter... GFA Basic for Windows - https://gfabasic32.blogspot.com/p/about.html

IMHO the key distinction is between BASIC, the group of languages, and VB, the SDK. The article notes this but I think it is really the crux. In other words, did BASIC draw us in because it is a straightforward language? Or because of the power that VB provided?

As others point out, many hobbyists still use variants of BASIC...I don't think we can claim it's the most practical language for most uses, but it has its niche for sure, and is fun to use.

Visual Basic, however, while at the time representing a _fantastic_ entry point to development (at least it was for me), has been legitimately replaced by other, newer models, some of which the article notes.

"Visual Basic, however, while at the time representing a _fantastic_ entry point to development (at least it was for me), has been legitimately replaced by other, newer models, some of which the article notes."

Before VB setting up a GUI application was hard and required a lot of specialist knowledge, then VB made it easy, and its replacements on the web are making it hard again :-). I still don't know an easy way to set up a web with a database that also allows you to go into depth if needed.

I was 8 years old the first time I wrote a line of code, in BASIC on the family Apple ][e.

Did that for a few years before moving on to AMOS (also a BASIC, though definitely more modern and useful -- it even had a compiler) on the Amiga.

The summer after Junior High I started learning C on DOS (Turbo C!) and at that point I was done with BASIC.

I don't think I could have started with C in grade school, BASIC is what got me hooked on programming :)

The article delves into VB's alternatives only, but VBA (Visual Basic for Applications) is also very much alive. My brother uses Excel VBA to teach Decision Support Systems and Genetic Programming at the university. Excel provides a very capable and easy to use environment for data modeling, and Visual Basic provides ample functionality for implementing algorithms on top of it with zero setup cost.
Hard to be nostalgic for VB when your day job includes a VB6 development rube goldberg machine of multiple VMs to continue to maintain/debug a "not broke" application in 2023. It certainly feels quite broken given the complexity of the rube goldberg machine, but the business priorities to lift/shift/rewrite are always behind the priorities to keep the current users happy.
One other thing that VB did well was integrate with Windows COM components. I was working on a scientific application at the time. Just for fun, I spent a half an hour to add a button on the data grids that would start Excel and push the data over. The scientists were more excited about the Excel integration than the actual statistical analysis features I was working on.
I used VB5 or VB6 for more than a decade, and HyperCard before that. The first thing I did when I got an academic job was to buy VB5 at a discount. I loved the simplicity of drawing the GUI and then adding functionality to it. Every other tool involved additional complexity that didn't seem to add value, though I didn't explore every possible alternative.

When I started using Python, I missed being able to draw my GUI with the ease of VB, but not for very long. I discovered that building a GUI with Tkinter was nearly as easy, except for the part about laying it out visually. But I also read enough critiques of GUI's, to know that my own layouts were actually quite mediocre, and that a simple top-down layout using Tkinter's defaults was usually no worse.

So, VB certainly got me to a certain point, for which I'm grateful, but I no longer feel a desire to go back there.

There's a web-based Applesoft BASIC editor that runs in emulated ProDos and has a large library of BASIC software that can be directly loaded (via the dropdown selectors in the top-right) at https://paleotronic.com/applesoft/

There's even the original BASIC version of Oregon Trail!

For a native BASIC interpreter, there's an enhanced version of Applesoft BASIC built-in to the microM8 Apple II emulator -- it has various enhancements including 3D voxel graphics and the ability to draw in SHR (Super Hi-Res) https://paleotronic.com/microM8

I think nowadays Python is the new BASIC. It has an interactive mode; It has access to a hell amount of libraries and APIs one can imagine; It is easy to program. I'm sure it can open the door for so many kids.
What's a library? What's an API? Visual Basic was much more approachable than Python because it didn't even have those barriers.
I must admit I do kinda like it when I submit an article I wrote and find it's already here with comments. :-)
If you'd like run classic BASIC programs on your old programmable calculator (HP 15-C) you can use this compiler written in Idris: https://gitlab.com/michaelzinn/voyc
My first "language" was straight machine codes. I have then "progressed" to assembly, C and many other languages. For some reasons I've never liked Basic and whenever I had a choice I would avoid it.
Just curious, theres something like vb6 gui rad tool today for multi platform projects (like it runs in windows, linux and mac) but for a more modern language?
I recently picked up SmileBASIC for the Nintendo Switch. I haven't done anything yet with it but it's kinda wild it exists.
And people tease me for liking COBOL! (Seriously though, for a certain class of problems, BASIC is fine.)
Python ain't so different to BASIC.