Hacker News new | ask | show | jobs
by rty32 592 days ago
> I never fully understood why this programming paradigm died off

My two cents --

A few reasons (briefly, I could have talked a lot more)

* Shift in platform: Windows is no longer the sole platform people want to build their apps for. Not a bad strategy by itself, and lots of companies still only develop for Windows (e.g. specialized software for instrument control etc), but people increasingly want their stuff to work on iPad, Chromebook etc and maybe even phones

* Shift in screen size: It used to be that everyone runs Windows on a 800x600 screen. That changed, and then changed quickly. Many different resolutions and screen sizes. The drag and drop thing just doesn't work well for that. The web model, where you write "responsive CSS" and the browser handles the rest for you, works better.

* Software and their UI got a lot more complex and require more expertise. On the other hand commercial software becomes easily available and accessible for those purposes. For the examples you mentioned -- stock control system, sales tool, they may be fine with VB6 for a prototype but can quickly get complex. And there is likely a commercial software you can buy and download within a few minutes at an affordable price.

* Shift to online/cloud: vast majority of "small VB6 applications" were used locally, and they never connect to the Internet. That's different now.

* Shift in language: BASIC/VB was often used for teaching, and it is indeed great as a first language to learn. Although Python already existed at that time, it became very popular, and I think many people would agree Python is a much better language than BASIC, in many ways. As a result, BASIC along with VB went out of fashion.

10 comments

I've always found the use of anchors on UI controls to be light years ahead of what HTML/CSS have been doing. I always used to create UI forms with resizing and different screen sizes in mind. If you were coding for a hard coded 800x600 screen then that was just laziness.
Does that solve the problem between vertical/horizontal layout?

On a mobile the default is vertical, on a desktop horizontal. That matters more than different screen size and is the hard part.

It's a bit ironic how in the same breath you go from "it's impossible to build apps for multiple resolutions with drag'n'drop hence web" to "software and their UI has become more complex".

While the absolute vast majority of web-based software cannot hold a candle to UIs you could trivially build in VB (or Delphi and other RADs). Most web-based software is either trivial forms or a few screens of text and images they struggle to display with any acceptable performance.

As for "many different resolutions and screens", have you ever, I don't know, resized a desktop window? Desktop apps work at the number of crazy sizes the web would die at.

I think you left off the biggest reasons, commercial:

* No piracy. Can't crack code you aren't running.

* Immediate installs/updates. No need to tell people to ever update stuff, or to install your program in the first place.

* You can charge subscriptions. It's much easier to justify a subscription when you pay for server costs, even though the customer would be happier just running your application locally.

* Easier deployment. You can handle complex integrations on the server, without the customer having to open ports or whatever.

Good points. I was more focused on the technical side.

I want to add a bit more to "easier deployment" -- traditional model is that you push updates at some interval (regular interval like semi annually/annually or non regular intervals), and you need to manage multiple versions and potentially patch multiple versions for severe bugs or security issues. Lots of software still works that way. But with office 365, jira etc you only have one version to worry about. Of course it means different risk levels, SLAs etc, but that's a different topic.

> Shift in screen size: It used to be that everyone runs Windows on a 800x600 screen. That changed, and then changed quickly. Many different resolutions and screen sizes. The drag and drop thing just doesn't work well for that. The web model, where you write "responsive CSS" and the browser handles the rest for you, works better.

This... really doesn't match my experience at all. I may be thinking of later UI development tools from the .NET era (I no longer recall if VB6 had proper support for linear layouts and the like, that was forever ago) but GUI builders with responsive controls were absolutely a thing, and they ran circles around any "responsive" CSS we have today, if only because they had instant feedback. I don't miss most aspects of programming from that age, but this is one that I do miss tremendously.

Edit: I certainly agree on the other points. I think this one was less of a technical limitation and more due to the humans in the loop; lots of people just didn't know better, information dissemination was far more limited (lots of us learned these things offline, from books and the like), and the platform didn't force you to do the right thing, either.

Yes and:

> Shift to online/cloud ... they never connect to the Internet.

The fall of VB6 style RAD (for CRUD) started earlier with shift from "workgroups" (shared files on LANs) to client/server. This severed the direct link (ADO api) between apps and their persistence.

Tragically, the ODBC (then JDBC) API interface didn't quite fully bridge the gap. Meaning some necessary metadata was no longer front and center (for both compile and runtime, like ADO had always had). Yielding mitigation attempts like DAO/DTO, ActiveRecord, ORMs, LINQ, templates, etc.

That sad state of affairs is described in Ted Neward's famous "ORMs are the Vietnam of computer science" essay. https://web.archive.org/web/20060813030731/http://blogs.tedn...

Of course, client/server had to happen. But the innovators (and critics like Neward) didn't fully understood what they were replacing, what parts were missing. (Lather, rinse, repeat.)

--

It took noob me a LONG time to figure this out. (All I ever wanted was to recover the special magick of VBA + ADO.) And then even longer to attempt mitigation (cuz am noob).

Maybe if we had the new "internet's hourglass shape" analytical framework from the beginning (vs say OSI's layer model), someone(s) could have prevented the oversight. https://cacm.acm.org/research/on-the-hourglass-model/

> Software and their UI got a lot more complex and require more expertise.

In the B2C space sometimes sure. We do business with many companies all over the world and if you can see the 100s of 1000s of apps they are using; you could've done all of them with Delphi/VB without any tricks. Except now some incapable but suave talking Nextjs fanboi walked in and pushed all that overly complex nonsense while it's not needed for almost anything we see used in companies. Spending fortunes on stuff you should just click together in a few minutes and hook up a db. But yeah, we make nice money because of it for both of my main businesses; 1) fixing completely broken stuff because the person who introduced the tech left quickly after introducing the misery 2) creating LoB/ERP custom applications. Both are goldmines and both are goldmines because of the tech losers (resume driven 'workers' almost always) around the world who preach to always use the 'best tool for the job' and then completely do the opposite, introducing tools that really have no place there, ever.

And then the joke of course that they are not even really good at them, which is the worst pet peeve of mine; ONLY yesterday, I was virtually (via Teamviewer) fixing a new LoB app made by 2 freelancers who came (apparently) highly recommended; it was made in Next 15 with React 18 and shadcn (that's not fully compatible yet... but that's normal in that ecosystem; nothing is). So I checked the Linkedin / github's of these freelancers and had a short call with them if they could help (no, they had no time; new clients!); they were Django/Bootstrap guys before, but that sells less well than Nextjs/shadcn/tailwind, so they switched recently. What a joke. Why is this not liable really... But again, we make very good money, so please carry on!

I'd add another reason:

* Idiot developers like myself. Okay, I was a teenager back when I got infected by this idea, but it did persist for some time into my start of my career too - the idea that RAD tools are inferior, they are not "true programming", just some lazy no-code clicking to save monkeys from understanding the program they're building as a whole, etc.

I mean, sure, you could do a lot in RAD tools really quickly, and do it well - but that was cheating. Too good results for too small an effort. It wouldn't impress any of your IRC friends.

(Curiously, those few I know from my "generation" who wrote software for e.g. their parents' business, would happily use VBA or Delphi. Wonder why...)

This was all adjacent to and connected to other ideas that became influential with our cohort of developers, like "Windows suxx, Linux rulez", "plaintext is best", "CLI is best", "code generation is evil", etc. Those ideas are still deeply rooted in FLOSS, too.

VBA - was not C-like, you couldn't exactly put the whole project in SVN and diff nicely, it's tied to a specific platform (that sucked), a specific vendor (at a time when we all hated the evil M$ because it was the Right Thing to Do), and to a specific software suite (which was not vim). It's tricky for a technology to survive after a significant part of the fresh workforce tried to steer clear of it as a matter of principle.

https://www.flutterflow.io/ is an interesting option for cross-platform web-based low-code.

My main issue with these is using the the cloud dev tools has a cost, normally usage-based - so if you use Firebase, if you're not careful, you can end up with a large bill.

Funny thing is that there are more Windows devices out there than all iOS,MacOS, and chromebooks combined.
There are 1.46 billion iphones, 3.3 billion Android phones and tablets, 1.5 billion Windows computers in the world. About 100 million people use MacOS.

I'd say with the (few 100 million) Chromebooks it's an equal number of Windows devices to the sum of the other ones you listed.

P.S. What happened to Android in your list? That is like leaving out the 500 pound gorilla :)

are you certain? At least mobile phones (android+ios+maybe some other with somewhat modern web browser) outnumber desktops/laptops.
I don't think the platform mattered much, this happened before macOS became popular, and remember that at that time mac developers would still use Interface Builder and Objective-C. There was a certain level of pride in making Mac apps look very much like Mac apps. Very rarely did developers target both Windows and Mac.

My take is: A lot of developers didn't feel like cluing components together in Visual Basic 6 or later Visual Studio, dragging and dropping UI elements, was "real development". VB-developers where looked down on as second rate programmers. If you used VB.NET and WinForms/WebForms who where not a real developer. You had to use C# and XAML, which was absolutely terrible, but "real programming".

Same with Delphi, not something you built "real" applications in, no you use Java if you're a real developer.

Shit like that was all to common, and yet WinForms are still around and working, but XAML is dead (Edit: Apparently it's not dead).