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.
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.
On Error Resume Next anyone?
Fun times.
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.
* 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.
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.
But there were also a lot of developers who thought that VB programmers were the script kiddies of the day.
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.