Why I am called "the Father of Visual Basic" (1996)
cooper.com
cooper.com
You start a project, a form appears. You drop controls on it. You set their properties. You code their event procedures. Press the play button. Compile. Exe. Done. It was a great product in that it abstracted the messy stuff well, and presented a programming environment that was intuitive and powerful.
I hoped C++ Builder would close that gap with Delphi, but then .NET took over and the rest is (kind of) history.
What's fascinating to me is that some countries (Brazil, for one) still have a very active Delphi community, while in a lot of places it was more or less forgotten.
Would you believe me if I told you I currently work in a software house whose main suite of desktop products is still in Delphi? We've been using .NET since the mid-2000s (before I started here) for a few of our products, and all new development for desktop products in the past few years has been .NET, but the company's bread and butter and highly successful products are Delphi applications through and through.
It's still a capable development tool but the language is showing its age. I very rarely have to touch it any more but when I do I always get mixed emotions of "argh, Delphi sucks ass, I wish it had <insert any .NET language feature here>", and "oh man I forgot how awesome Delphi was, I wish it was this straightforward in .NET!" Comments such as the latter are few and far between, these days.
I remember hating .NET in the beginning. Performance was abysmal and anything mildly low-level took a lot of work. I made some good money as a freelancer writing COM libraries or C++ libraries with a thin C# wrapper so that they could be used by companies that had bought into the whole .NET thing.
Then C# introduced generics, and it started breaking away from the similarities to Java. Things improved and in time .NET became a very capable runtime/framework. I'm actually excited to see Microsoft finally opening it up. As much as I love Python, the cloud and all the fancy new stuff we have nowadays, I occasionally long for the good old days when desktop software reigned supreme.
OK, better go to sleep now. I'm starting to sound like an old fogy :)
And here are examples of using it (with source): https://www.embarcadero.com/products/rad-studio/android-ios-...
If Borland hadn't mismanaged everything the way they did in the mid-90's, maybe C and C++ wouldn't have the spotlight they enjoy nowadays.
The native OS interfaces on popular platforms (Win32, Posix) were in C, so it would have always been a 2nd class citizen.
I believe that Delphi was already on a decline when Borland decided to self destruct.
On Win32, they had a tough time competing after VisualBasic v5.0, where Microsoft had a larger mind-share.
On Linux, I had hopes with the Kylix port, but it was abandoned by Borland.
Regarding Kylix, I would say it was badly managed from the start.
So yeah, eventually the way out for better Windows support was C++/MFC, as even Borland's C++ compilers had their own set of issues.
But, this is a big but, if Borland managed to push Delphi the same way Sun pushed Java, then I think the mindshare story would be quite different.
A memory safe programming language, with RAD tooling support, capable of system programming tasks with native executables.
On Error Resume Next anyone?
Fun times.
I had simply assumed that VB was Microsoft's attempt to one-up HyperCard, and it's very interesting to learn about VB's real origins.
I developed industrial process controllers using VB. A stripped down Win3 or Win95 system running VB was actually virtually crash proof. Of course this didn't prevent me from incorporating redundancy into the hardware, to take the machine into a safe state if the PC stopped working for any reason.
What the dot net version seemed to do, was to make VB the equal of the other Microsoft languages, feature by feature. The result was that they lost the reason why VB developers loved VB. I continued using version 6 (pre dot net) for several more years after that.
Having done low-level messing about on 16-bit windows, when I moved to Redmond and started working for MS it was hard to drive past BurgerMaster without buying something in homage.
* interfaces
* delegation instead of inheritance
* binary contracts (sometimes attributed to dependency hell)
It was shunned back then because of C++ and MFC/ATL. My favorite VB books were by Dan Appleman. I started to dislike VB after VB5 though.
I personally got used to the convenience of a case insensitive language and I usually write throw away scripts/analysis more than systems, where having a language you can type fast with few bugs is important. For that purpose VB.net is fantastic.
VB.Net is a horrible language that lets developers get away with some really awful practices. The fact that the various Options are still present, and not on by default, is a recipe for disaster. That this is legal:
Sub Main dim x as boolean = false ''or true... dim y as integer = 0
select case y case x Console.Write("What does this even equate to???") end select End Sub
end case
or that this is legal:
Class SomeArgs
Inherits EventArgs
public Property Message as String
End Class
Class HorribleCode
Public Event Blah(ByVal sender As Object, ByVal e As Someargs)
Public Sub Doit()
RaiseEvent Blah(Me, new SomeArgs with { .Message = "Wow... YUCK!!!!"})
End Sub
End Class
Public WithEvents ThisSucks As HorribleCode
Public Sub ThisReallyWorks(ByVal sender As Object, ByVal e As Someargs) Handles ThisSucks.Blah
System.Console.WriteLine(e.Message)
End Sub
Sub Main()
Dim h As New HorribleCode
ThisSucks = h
ThisSucks.Doit()
End Sub
Yes, I dealt with code that had both of those "techniques" in it... ugh.The second example was mainly because the off shore coders didn't realise AddHandler/RemoveHandler existed... le sigh
In fact I must say one of the things that I appreciate the most about VB, beside case insensitivity is the IDE. I think c# is catching up now but the VB IDE is incredible in term of how much help you get, immediate feedback on what went wrong, rich auto-completion of code.
But there were also a lot of developers who thought that VB programmers were the script kiddies of the day.
First day in, I had a form with a button. Clicking the button would change the form background colour to blue. I had to restart the app to get the form background back to the default one so I could demo it again, but I still remember how excited I got over that one simple thing. I would show it to everyone in my family.
If it hadn't been for that, I'm not sure I'd be a programmer today. Just an amazing product for it's time.
Many of us thrive on complexities and are wired to handle large hierarchies of concepts that is required to make sense of things, but large majority apparently wants things to be simple and VB of an excellent way for them to experience the joy of programming. Professionally VB6- was however too limiting and its purpose seemed to be mostly churning out CRUD data entry screens faster than ever. So it's best used as introduction/launchpad in to programming with clear plan to weaning off after you had enough fun.
While I am extremely glad I got away from VB6, the old dog still had life in her. The main limitation was having to develop in a windows XP virtual machine for better IDE compatability.
By the end we did much of the newer development was in .NET libraries we called from the VB6 front-end, but the front end was still handling most of the data.
More recently, I've explained the whole idea of web programming to non-developers by showing them the developer tools/JavaScript console in the browser, and how you can use it to edit CSS styles and run random bits of JS that do cool things to the current page. It cool to see people "get it" -- the reaction is generally something like "wow...is that it??"
I beg to differ. I worked on a lot of VB5/6 code between 1997 and 2002, during that time we did some fairly sophisticated things.
At one banking/finance gig I wrote a large amount of code that ran inside Microsoft Transaction Server and COM+, support for this was rather impressive. At another gig I wrote front ends for a document scanning server written in Java - we had a COM/CORBA bridge etc. We did image scanning and manipulation in VB 6 without a lot of fuss.
There was also a rich and diverse market for third party controls, widgets and libraries. Hell, if you knew what you were doing you could hook directly into the windows message pump, subclass and create your own windows.
Take a look at Matt Curland's "Advanced Visual Basic 6" which was published in 2000, VB6 was no toy:
Shortly after I got into VB6 I was turned onto Delphi 7...and never looked back. For me, Delphi is a superior alternative to VB6 and Visual C++...and I say that as someone that really learned a lot from, and enjoyed using VB6
I still use Delphi to this day and am using a modern release of Delphi (XE7, the latest version). They've added a 64-bit compiler and support creating native OSX, iOS, and even Android applications now too.
If you value high performance, easy to develop GUI's, small EXE's with no dependencies, native generics, and awesome DB support, I highly recommend using Delphi.
However, to each their own. I know Delphi is not as popular these days, but it really offers programmers huge productivity gains.
If you prefer an open-source alternative to Delphi, have a look at the Lazarus IDE which uses FreePascal.
The Lazarus IDE is very reminiscent of Delphi 7 and runs on Linux, OSX, and Windows. You can also create native GUI's on all of those platforms as well: http://www.lazarus-ide.org/
Happy to answer any questions about the early days of VB. Gary and Frank and Mark and I built most of the "visual" side of VB based on Alan's Tripod prototype. It was called Ruby at the time (no relation to the programming language) and was originally going to be a programmable shell for Windows 3.0 but turned into VB instead.
If you want something specific to blame me for, that would be the VBX interface...
Here's an article with more of the story of how Microsoft turned Ruby into VB:
VB and Hypercard get a lot of nostalgic love these days, and a lot of people (including ITT) maintain there aren't any real successors to them.
What would you consider to be the standout merits to Ruby/VB that ought to be reproduced now?
Second question, since plugins and dynamic extension are never out of style: in the VBX interface, what did you think worked well, and what did you think was a tremendous disaster?
Thanks!
The big thing about VB is the obvious one: it was really easy to get started using it, and despite the flaws in the visual environment and the language itself, it was good enough to get things done.
In fact, Basic was a lot better than the language we were originally going to put in, which was barely more than a glorified batch language (and not even as powerful as .bat).
The idea we had at the beginning was that you'd drag an arrow on the screen from one component to another, signifying that an event triggered on the first component would make an action happen on the other. This is where the phrase "fire an event" came from: I was looking for a verb for this, and "trigger" didn't sound right. I was frustrated and had a bunch of rubber bands on the table, so I started firing them at the screen. That didn't help. So I fired up a doobie, and between flicking the lighter and firing the rubber bands, "fire an event" seemed like the phrase to use.
What worked well in VBX? Well again it was fairly simple to use and easy for people to make extensions with. The big disaster was that it was pretty much tied into the Win16 programming model, so when Windows moved to 32 bits, VBX wasn't going to cut it and Microsoft developed OCX to replace it.
There's something strangely surreal and downright awesome about reading this comment from you, over 25 years later. Huge amounts of respect for what you and the team achieved.
Alas, my other favorite name didn't make it into the final product. VB Controls were called Gizmos in Ruby, and VBX was the Gizmo Interface.
I don't know what happened there - I think Gizmo was just not a serious enough name for the Microsoft of the day. But really, Control instead of Gizmo? Boring!
Any plans to bring VB back? i.e. something as simple as the original was?
- A complete IDE
- A relational database with multi-user access and transactions
- A visual form editor
- Drag-and-droppable Components
- A debugger that lets you mutate code and even the instruction pointer, while running.
- A compiler that generates distributable EXEs in a single click
- All of this inside 2mb.
vb3.exe, released in 1993, 22 whole years ago. We're still playing catch up.
- asynchronous/event-based programming
- importing C/native code from a DLL is trivial
- fantastic documentation (so good you don't need the Internet)
If you want a button that does something, you literally draw the button on your form, double click it, and write the code for that event. I agree - one day we'll catch up.
Also VB6 autocomplete rocked.
However some of it is inevitable, owing to what it lets you do: run the same site across platforms and devices, built from the ground-up to enable communication and collaboration, seamless updates, infrastructure support for caching etc.
I'm sure there are many other great things that existed to do the same thing but VB was the tool that brought this type of capability to the masses on plain old PC hardware.
http://www.appgyver.com/composer
https://polymer-designer.appspot.com/
http://www.google.com/webdesigner/
There's also a bunch of desktop software that does this too - remember FrontPage and DreamWeaver?
I thought about getting into this market but it is so crowded that it's unlikely there'll be one clear winner. Instead, every designer seems to have their favorite tool.
To be clear, Microsoft's domination of retail was due to its distribution efforts not some evil plan...Borland was plenty around too in those days.
I did find it odd that "Ruby" (what became VB) was suppose to be the "shell for windows " and allow user to "design their os". Maybe I misunderstood that part because it sounds like a recipe for disaster :)
http://channel9.msdn.com/Series/VisualStudioDocumentary/The-...
I give great kudos to Alan Cooper, his book "The Inmates are running the asylum" was a paradigm shift for me. Once you've read it you have a little Alan inside your head for the rest of your life, telling you how stupid, impolite and lazy most software is. It's annoying but highly effective.
Really recommend it for anyone who hasn't read it. He's a bit rabid in his aversion to developers designing, but if you can look past that it contains many gems
This basically allows you to import classes from App_Code globally--something which my predecessor on the project had made significant use of. And it all worked, despite the fact that it's not technically "allowed" and C# naturally prevents you from doing it. I only noticed something was amiss when I tried creating a simple Web Service and the app kept falling over.
Reading an article like this and hitting the comment link and anticipating meeting one of the developers is, for me, what makes HN so amazing.
It support designing GUI applications visually just like VB, but the implementation of the runtime component exists for both Gtk and Qt. Same with database access (MySQL, Postgres, Sqlite). There are other components too like SDL.
The language is not 100% the VB language, but similar (with some modern features).
Not very different to the Delphi side. The Lazarus project is active and last update was also on March, 2015: http://www.lazarus-ide.org