ASP.NET WinForms are just as obsolete in my book. I programmed dozens of applications using it but I would never consider using it today for modern web development.
I still use Microsoft development tools. C# and ASP.NET MVC are great, modern technologies that allow me to make stable and scalable web applications very rapidly. The modern versions of Visual Studio fulfill all the things you said you liked about VB6 and are otherwise incomparably superior.
VB.net and C# (and F#) are free [legal] downloads from the internet and both just as capable as VB6 was back in the day (the things Visual Studio Pro and above add aren't really relevant to beginners, except the testing framework perhaps).
Plus back in the day I found VB 6 quite limiting. For 101 level stuff it is plenty fine, but once you want to go beyond simple applications (e.g. games) you're left almost fighting the language and libraries itself.
With C# in particular, while it is certainly slower than Go/C/C++/D/etc, that's really the only major limitation. You can definitely access much more of Windows' API infrastructure, it supports unsafe code, the .Net framework is more comprehensive, and the language features are extremely modern (F# more so). There really is no limits except execution speed.
Honestly kids today are extremely lucky. I would have killed to be learning on C# back in my day. Fuck VB 6.
This, exactly this.
The transition to .NET was a blessing, VB6 is really useless for anything else than "basic business apps" and even then!
IIRC you could only read/write a file (raw data) byte by byte (ok, that was before VB6, still...)
Source? C# should be much faster than Go.
I wish someone would build a robust OS & GUI toolkit and ship it with developer tools...
I think that's the web. The development that used to happen in VB6 & Delphi simply has migrated there, desktop apps from that segment are dead.
Think about that for a moment: We've regressed from VB.
The usual tradeoff is: easy to write, hard to extend and maintain. But the web is hard to write and hard to extend/maintain.
We have some of the smartest people in the world in our industry, and evidently we're all idiots.
I keep thinking back to an Access application that I threw together in a couple of days, back in the 90s for managing a team of about 40 technicians. It was being used for task tracking, and had some wiki-like features as well. When I started that project I knew nothing about Access or VB, and yet in two days I had a bunch of forms and tables that allowed managers to get a quick feel for what their staff were up to. The thing ran over the LAN, and could handle 10 simultaneous connections without any dramas. If I were to try the same thing in the web world, I might lose myself in getting just one table view working correctly for a week. Getting an http server configured and up and running, and talking to a db server would be at least two days. And there would be many potential roadblocks just waiting to trip me up along the way.
These days, rather than dealing with that mess, many companies just go for an off-the-shelf hosted solution that sort of fits their needs, such as Basecamp, or Jira, or Igloo. The existence of these products is a sign that we've gone off in the wrong direction somewhere - the sorts of products they make are very similar to that online apps you could make with Access 20 years ago.
Salesforce has made a huge business out of business apps in the same category as whatever would have been cobbled together in the basement with Access by some 'IT guy' 20 years ago. The fact that this is the case is a reflection of the fact that people prefer the hosted, turnkey, polished experience that web-based SaaS provides over some half-baked internal app.
Well, you might accept that I'm "idealizing" Access because, you know, I had a decent experience with it 20 years ago, as described in my first comment. No need to go searching for mysterious ulterior motives when they're explained in the post!
For what it's worth, I do remember significant flaws in Access. For one thing, it was an absolute pain when we wanted to modify the database - we had to get everyone to log off, and then upgrade all of the clients at once. This is one of those problems that the web solves elegantly. Also, Access had major issues with concurrent users. Performance fell off a cliff, and from memory, certain operations were unsafe (I think you could set up a SQLServer which would address the concurrency problems, but we never bothered).
But these days we have better options available to us - app stores fix the updating problem, without introducing the css + html + javascript mess. We have decent, free web servers, and web application frameworks such as Django and Rails that make writing the server side code that drives the RESTful APIs used by the client relatively easy. But what we don't have is:
a) an easy way to create a server (this needs to be as easy as sharing an Excel spreadsheet) b) a coherent development environment from client to server code. Something that allowed you to write apps purely in Javascript (no css or html) with a GUI editor, and which also let you write the server code in node.js would be a close match to what I'm thinking of. Bonus points if most of the node.js code is derived from the client-side code, so that the novice programmer doesn't need to be aware that a server even exists, it just works.
The problem is, that's the kind of application that's really hard to write. It's big, an IDE in fact, and really Microsoft is the only game in town for making that sort of stuff. But they won't write Android / iOS / Mac clients, so it doesn't happen.
At our company, we have an Access "thing" (it's not even an application, really) for generating listings of the phone numbers and birthdays of all the employees.
Recently, for no apparent reason, it stopped working. I consider myself moderately competent at getting up to speed with new development tools and reading myself into other people's code if I have to, but Access somehow is completely incomprehensible to me.
Maybe I was just missing something fundamental, but I found Access hugely frustrating and not intuitive at all. The general idea behind it seems actually kind of good, but the Microsoft chose to implement it is not exactly optimal. Also, as usual for MS, the complete lack of a manual made me want to strangle somebody. So, yeah, I totally agree with your statement. :)
No, its a sign that the web has enabled easier application delivery with greater reach at lower cost; Access is still around, after all, and most businesses have it right at hand, so if the alternatives were worse, they'd still be using it.
I think the most important issues with the web that are not already being addressed (and winning) are a statically typed Javascript replacement and a way to locally isolate the effect of CSS in large applications with many modules (web components don't solve this correctly).
The web is distributed and distributed is hard. The problem is that it is also what people want. We haven't regressed from VB6 -- we've advanced, but the demands of the market may have gotten more complicated faster than the popular tools have advanced in their ability to simplify them.
I know once I've tested it on one machine it's going to work fine on all the other ones. It's the most stable API and platform I've ever seen. Code we wrote for Windows NT4 works fine on Windows 8.1 and behaves exactly the same.
Compare that to our poor web guy who spends at least 50% of his time trying to get everything working on a selection of browsers going from IE6 to the latest Chrome while necking red bull, using the F word a lot, smoking and going bright purple.
No, beginners don't want to layout things in CSS, a declarative XML language, or any other 'text' way. They want to drag and drop components with the sort of ease of use that Visual Studio or Interface Builder offer. And they want a language coupled with that which features the simplicity of Python.
I too did some of my first serious programming in a VB like language in the 90s (RealBasic for Mac). I now develop beginner training materials in web development as a side gig and while we have fun - it's definitely not as satisfying as laying out a form in VB and having a real GUI in a matter of minutes that "Just Works."
I agree with you, I think the bigger picture here is how well the IDE, GUI, and code hang together as a complete unit; focusing on any in isolation (e.g. "VB sucks, use Python") misses the point.
Working in SF in earlier-stage companies, I've never seen anything even close to the rigor with which Microsoft approached testing. Definitely consider working there if you want to learn from some of the best QA/QE/verification engineers in the industry.
Perhaps automated systems have become much better since Joel wrote this, but something from the talk I really liked -
"The old testers at Microsoft checked lots of things: they checked if fonts were consistent and legible, they checked that the location of controls on dialog boxes was reasonable and neatly aligned, they checked whether the screen flickered when you did things, they looked at how the UI flowed, they considered how easy the software was to use, how consistent the wording was, they worried about performance, they checked the spelling and grammar of all the error messages, and they spent a lot of time making sure that the user interface was consistent from one part of the product to another, because a consistent user interface is easier to use than an inconsistent one."
The zealotry in this field is getting close to unsustainable in my opinion. Companies thought the proliferation of ms access apps was bad, wait until they try to do something with the proliferation of overarchitected web apps based on a wide assortment of fashionable at the time but now unpopular languages and frameworks that hardly anyone has experience on and is most certainly not interested in working on.
In the old days, you could learn C or SQL and for every hour of learning get a hundred or a thousand hours of real use, and you have at least a fighting chance of picking up some other guys code, or vice versa.
A lot of the internal desktop LOB application development that used to happen in VB or Delphi still is done on the desktop, but happens in Excel with VBScript. That trend was very much visible when VB (pre-VB.NET) was still current.
If you did things properly (MVP! remember that?) it was quite maintainable. I still know of several VB apps still in service.
The problem is "properly" is surrounded by a lot of people who slap stuff together, reinvent the wheel (NIH syndrome) or just plain don't know how to program.
I shudder when I look at old VB code... and thank God that I have VS2013, resharper and C#.
I think the issue people have is "it's never as good as it used to be". You remember the good, forget the bad and glorify what used to be the pinnacle of technology. Windows 75. XP. Blackberry. Palm. OH WHY CAN'T THEY HAVE JUST LET US STAY WITH PERFECTION!!!
Sorry... Let me get off your lawn before that becomes an issue as well. :)
I have an i7, 16 GB RAM machine (with a 7,200 RPM HDD though), and when I had Resharper running Visual Studio 2013 would take 10+ seconds longer to load and lag horribly every time I opened a large class.
I tried all of their repair tips, but ultimately I think it it is just that laggy and slow by its nature and drags Visual Studio down with it.
I just couldn't justify the $149/year (effectively, due to the way upgrades work) cost. Plus Visual Studio 14 CTP adds many of Resharpers features natively and without any lag at all.
Part of it is probably that the computing world has become more complicated: A significant share of developers have left Windows, and clients want to play around on their iPads and Samsung tablets. It was much easier to be a "perfect" dev environment when absolutely everyone was running Windows.
The main problem with VB6 was the modules. Modules were "any code here is thrown into the global scope" areas. Worse still they would execute with the caller's context, so you could mix in things like form logic (which would break if the form wasn't the caller).
This sounds great to newbies: "Ohh nice I'll just write a bunch of helper procedures/functions, throw them into a module and use them all over!"
However as projects grew so would the global scope of the application. You then have module function A which calls procedure B, and so on. So when it comes time to refactor some of this global craft into nice streamline classes it is pure hell as the application was never written with that in mind.
MVP in VB6 is largely a myth. I've never seen a legit VB6 application written in that style, and I've only seen it in context of articles talking about how things SHOULD be done. You want something like MVP? Then pick up a framework which enforces it or it won't happen.
QML is basically a Javascript-based declarative language for building user interfaces in which you can use full Javascript to augment them. It has its own IDE (Qt Creator) with a visual designer and it's pretty easy to learn, and Javascript is not a hard language at all for newbies. You can even use C++ to extend your applications. KDE 5 is not ready yet, but Qt5 is mature and improving with every release.
I would recommend that combination to a young aspiring programmer without a doubt.
Of course, VB programmers may look down on Excel the same way lots of other programmers looked down on VB.
But maybe it's still not simple enough. Also, Object Pascal is probably harder to learn than VB6, esp for a beginner.
I also started mostly with VB6 and still somewhat miss it... Nowadays I mostly use C++ and Python on Linux or MacOSX and have tried many many other languages in the meanwhile. But I still miss VB6 somehow.
Even if it was your first language, you can't possibly be a typical new programmer.
If you approach a lot of those places and show them something like AngularJS they'll be like "where are all of the high-level tags and rich components that I can just drag and drop"? And then you'll realize that you're not actually in the ghetto.
There's a reason that webforms didn't die when Microsoft introduced MVC, but instead they started bringing MVC features into webforms because so many people use it.
This. Look at Java, and the bloated mess it has become. Look at XML and the bloated mess it is.
Popular doesn't mean it's good. There are plenty of individuals at the top that don't know cisco from crisco.
What I want to know is, what better crap is there that offers the ease of use that webforms does? If there's nothing better then this is the best crap we have.
It's kind of like how gas-guzzling, environment-ruining automobiles in general are crappy, but what practical alternatives exist that actually cover all of the use cases?
But when collaborating on a curry, I don't want to use the same knife as the guy who cut the tomatoes wants to use. That knife looks blunt and rusty to me.
I agree it isn't a great way to develop for the web, as in embracing web tech, but it's a very convenient way to make forms. Even having your controls keep state (the terrible viewstate) is quite convenient.
It's probably for the best though - the code we wrote is almost certainly quite ugly and hacky, and I could certainly write the same programs much better today.
VB6 offered none of this.