Ask HN: Why did Visual Basic die?

420 points by _f1dq ↗ HN
I've been a software developer for almost 30 years. I remember using VB back in the 90's and I was thinking about it the other day and it dawned on me; despite all the advances in technology since then, nothing I have found compares to that development experience today. I would go so far as to say we've gone backwards in a big way.

Now, I'm no fan of Microsoft products but, I have yet to find a tool that can allow me to be as productive in so short a time as Visual Basic. Yet I can't help wondering what problems it had that caused them to abandon it? Moreover, why hasn't someone come out with a solid replacement?

531 comments

[ 42.6 ms ] story [ 343 ms ] thread
There's still Visual Basic .NET, is it much different productivity wise? I assume the language has changed enough from classic VB.
I honestly haven't used it because I thought they had retired it altogether. The last time I did use it was about 20 years ago and found that they had changed it enough that I wasn't nearly as productive with it as, say, VB6.
While it is vastly different from VB6, I found that knowing VB6 at least gave me a leg up on understanding what they were going for. Once I was familiar with Visual Basic .NET, I realized how much less syntax was involved with C#, while still being able to use the same libraries. I never looked back, except for my first professional job where my "lead" didn't know C# very well, but knew VB.NET. He made me code in VB.NET, but eventually I took over the project, then immediately extracted the VB.NET code into DLL files that I called from C#, and wrote the remaining application in C# until I could refactor everything into C#.
VB didn't die. It got reborn as VB.NET. Still supported, still used.

https://learn.microsoft.com/en-us/dotnet/visual-basic/gettin...

The classic VB you probably remember got end-of-lifed in 2008, but MS still supports classic VB apps.

I think that’s the sense in which it died in that if you were going to switch to .NET you would probably also switch to C#. The original VB had A GUI builder better than almost anything (even today!) but the UI builders in today’s visual studio support C# as well if not better than VB.
I once had a job offer from a big company that developed exclusively in VB.NET, after transitioning away from VB6. Both for desktop and web. So it's still out there.
And everything in that IDE was fast and super responsive. Today's IDE are more complex than ever and yet they lack in functionality that was present in VB6.0
Yes, but look how good the dark grey text blends into the black background. /s
You bring up a good point, which is that I remember most the GUI builder. Basic isn't really that great a language, all things considered. But being able to quickly design and deploy GUI apps with VB was better than anything I've encountered since.

There are things like WebFlow and FlutterFlow but those tools feel clunky by comparison.

Hmmm...I'm wondering if you have ever used Netbeans. There is a GUI builder for Java Swing. Top notch.
Netbeans java gui builder is the only builder I’ve seen come close to the vb gui builder. In fact I was a little disappointed moving from net beans to a “real Java ide” since their gui builders don’t exist or aren’t as good. But vb as a language is a lot better than Java for getting to a productive state for a novice.
The best IMO was in Delphi. Lazarus captures that spirit well today but is mostly unknown.

Netbeans GUI builder was more powerful than VB's in some ways but just made simple things complicated.

Is VB.net the same as VB ? Or it is like C# compared to C ?
Well Basic evolved a lot. Comparing 80s Basic on whatever hardware you imagine (think goto + Line Numbers) to 90s Microsoft VisualBasic (think event Händlers for UIs) is a similar jump than VisualBasic to VisualBasic.NET (writing OO code).

VB.NET is the same but so much more evolved. Also the runtime below was switched (surely for the better).

However, like outlined in other comments: VB.NET is a OOP language which handles procedural/functional code as a subset while VB of the 90s was purely procedural.

IMO, it didn't really make a smooth transition to the web. Webforms was the attempt but it was a leaky abstraction (iirc, it kept state for UI components but not variables so things got... weird) and kind of worked against the paradigms at the time (everything was a POST).
Yeah exactly, VB dying is sort of the CONVERSE of programmers adopting platforms, not languages - https://old.reddit.com/r/ProgrammingLanguages/comments/sk6w1...

- Why is JS popular? Not because it's the best language, but because it's attached to the browser, and people want to deploy apps to browsers (Figma, etc.)

- Why is shell the 8th most popular language on Github, and the 6th fastest growing? [1] Not because it's the best language, but because it's attached to the Unix kernel (specifically Linux, which has a ton of features). Software in containers and virtual machines must talk to kernels.

So then the converse is

- Why is VB no longer popular? Not because it's a worse language than it used to be (though maybe that's true), but the platform that it supported isn't as popular.

Like others said, it's probably popular for Excel and app automation, etc. But today more apps are targeting web and mobile, not Windows desktop.

- Same answer with Objective C and Swift -- people are using them to write apps for a platform. And Kotlin/Android, etc.

[1] https://octoverse.github.com/2022/top-programming-languages

Does VBA for Excel count? Because if it does then VBA for Excel has reached the"nuclear resistant cockroach" level in finance.

You wouldn't believe what sort of processes in very big banks/financial institutions are built using 10 year old VBA macros. In fact, VBA consulting for finance is a very juicy cottage industry at least in Europe to this very day.

There is a book called: Professional Excel Development. If you want to get into it. You could probably use that book to build an OS in Excel. I'm not joking.
It's no more crazy than trying to build an OS out of a web browser.
This sounds like it would be right up my alley. I'm not a professional developer of any kind but have done hobby coding on/off for years, and I'm better at excel than the average user.

Currently working for a consulting company with a whole region's health system as the client. They use excel for lots, but it's all very basic stuff. I had one of my team members spend an hour whipping up an excel form for them that auto generates letters to different departments with all the necessary information. Even some basic standard work forms, let alone any sort of automation, would help them a lot as they rely on people to send certain information that gets missed every time. They described our excel sheet as a game changer for them.

Almost no-one has access to their ERP system which is safeguarded by a certain department which is ridiculous. I'm working on a spreadsheet for their HR team to calculate bonuses for certain employees based on a bunch of variables, then auto-generating letters to review and distribute. The data from their ERP software is such a mess, but I'm making up for it by cleaning up their reports in excel. I plan to get access to their ERP system to look at what kind of reporting I can do as HR only gets a report from the system once a month. I want to help them track real time stats for hiring, etc. And curious if I'm able to connect some spreadsheets to their ERP with an API or something (haven't done anything like that before).

Anyways, that professional development for excel book looks interesting. I see the second version is from 2009 and may not even be up to date with 2007 excel. I'm sure most of the concepts would stay the same though, so I'll definitely have to check it out.

I realize excel wouldn't be considered the most professional or robust way to build applications, but since microsoft 365 seems so standard and everyone uses excel, it makes sense to me why so many organizations use it. There seems to be a lot of potential to apply some excel automation in a lot of industries, especially ones that already rely on it as others have mentioned in this thread. I use it as a means to an end when helping clients, but I also see dollar signs as I find ways to build things that can be applied to so many industries.

Make sure you build subs (functions/methods) for everything....I mean everything. Break all of your code into the smallest subs possible with clear names. Otherwise you will not be able to make heads or tails of your own code in a few months. I built a fairly sophisticated VBA project and left it for a few months, came back and was pulling my hair out. I had to refactor before I could move on, and it was very painful. After the refactor I could make changes and modify it without issue. You have to be, what seems like, over-granular. Its just "clean code" principles: the name of the sub should describe exactly what it does. If the name is too big...break stuff out into different subs.

Excel is perfect for building proof-of-concept apps and Microsoft has a cloud offering called PowerApps that use a somewhat similar "Excel concept." I have built a significant app in PowerApps...not recommended. If you don't have a development team Excel is good. Same for PowerApps. Very painful if they get big. Keep things simple.

Excel is literally 2D programming. Us mortal developers who can only put lines below one another are incapable of comprehending it, so we only get to ask the wise finance people how their enigma works.

On a serious note, I dread excel. If your PC is set to german, excel will translate the VBA keywords to german. But if you want to type them, you have to do that in english and then have excel translate them.

I don't want to accept that crap like this is the standard.

> But if you want to type them, you have to do that in english and then have excel translate them.

Huh? At least in the versions I've used I've always needed to type the commands in German.

There's even an online German - English Excel dictionary...

I wittnessed this very fuckery with my own eyes just two weeks ago:

It was an excel file created in pandas that threw an error on english commands but worked if the code included german ones.

I don't know how or why that happens, I just know I need to get away from it.

"2D programming" is normally called array programming, and it's common in scientific computing, ML, and finance. It does require a different mindset, kind of similar to SQL but not exactly. See APL, K, q, NumPy, matlab, Julia, and friends for languages that embrace this paradigm
I don't think you're talking about the same thing? The parent poster is talking about Excel's ability to spread computational steps across rows and columns (i.e. the structure of the code itself), while array programming traditionally refers to writing computations over arrays (i.e. the structure of the data)
The 2D aspect is the part of Excel I don't understand. Why does it have to be a grid?

It's great for laying out things meant to print, and making invoices and stuff... But why didn't we have code files and proper fixed layout DB-style tables as "pages" that can go in a workbook?

Maybe keeping everything as 2D as possible is a necessary compromise for the spatial thinkers out there, and they just wouldn't want it if it was full of boring linear stuff.

I love the reactivity and the concept that anywhere you put a value, you can put an =expression. But the 2D stuff seems like it's for the people who always have a sense of where things are in space.

They've done a good job of convincing people that it's not programming and they can do it, I can't really complain, because if Excel didn't exist we might all still have to use paper on a regular basis, or completely unstructured text files.

When doing calculations on paper, you can write your interim results anywhere. That's what excel copies. It's also why text in excel files will gladly overflow into adjacent cells.
The overflowing text isn't actually stored in the adjacent cells, it's just displayed on top of them. The difference is important.
That kind of thing seems very natural if you've done any calculations on paper recently(Which most business people have) but seems strange to programmers who haven't.

You would think the ideal would be to allow everything Excel currently does, but also have some other model with more separation of code, data, and visuals, like node-based programming and separate cloud-synced pure tables.

Excel can almost cover a lot of "real programming" use cases, but not quite. The upgrade path seems to be Excel to Access to Custom app, rather than Excel to Excel but with more of the advanced features.

This is why I'm fanatical about using proper Tables in Excel wherever possible. Any db-like kind of data is first turned into a table, then I work with it using whatever formulas, code, or tools I need to. Half the time this means dropping into PowerQuery to do more transformations on the entire set, then finally using Excel formulas or pivots as needed.

But I really like Excel for allowing me to just plop stuff down wherever when I'm brainstorming something, or just want to do a one-off calculation before I quit-without-saving.

It’s because Excel sheets are often used like forms to fill some fields in, with labels, and dedicated formulas in the background. And sometimes part of that form is a table, but also graphical charts etc. on the side. Excel sheets can be designed almost like in a layout program, also to be suitable for printout. People like that freeform spatial-thinking flexibility about Excel.
It's amazing as a layout program for sure, as long as you're not going to interact with it much on mobile.

Then it's pretty bad but still better than writing some custom software like people would probably do without it.

> Why does it have to be a grid?

Because we have been doing it that way for almost 4,000 years!

https://en.wikipedia.org/wiki/Spreadsheet#History

Humans have organized data into tables, that is, grids of columns and rows, since ancient times. The Babylonians used clay tablets to store data as far back as 1800 BCE.[16] Other examples can be found in book-keeping ledgers and astronomical records.[17]

Since at least 1906 the term "spread sheet" has been used in accounting to mean a grid of columns and rows

Everybody who replies to you, I think, has gotten it wrong. What you're asking is not why any grid, but why an infinite un-malleable grid.

What you want is the paradigm of Numbers from Apple. Their office suite is good, and it has the benefit of being opinionated. They're not trying to ape Microsoft, like all the open-source projects.

Excel is a quite powerful mix of declarative programming (formulas in cells), and imperative programming (VBA procedures, event triggers, etc). If you're not ready for it, it'll break your brain.

The main danger in Excel is that any area of a sheet can be treated as a pseudo table.... except it really isn't, and you can inadvertently sort some fields, while leaving the others alone, effectively scrambling your data.

I have grown a respect for Excel in the last decade or so. It's slow, it's clunky, and it's far from perfect, but I think it's among the most approachable language out there.

A lot of people using Excel, even some of the more advanced stuff like if statements and logic, don't even realize that they're writing programs, and I think that's genuinely awesome: people are able to utilize the power of programming by accident.

I still use spreadsheets all the time for small number crunchy things, just due to how it's "reactive by default". I find it's actually really useful to immediately see everything update after changing a value. Admittedly, I mostly use Google Sheets nowadays simply because it's "good enough" and much easier to share with friends. Could I write a program to do all that number crunching that performs better? Obviously yes, I could start a new Julia project and mop the floor with Excel or Google Sheets in regards to saving cycles, but that would take me 20x longer and I'd lose all the nice features of a spreadsheet.

Granted, this is coming from a strictly Anglo-American perspective; I cannot speak to Excel's ability to use other languages.

Gnumeric is actually a good excel. The stats routines are shared with R so if ever someone demonstrates a bug, it is fixed!

Free, fast, accurate. Pick any three!

http://gnumeric.org

I find a spreadsheet (Google Sheets will do) is a great thinking tool. Any thinking will involve probably some maths and some tables. Excel is built for both.
> I cannot speak to Excel's ability to use other languages.

I find it's an overblown issue. Those of us that prefer functions in English can just set Excel to use it. When someone sends you a file it displays in your chosen language. And having the default being localized makes it usable for the majority of people who don't speak English.

I can't understand why so many finance people won't just learn SQL.
SQL is not a replacement for Excel.
Not a replacement, but it should be used for sharing data and reviewing your logic. Table joining is just plain easier in SQL.
I know of a restaurant franchisee with 170+ locations that uses a home grown ERP system built in VBA on top of Access by an accountant about 20 years ago.

I once had to update it to optimize (minimize) front-line staff working hours so the company didn't have to pay health insurance for those employees. A real nightmare of a task in more ways than one!

My first programming job in the 90s while I was still in college was building systems exactly like you describe (and they were as poorly built as you think hah). I worked for a small IT programming/consulting shop. We did small jobs like this in town in addition to installing networks, IVRs, etc... while working on larger software to sell (which is an entirely different/crazy story that involved burning CD demos and using a hand 'stomper' to label and then mail them out).
This post has more information than you realize.
What do you mean? Are you suggesting you can figure out who the company is?
I have a guess, but don’t want to offend the big cheese there so I’ll just see how this plays out.
In high school I got a gig rebuilding a pre 2000 Access DB + VBA front end in office 2003ish due to some kind of incompatibility that was preventing them from upgrading their PC's.

It was a chemical safety database. It was used to identify chemical risks and track the storage of the chemicals.

I pray near daily that someone else came along years later and rebuilt it in a modern language.

Ah yes, where testing just means "I hit save on the live database file and didn't received an angry call from accounting 2 minutes later"
One of our clients runs everything on access; from the office security, factory automation, ERP, crm, hrm, cms and more. We are moving them to a cloud platform that will allow them to not change one thing but save them a fortune not having to deal with the many issues access has.
My brother is a mechanical engineer and apparently, there's lots of Excel VBA in traditional industries as well.
I can confirm this: I know several mechanical engineers that do mission critical-type systems (think "power plants"), and they routinely use Excel VBA for calculations.
And it's often the best tool for the job
Other than the known calculation bugs in excel that MS refused to fix for at least a decade and probably still 20 years later.

http://www.pages.drexel.edu/~bdm25/gnumeric.pdf

http://www.phusewiki.org/docs/2009%20PAPERS/SP06.pdf

http://www.tandfonline.com/doi/abs/10.1198/tas.2011.09076

It is funny how you talk tjat Excel is bad and the examples just dont work.

Also lack of accuracy in calculating some complicated statistics that "nobody" uses is not really a calculation bug.

Also most of those come from the fact that Excel has a precision of 15 digits.

My fav was when ms announced they'd paid an academic to fix =rand(), ignoring all the others.

Let's see it. Fill the visible part of a sheet with it, conditional format the cells, red for negative etc.

hit f9 to recalc and see a big bunches of cells turn red. Fixed random function to return a random number between 0 and 1.

I haven't worked on gnumeric for a long time - examples came from gnumeric.org

Excel was really bad for everything beyond basic arithmetic, way beyond the important issues with floating poiny listed here https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.h...

Anyone seen anything about ms actually fixing the bugs? I haven't.

First rule of Excel development: Don't use sheet formulas, stick to VBA and apply normal dev practices
what proportion of excel use does this? 0.000000001% or not as much as that in your view?
Don't know, but the majority of sheets I've been in contact with (trading desks)
> My fav was when ms announced they'd paid an academic to fix =rand(), ignoring all the others.

I am not sure what that means.

Excel keeps all the bugs for backwards compatibility. So the sheets made years ago still provide same results. In few cases the depreciated some functions -> the old ones still work, but are relatively hidden and the users are encouraged to use the new ones.

They probably should do the same with the statistical functions that supposedly have problems due to rounding. But that cannot be fixed - precision is up to 15 digits.

Also if you wanted an article that talks on Excel precision, you can start with the wikipedia page:

https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft...

Excel has many problems, but you linking to few website that supposedly prove that "Excel bad" - but at the same time - those exiles simply dont work, is somehow very funny.

it's the web. links die. There's enough there to find the papers if you care. Which you clearly don't.

>Excel keeps all the bugs for backwards compatibility

They /fixed/ rand(). Announcements. Fanfare. The fixed version returned numbers less than zero.

yet again excel's calculating issues go way beyond double precision floating point truncation.

My dad works in Aerospace (though admittedly more on the managerial side, but he still tries to stay technical), and he does all of his initial programming in Excel first, and then will port it over to Matlab if he needs something more code-like.

I've been trying to get him to use Julia for that second step since I absolutely hate Matlab, but I honestly don't fault him for using Excel in the initial phase.

So true!!! :D :D :D

If Excel stops working, financial institutions around the world would collapse.

Python was just added to Excel so there's not much chance of that
Really?? Oh, wow: https://techcommunity.microsoft.com/t5/excel-blog/announcing...

Actually that's really awesome, I think.

My goal is basically to never touch Excel again. But, I have to admit - that 2D mixture of data and code called "a spreadsheet" is honestly a pretty cool programming paradigm for a lot of tasks. It can be horribly abused... but so can everything.

Healthcare and insurance too! I transform into some glorious magical elf when I volunteer to do the VBA tasks nobody else understands or can lower themselves to do.

You can make Excel do some real wacky stuff. I have a spreadsheet that actually calls out to exec() to run a curl POST on commandline and consume REST API endpoints, parse the results, and update the spreadsheet -- why on earth?? because the API was ready but the web app was delayed. I was the fix. :D

Pretty sure you can access a REST API from VBA without resorting to exec()
It only works with toy examples and then stops working. For reasons unknown, as it should work.
Never had issues with the standard VBA HTTP Interfaces
We support both mac and pc excel -- the mac VBA is seriously gimped.
Before VBA for Excel, I wrote numerous macros, including ATAN2(x,y) before there was an ATAN2.

Afterwards, forget it. Maybe one.

Pre-face: I write a lot of VBA

VBA is kind of the result of people only - ONLY - wanting to use Excel for everything. I work with those people. They have mastered excel, but have little to zero interest in learning anything else, and would rather see the world be built around excel.

So you (like me) get tasked with building applications and forms in VBA.

I was STOKED when MS announced Python for excel, but alas, turned out to not be what I (and many other) wanted.

What's the medicine? Dunno, hire analysts that are more open to using other tools . Don't get me wrong, I love using excel for many tasks - but damnit, it's not the only tool.

The company I worked for in college was in the "VBA for everything" world. It was like the Renaissance when they started experimenting with Power Query for some use cases. (Which, honestly, was still a terrible language. But slightly more maintainable than VBA.)
VB is not VBA, VBA was a relatively small subset.

I might be mistaken but wasn't VBA brought into Excel as a familiar element from the VB world?

It is true though that some of the more purer or more initial concepts of VB likely live on in the VBA subsets of Excel.

And Access.

VBA works fine if you want to create macros and automate various things for your spreadsheets, but the problem is that the end user want / demand full-blown applications layered over their spreadsheets. The last thing I worked on was a CRUD -interface where the user could read and write data from their spreadsheet, to a azure DB.

It wasn't difficult, but at its core, I had to do it because the end users didn't feel like using some other interface - they really didn't want to leave their excel spreadsheet.

I used it as a coding layman in 15-buck-an-hour "admin" (clerk/secretary) roles to automate some processes that my predecessors had done by hand. Mostly just copying entries from a spreadsheet to company Excel/Powerpoint templates and printing them without killing myself copy/pasting or going into the save/print dialog 50 times. It did its work as something any old schmuck could harness to save themselves from carpal tunnel.

To that point, I imagine that there are a LOT of admin jobs (or, at least, a lot of tasks) that could be almost completely automated away. It's probably not even a capability issue, but one of job security on the employee side and a lack of *waves hands vaguely* on the employer side.

And not just old school financial institutions. Jane Street used to run out of an excel sheet. Many hedge funds still do.
10 year old you say.... office 97.
I can't imagine Excel without VBA. I tried Google Spreadsheets with js and it sucked big time.
I keep saying this to all the depressed new and old programmers who believe you cannot make money anymore and it’s all over; there are billions of lines of legacy shite running the biggest companies in the world. Not only Cobol and Fortran, but excel/vba, access, fox pro, and, indeed, old php. Companies have to choose, every year, to rewrite or maintain. I do many projects focusing on maintain; example; my last client had a quite to rewrite his systems in some modern crap (next/react) for a little over 8 million usd (that’s the estimate; not a fixed price and of course no guarantees by the consultancy corp quoting it) or, we will keep their ancient php and Java running for 25-50k/mo (few hours work per year to do that with Docker). I have a very low tolerance for rewrites so we go in hard against companies offering them: we make far far more profit than any of them; we run well over 50% with far less risk. Once I discovered containers (chroots in the late 90s and now docker etc), I knew rewriting things is never needed.
>I have a very low tolerance for rewrites so we go in hard against companies offering them: we make far far more profit than any of them; we run well over 50% with far less risk. Once I discovered containers (chroots in the late 90s and now docker etc), I knew rewriting things is never needed.

Vernor Vinge figured this out 25 years ago. A Deepness in the Sky depicts a human society thousands of years in the future, in which pretty much all software has already been written; it's just a matter of finding it. So programmer-archaeologists search archives and run code on emulators in emulators in emulators as far back as needed. <https://garethrees.org/2013/06/12/archaeology/>

(Heck, just today I migrated a VM to its third hypervisor. It has been a VM for 15 years, and began as a physical machine more than two decades ago.)

Are you talking about VB the language, or Visual Studio the IDE with its awesome GUI builder for WinForms (and not so awesome ones for the subsequent Windows GUI layers, forget what they're called).

VB is still around but desktop apps in general (and thus VS's GUI builder) largely gave way to web technologies invented outside Microsoft. The dev experience is definitely worse though. Visual Studio was sooooo nice and integrated.

I don't think this is really VB or NET's fault, Microsoft just kinda missed (or failed the fight against) the web transition. They were busy trying to make it coexist with Windows with seamless downloads like ClickOnce but ultimately simple web pages won out for their reach and ease of use, then mobile app stores came along, and now desktop apps are petty much dead except for niches.

> web pages won out for their reach and ease of use,

Your definition of "ease of use" is amazing. /s

Heh, point taken. But I'd say overall it's easier for grandma to go to Gmail to check her email than have to figure out what this "Netscrape Communicator" is, install it, set up her "pop three" from her "eyesp" and then deal with a million viruses.

Yeah, the web ain't perfect, but it did win... ads got worse, though =/

I remember, in some sense, Google (and also a group of anti Microsoft developers) encouraged web development as a strategy to break the Windows software monopoly.

So it's not that Microsoft missed it, it is that a big shift happened and it was specifically targeted against them. There's nothing they could have done, except to embrace it, and they did. Visual Basic Script existed and was very popular for a while. IE4 ruled the web.

The shift to web based technologies is a Google and an open source win. And it is also an inferior experience. That was the price we paid =)

Even in the IE4 days, Microsoft was still very much "we'll only do as much web as necessary, but we can't lose our Windows fort... how can we sabotage this effort?". They were in full-on EEE mode[1] then and wanted to subvert, not join, the web. JScript, ActiveX, ClickOnce, IE's idiosyncracies, etc. were all Microsoft's own efforts to get around the webification of everything. They lost, not just because of Google but also Netscape, Mozilla/Phoenix, eBay, Craigslist, Amazon, Match, MapQuest, etc. Nobody wanted to build desktop apps anymore once they could effortlessly reach everyone via the web without having to be a Microsoft vassal.

Even ASP and IIS etc. insisted on having its own stack -- superior in some ways, but way less compatible and more expensive. Again their own doing. Free/cheap won out, I guess :)

[1] https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguis...

(edit: how the heck do you actually properly make hyperlinks on HN? I always struggle with this)

I got the feeling that a lot of the corp/small business apps that used to be developed in VB and deployed to PCs have been replaced by Web-based apps.
VB6 morphed into VB.Net but then the web took over and anything that could be accomplished as a desktop app was replaced by a web page.
It’s simple: Corporate internal app development (mostly CRUD stuff, as you’d expect) was the bread-and-butter of VB, and it moved wholesale to HTML & JavaScript.
>> I have yet to find a tool that can allow me to be as productive in so short a time as Visual Basic.

For me: Delphi or Lazarus

VB died because of .NET and VB.NET. The syntaxes were similar, but VB.NET was much closer to a "real programming language" in feeling and complexity than VB was, and that's not what anyone who used VB actually wanted.

Microsoft was more interested in developing .NET and C# to battle Java, and less interested in developing and promoting VB, their own successful and original product.

(comment deleted)
I wonder the same thing about Apple's HyperCard. I used HyperCard a ton at school and side-projects. Visual Basic was a firmer and better step-up from that imho, less so as VBScript when it came to browsers.

As per other comments VBA is alive and well and I did many consulting gigs using that in Ireland in the late 1990s. I hope, in the name of all that is holy, that code isn't running still.

I wonder about HyperCard as well. I never used it but, from everything I've ever heard about it, it was also an amazing developer experience.
My personal reason, which is probably unique:

VB 1.0 was extremely buggy, making it unusable for my use cases.

VB 1.1, which fixed the bugs I was encountering, was a paid upgrade.

I switched to Linux and never looked back.

VB 5 and 6 were where things worked. They both had native compilers.
If Microsoft had put more effort into Internet Explorer and VBScript (https://en.wikipedia.org/wiki/VBScript), today's web could look very different, and in some ways better.
How many incompatible languages called VB-something did Microsoft create? There's at least the classic Visual Basic, VBA, VBScript, and VB.NET.

Although to be fair, the distinction between the language and libraries has never been very clear in BASIC variants.

Although not starting with VB, there's also QBASIC, as well as another BASIC dialect I believe Microsoft bought in their early days. QBASIC isn't a drastically different language than Visual Basic, VB just added graphical components.
I can see where you are going with this train of thought, but Microsoft really blew it when it came to providing too much functionality to the web before having a fully formed plan. The amount of security issues was a precursor for basically every web based plugin technology that came after it (ActiveX, Java Applets, Flash/Macromedia Director, Silverlight, etc.). I'm not sure on Silverlight vulnerabilities, because I had been forced to learn ActionScript 3 with Flash, and it left a bad taste in my mouth. It's very possible that Silverlight wasn't full of security issues, and was a good technology that was just killed along with general plugin technology when Apple stopped supporting Flash.
Visual Basic 6 was very productive - yes. But it was considered by many to be a toy language (it didn't support class inheritance for one).

VB.NET - at least initial versions - was about productive as C#, thus there was no incentive to use VB.

The thing that made VB6 super productive was it's form designer. The .NET successor - WinForms designer - wasn't nearly as fast and capable (to this day, really).

Microsoft accidentally killed it moving to .NET and the increasingly stupid GUI libraries they offered up. Silverlight, 32 bit native, winforms etc and etc.

Web development meanwhile went bonkers and VB was a poor cousin to C# very suddenly.

Its a shame, VB was not for purists but it was very productive.

Do not say WinForms is stupid. The rest I am more than okay with.
I don't think they did. They said increasingly so. They're just getting at Microsoft continually re-inventing the wheel and then abandoning that wheel when it comes to their GUI libraries. There's WinForms -> WPF -> UDP -> WinUI, Xamarin Forms -> .NET MAUI, and then the evolution of Avalonia and Uno as third-parties trying to step in. And all of those options still exist! You literally have a minimum of 8 GUI options, at least on Windows. There are of course more by external parties.
ASP .Net Core comes with it's own host of options:

https://learn.microsoft.com/en-us/aspnet/core/tutorials/choo...

If I am doing desktop development, you can bet I am still using WinForms, which are relatively easy to debug (if not as pretty) as WPF. I am usually building internal tooling, without paying customers, and sometimes for a user base of just me.

Agreed, .NET (well, C# specifically) was my go to for anything with a GUI until they tried moving on from Winforms/WPF and the way forward seemed to become a large undefined mess.
There's still no better GUI toolkit out there than VB6 that I have used. It was amazing.

Problem is a lot of apps that would have been traditional LOB apps written in VB/C# have moved to the web so demand isn't there's clear advantages to C# as a language over VB.

Netbeans Java Swing GUI builder is far better. That's without factoring in the enormous third party component landscape that is available.
Oh man, I remember building GUI apps with it in college. My professor only let me use it on the condition that I could fully explain what every component was doing. I could. I took the generated swing code and added a massive amount of comments, but even having to do that I was still an order of magnitude faster than every other CS student without. A lot of my peers were super jealous that I had so much free time, but they weren't willing to invest time in their tools (gdb, perl, regex, sql, etc). It was quite the force multiplier.
I think for a lot of purposes, the internet kind of took over.

VB was great if you needed to do something limited to a single machine.

These days, we want data to be available across machines which requires using a network, and the default network is the internet.

If I'm going to be using the internet anyway, I can knock up something in HTML + JS + firebase/whatever data store, and have an application that works on any platform, and is accessible from anywhere in the world. You might need slightly more technical knowledge, but not so much that you can't have a simple CRUD app running in a day or so of work.

I can write HTML/CSS/JS and a few back-end languages like PHP in my sleep but there's no way I could hand-code a web app as fast as I could a desktop app in 1997 using VB.

I would LOVE it if I could, though.

I've never written VB, but I can bang out a React UI in jsxstyle like nobody's business.

You've piqued my curiosity.

Check out Lazarus and FreePascal
Development in VB6 was basically dragging and dropping controls onto a window or dialog box, setting properties on them, and then filling in snippets of code to tie things together.

And "control" here means anything from simple labels and buttons up to database connections and embedded COM objects.

Literally anybody could bang out a simple Windows .exe like nobody's business.

It would have been really cool if Microsoft included it in the OS like they used to do with QBasic.

Same. I’m very good at cranking out Tailwind + React UIs, but nothing touches the productivity I had with VB6 or even early C# and Winforms.
Have you tried https://anvil.works? (I'm a founder!)

It's quite explicitly VB-esque (only using Python), and having a single paradigm rather than stitching together several different programs speeds things up even for those who can write HTML/JS/CSS in their sleep. (And of course, you can drop out to JS/CSS/HTML if you want.) Overall I think the development speed is comparable to VB6.

It looks significantly better since the last time I checked it - well done!
Reminds me... maybe I can finally build that app I couldn't be bothered to build before...
I tried it out and followed the entire tutorial, but the compulsory 'anvil' branding on every free published app kinda killed it for me.

VB never had that.

But VB also didn't host web apps for you including databases, user accounts, email etc. I think self hosting is an option with Anvil by now, in which case you may be able to remove the branding.
I started with Delphi 5 and completely share the sentiment of OP, development experience (mainly when building GUIs) was way better back then. For anyone who feels similarly I can only recommend you to look into Anvil. It is a fantastic tool, under active development and with a helpful and supporting community. It allowed me to build web apps by myself that I previously thought about hiring someone for. Very enjoyable experience and of course the fact that I am building web apps instead of desktop apps is a big plus in many scenarios today.

Great to see you here, Merdedydd! I was thinking about sending this thread to you. I discovered Anvil in a similar thread years ago and am very happy I did.

meredydd, can I host my own instance of an anvil app?
> VB was great if you needed to do something limited to a single machine.

VB6 used to work with oracle across network.

Yes, the common 3 tier app at the time with ODBC to connect to your databases.
More common, in my experience, was the 2 tier app where a (very) fat client directly talked to the db, and all the businesses and data access logic was intermixed with UI event handlers and some stored procedures.
Same here, we did a VB6 project that allowed the customer to chat with their remote mortgage advisor using a webcam, around '98.

The client was supposed to go to a local branch of the bank and then connect to the banks HQ.

I have also wondered why the software industry with the arrival of Internet went away from all these excellent tools. Not just VB6, but remember all the 4GL and model driven development tools. All gone and never really replaced.

It was all about the difficulty of actually installing software on all those desktops. The web eliminated all of that.

And it was so easy for ODBC and other configs to get trampled on by users and installers running amok over existing settings.

Everyone was root on their PC in those days. The opportunity for users to screw things up accidentally was everywhere.

Well, that, and all those wonderful apps were inherently client-server architectures, with the business logic on the client. Nobody ever built a properly factored, with stateless layering, and high-end scalability on such an architecture. Just trying to keep 1000 clients in sync, so your business logic remained consistent could drive you to distraction; in a truly distributed product with tens or hundreds of thousands of clients, it was impossible.
Nothing about two-tier architecture prevents you from keeping clients in sync, scaling up or implementing business logic.

Consider that scaling your database has to be done anyway. Your web app will bottleneck on the DB too. The only difference is number of connections assuming you keep them open (but there are multiplexers for that, and many business apps don't need them anyway, RAM is cheap enough).

With stored procedures you can implement whatever logic is needed for maintaining your data.

Of course, if you want to twist VB, or Delphi, or any of the client-server construction sets into pretzels, you could build a well-factored system. And yes, your data has to scale to your system size, regardless of the architecture. But if you use any of those tools (the article was about VB, after all) as designed, you cannot escape the problems I outlined. Your business logic will be either entirely on-client, or split between the client and the database, and it won't be stateless. You will have database connections and transactions spanning thousands of client processes directly to the database, with all the scaling and contention problems that introduces. And you will have an update problem, because updating business logic requires you to push changes to thousands of client machines, which may or may not be available and updatable when you go to deploy your new version.

Can you still build a system, and operate it? Sure. A lot of us did. For small to medium scale systems, it was manageable. But there is a reason we abandond 2-tier client server 20 years ago. While it made building CRUDy business applications vastly easier for the developer, it was a systems nightmare.

(It also led to crappy user experience for any application that wasn't itself inherently a CRUD record keeping job, because it inhibited application designers from thinking of the application as anything other than CRUD. But that's a different argument for a different day).

If you have an ability to force web-style updates on the client apps (which a tool like Conveyor supports, see my other posts or profile), then all you need is a database that supports many connections. You can then atomically upgrade all the clients by e.g. writing a version number to a db table that's checked as part of each transaction, if the version doesn't match the app proceeds to upgrade itself before continuing (unless it's marked as a soft update, i.e. not worth interrupting the user for). The versioning issues aren't much different to the ones you face once you decide to have multiple web servers and rolling upgrades.
I'm happy for you if that's working out in your enterprise. It was not our experience in the time frame we're talking about (VB was sunset over 20 years ago), and frankly it was not our experience 5 years ago - when we were running skads of applications on Citrix servers so we could have absolute control over the "client" runtime environment, and have the actual on-the-glass experience be thin client.
IIRC back in the day, Windows could not replace a file if the file was open by any process. So an application could not update itself, without doing something like launching a separate "updater" and then exiting.

Another thing people tried was putting the VB app on a network share so it wasn't installed on each machine, but I think all the ODBC and other config still had to be local on each client.

Powerbuilder apps were similar.

Yes, back then it was definitely a huge problem and one of the big reasons for the web's success.
My mid-1990's employer had a solution for the installer dilema.

All of our VB programs, com objects and assets were loaded into a MS SQL database table. When our generic launcher program started it would query the database, figure out what app the customer had purchased and downloaded the necessary objects (if the cache was stale). If we accidentally uploaded a bad version, a rollback to a previous version only took a few administrative clicks.

A good part of my job was to make sure that the companies domain structure and network settings were sensible.

No disagreement about how the web is still easier/cheaper to administer from a centralized point.

Yep, this is the right answer. I was there, 23 years ago programming VB6, making apps that were wrapped up in InstallShield, burnt to a CD, and then mailed to our customers. We did do some web things with Apache and some C++ apps interfaced via CGI. But it seemed that overnight Java and Servlets came about and made CGI-bin obsolete and slow as molasses. Add in JSPs and Struts and you had fully functional web apps that were fast and scalable.
Don't forget that VB.NET was a thing. I worked on a web-based client management system that used VB.NET on the back-end.
(comment deleted)
It still is a thing. VB.net is a CLR language just like C#. You can use a tool to translate from one to the other and back.
Yup, that was also my take. I used to write 'on box' and you communicated between components using Com+, and when you switched to http, there was no reason to stick with just VB6.
Does no-one remember VBScript and Active Server Pages (ASP). It was Visual basic as a server-side language, positioned to challenge PHP.

VB made it to the web :-)

Oh yes. And VBscript in the browser as well (as long as it was IE). One of their attempts at browser "lock-in"
If you installed ActivePerl or ActivePython (remember those?), IE would also let you use them in the browser too with Active Scripting. It was an ActiveX thing, so only for IE.
I doubt MS was even aware of PHP 1.x when they released ASP back in 1996. Hardly anyone else was aware of PHP before 3.x either.

By the time I found it, PHP 3.x/4.x was such an improvement over classic ASP / VBScript, that I think MS would've done a better job if it was positioned to challenge PHP :)

You might need slightly more technical knowledge, but not so much that you can't have a simple CRUD app running in a day or so of work.

Well that’s quite a professional bubble you live in. Web dev is truly a frog in a boiling water.

If my VB/Delphi/Access/PIC buddy who made various apps and hardware back in the day asked me for a platform and I advised him to use what HN praises as “simple”, then pretty sure he’ll never contact me with it again.

I mean, yeah, CRUD is not hard to do by tutorial. But he will laugh at my CRUD explanation, because he never ever thought about implementing input <> data channels. It’s akin to positioning heads above a cylinder to fetch a database record.

I said the app was simple, not the stack.

Along with the rise of complexity in tooling, the data has risen in complexity and quantity, as well as the importance of getting it right.

Back then, a dentist, lets say, could get by with a cobbled together VB program for patient scheduling and CRM. Now patients and doctors expect a system that manages digital records in a HIPAA compliant way, can text message reminders to the patients, allows self service on the web, and automatically submits billing details to insurance. Plus, it should be pretty, with all sorts of cute animations!

I’d like to learn how the rising complexity of tooling allows for text messaging, compliance, self-service or mailing(?). Right now this idea doesn’t sound particularly reasonable to me.
You can run a web server for self service, use a job queue on that same server to schedule actions sent to api providers for sms (Twilio) and letter mail (postgrid), integrate with insurers that provide an api if you don’t want to send papermail. All on a single machine, or virtual machine running JS, and serving JS and HTML.

Compliance is a matter of ensuring that you are following correct practices, and possible audits.

In exchange you get a program that can run on any of billions of devices in seconds without having to worry about local deployment.

If all you want is something like VB, you can opt for some of the low-code/no-code options mentioned elsewhere that are built on top of web technology.

I’m not saying that for what VB was used for, it isn’t a better solution. I’m saying that we ask our computers to do a lot more than we did 25 years ago, and tools like VB can’t do as much as the easier to write languages that have emerged in that time.

There was a parallel universe where VB was going to be a web scripting language.

That idea got hamstrung by two things:

1) It turns out cross-platform web compatibility was way more important than anything else, so nobody wanted to write web pages using vbscript if that meant Netscape Navigator / Firefox couldn't read them. MS wasn't willing to either let the language go into the public or subsidize developing the engine for other browsers, so the web dev space just kinda... Didn't care

2) It may have hung on as a scripting language for IE-only stacks, but the Microsoft antitrust lawsuit (and subsequent appearance of Chrome on the scene as a better enterprise browser, with its stability improvements and process sandboxing) ended that era.

HTML, CSS and JS are not the best pieces of technology, otherwise there would not have been a whole industry of tools that allowed you not to touch them with a ten-foot pole. But we are stuck with them at least for a while.
None of the VBA apps I ever saw needed the internet. They were mostly internal apps that connected to a corporate database over the internal LAN for stuff like "keeping a register of who has checked out which van".
I used VB all the way from 1.0 to 6.0.

And when VB.NET came out came out in 2002, that was exactly when all the types of GUI-database projects VB6 was used for professionally, started being built in PHP/MySQL/HTML/CSS instead. The switch would have happened anyways, but the fact that VB.NET wasn't backwards-compatible made it really easy to switch since you were going to have to learn/build something new anyway -- otherwise there probably would have been a somewhat longer transition period. Microsoft really shot themselves in the foot (but the web benefited).

And then on the hobbyist/personal side, that's also basically when casual developers switched from building fun Windows apps to building fun websites.

So I'd mark it up entirely to web programming replacing it on both sides.

As for what a replacement might look like, Google had created App Maker (2016-2020) that got replaced by AppSheet (2020-present), which is the closest I've found for the drag-and-drop GUI/database aspect of VB6. But those have been very much geared towards business development, not kids learning programming. Maybe some parents here can chime in on what their kids are learning to program in?

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

[2] https://en.wikipedia.org/wiki/AppSheet

Good explanation. Hobbiest switched. Because IIS and Asp.net run very well with VB.NET. but who could afford that compared to PHP.
The bigger pain point, from memory, was having an ODBC-compliant driver so the OS could actually talk to your DB. That basically meant MSSQL if you wanted to co-exist happily with early dotnet.
Databases access was a mess then in general. But yeah, completely agree with your sentiment. PHP was just so much easier with common databases.
DotNet is meant to be the replacement. The big problem though is that MS keeps failing to make a GUI framework that is quick-and-easy as VB forms were. Winforms still exists, and it's only a bit clumsier than VB forms, but it's very old and not modern. The more modern .NET gui-frameworks are much less user-friendly.

Linguistically, I think the successor to VB is Powershell. It's the same mashup of inconsistent flags that let you swap between "this is a serious language" and "I'm smashing crap together" with tons of unexpected weird behavior, but instead of being a quick-and-dirty GUI app maker, it's a Shell. Hardcore focus on being easy and productive but unforgivably warty.

As for VB itself, VB.Net just didn't offer much value distinct from C#, so most people who were coding in VB switched to C#.

So if you're an old longbearded MS LOB programmer who started before .NET, and you're still working in Microsoft LOB shops, you're probably doing similar stuff but with C#. But realistically, you've probably also switched to Web.

And the lack of the VB-level ease-of-use in web technologies is a whole other story. All the hoary mess of using a document-engine for a cross-platform application server makes it pretty untameable.

For a while there we had WebForms, which was used much like WinForms, but generated the controls in HTML, CSS, and JS. That technology was very much not fun to work with, for the few projects I used it on. I built a full website using Sitecore CMS back when it was fully WebForms, and having come from PHP for web development, it was painful. It tried to paste over the way the web worked, which would have been fine had I never touched web development. Once ASP.NET MVC was introduced, things got much better for .NET developers.

I actually learned VB6 alongside Java in school, so migrating to VB.NET was fairly easy for me, but once I saw C# I jumped ship immediately. I turned my existing VB.NET code into DLL files and called them from C# from that point forward.

Not sure how accurate this is, but: https://www.youtube.com/watch?v=YqxeLodyyqA

Visual Basic's popularity peaks in late 2001. Exactly when VB .NET was launched. Then it drops like a rock. In my memory, .NET overcomplicated VB and yet still felt like a kids toy.

VB (and BASIC in general) has a legacy of being a procedural language. In the late 90’s and early 2000’s, there was a massive push to leverage object oriented programming and design. The births of Java in the 90’s and then C# in the 2000’s were clear catalysts to abandon procedural programming.

Of course in .NET VB has nearly all of the OO capabilities that C# has, but I think most developers just decided to go “all-in” on object oriented programming and learn C# and graduate from their procedural past.

A lot of colleges taught Java and moving to it or C# in the workplace was a much more natural process.

There are BASIC alternatives and they are fairly strong offerings, but I think OO and functional programming are the standard today.

That means python, Rust, Golang, Ruby, C#, and Java are the mainstream languages.

Honestly, I was never a fan of Basic but I still don't understand why there isn't a GUI app builder as productive as the VB6-era tools were for any language.
Devs don’t design user interfaces anymore. There are separate disciplines for user experience, graphic design, front-end development, API development, and data storage choices.

There’s no reason to have a drag and drop UI builder anymore.

not everything is a team effort, and the desire espoused all over this thread for an equivalency clearly demonstrates that there is a 'market' there.

when some small developer is making a silly one-off app for a mom&pop local store to facilitate a one-off kind of task they aren't interested in handing off work and splitting meager profits. not every company has the whole "front-end/back-end/devops/ux/design/management" paradigm going on.

the reality is that microsoft , a fairly litigious group of people, abandoned a concept for their own reasons; and the rest of the market doesn't exactly know where they can step in that minefield of offering equivalent features to a piece of software that is still on life support by a very very large/valuable/litigious company.

There was a time when shareware ruled the world before the World Wide Web. VB was king. Even corporate America was all in on VB, Powerbuilder, and Delphi.

But once the Internet truly arrived and building complex, distributed, highly interconnected systems became normal, the tools were only going to get more sophisticated.

You should tell my employer, state Government, this.
I’ve seen an upswing in state government software engineering sophistication. Mayhaps it hasn’t reached you yet.
You can still build WinForms apps using C# or VB.NET, and they will even run on the latest .NET (v7). I built a little WinForms GUI utility that takes a CSV file with mappings from old URLs to new URLs, and generates a rewrite map for use in IIS, when rebuilding a website. I just place all my logic in a separate project so I could replace the UI in the future with a web interface or WPF, etc.
We had plenty of amazing paradigms/development environments/holistic experiences which we've regressed from:

- LISP environments

- Smalltalk environments

- Symbolics genera

- Mesa and Cedar

- Apple's Newton

Besides things like Oberon...

vb didn't die, it evolved into vb.net, but the market place has shifted to C# for the most part.

What has died, is the maturity of microsofts tool set, they keep changing their concept/design/platform.

silverlight/wpf/uwp/winui2|3/etc..

vb was around for nearly 2 decades and had a very mature tool set, everything since then hasn't gotten nearly that sort of life span or dedication to tool sets.

Developing in visual studio now, is more like web dev in the 2000s, I can't tell you how often you have to go to the xaml and make correction or adjustments that the UI just can't get right, or just goes bonkers and can't render the UI at all until something is fixed.

It is really sad, because the power of those old drag and drop builders that just worked meant that prototyping and mocking up applications was much much faster.

now standing up a UI based project takes ages, I'll usually do a console application now, and are dumping results to a API or console.

People always worry that Microsoft is silverlighting (that is a verb now) MAUI. I think that would be the end of VisualStudio. The word Visual had a meaning. When they would give up MAUI in favor of React Native (like Office) or Blazor (like the popular opinion), why the hack someone would buy a VS license. And when the think they could again commercialize .NET itself, then .NET would be dead. Modern Java, Flutter and TypeScript would easily swallow their market shares. MAUI, Blazor and .NET are an awesome set of products if they would just put some more concentration in MAUI.
I feel as if I remember using a VB compiler back in the late 80s. Am a hallucinating?
VB was first released in 1991. If you're certain that you remember it from the late 80's, then you may be thinking of QBASIC. I first learned to write code in QBASIC running on MS-DOS.
I had a computer graphics class that used QBASIC around 1994. It was probably already outdated, but switching graphics modes and making sprites animate was actually easier then than what you find now. I'm certain it's because there is so much more you can do now, but that feeling was exciting! I actually had my first computer graphics class on an Apple IIe in 1993, and that was definitely outdated at that time. I built a fish bowl with waving seaweed and a fish that would swim to the right and reappear on the left.