22 Years of Delphi and It Still Rocks
blog.marcocantu.com
blog.marcocantu.com
By an interesting coincidence I was given a CD with tons of software on it, including Delphi 2. I started playing with it and quickly realised I could create my own programs using that tool.
Later I went to the book store and found a book about it that I couldn't afford. So I came back every week to read as much as I could, then heading back home to try it on my illegal copy of Delphi. (I was 11)
Then I realised there was a help manual embedded in the distribution, so I learned as much English as I could so I could understand that manual.
Little by little I learned about conditions, loops, object programming and made a bunch of terribly crappy yet working games.
No amount of studies could have taught me as much as I learned through using that software. No manual work could have given me the fun I had when programming my very own games. Reading "Delphi" as a headline on hacker news made me feel nostalgic and I figured I'd share my story here.
So thanks Borland, the 11 year old me may not have paid to use that software, but it was enough of a revelation to make me the programmer I am today.
For me it was Microsoft BASIC on the early Macintosh and this magical book from 1985: https://smile.amazon.com/Macintosh-Midnight-Madness-Utilitie... (Wow, I can't find the actual cover art anywhere! It was much cooler than what's shown there.)
:)
I started learning English as a kid to understand what was happening on the MS BASIC programs I could get on my computer by the time.
Twenty years later, I'm still writing way too much Basic code (VB6 legacy apps and some VB.NET). I do appreciate a lot of things about the syntax and wish C# had picked them (no semicolons and no case sensitivity).
For nostalgia's sake, may I ask what games/software you developed at the time ?
On my end, I did:
- Snake, and a Snake level editor,
- Sokoban, and a Sokoban level editor,
- an adventure game Zelda (NES) alike (but was not fun at all !)
- Graphic calculator (to help me visualize the change of parameters quickly),
- a software to visualize my grades compared to the rest of the group
- I made a software to search and categorize html tags
(during my high school years)What impressed me the most at the time, was that my binary file compiled on Windows ME would work directly on my other computer with Windows 3.1.
This is something I still really enjoy today with Go(lang); the fact that I can just compile for other platforms and run it natively.
So it's not really native (it runs on a VM), but it produces the .exe that can be easily shared.
Otherwise, can't recall much else, discounting cheating with e.g py2exe.
In random order, and off the top of my head:
- pong
- some various demo where I would simulate fireworks or
traveling through star (in other words particles that are
rendered by drawing dots and circles on screen)
- a car racing game viewed from the top
- an RPG engine but never actually made a level
- a claw machine
- and finally my own remake of space invader where you could
play up to 4 in coop and upgrade your weapons. It had bosses
and swarms of enemies. I learn then there was a limit of how
many keys you can press on a keyboard before your computer starts beeping.I came from Turbo Pascal, it was never the same but Delphi was such an awesome environment that I enjoyed making things with it.
I really want to cry when I see the current alternatives... Node/Electron with dozens of MB of runtime and all that Javascript stuff? What went wrong that we end up with this?
If you're talking about electron apps, that's a whole other ballgame. We don't build electron apps for internal stuff afaik.
And there's a really good reason everyone switched.
People within companies are building web apps because thats what they know. The world has changed in the past 10 years. In response to that, you took a hard line stance that this is "definitely not the reason." I disagree.
I _think_ you're trying to argue about why developers -- as a whole -- have moved towards web apps, but its hard to say because that's not at all what I'm talking about and you haven't made that part clear.
Now that I'm older and can't mode switch between languages as quickly as I could when I was younger, I find myself just using Node for my personal stuff.
Gone were the days of having dB passwords on every machine and wandering from PC to PC with a floppy or CD.
And that was the problem with desktop apps 10 years ago.
Even when MS fixed deployment for desktop apps they still left it massively overcomplicated. It should have been a simple one click in visual studio to build an installer and it never was.
One click deployment was/is pretty awful too that came out just as Google pioneered background updates.
Also HTML+CSS allows for extremely versatile styling and fine-grained control of appearance.
As a compilation target from a better language, I suppose it's mostly acceptable. But on its own? Never again.
Like Typescript definition files. Producing them on a massive libraries is near impossible for a single individual to undertake. I've seen some people try to process them from docstrings, but the result was really kludgey.
Furthermore, Typescript recently made it much easier to work with libraries that have no typings at all. If you don't mind implicit anys, things might just work. If you are strict about no implicit anys then the minimum boiler plate to define a module with any type has dropped to a bare minimum:
declare module 'module-name'
If I have a complaint in that space, it's that sharing typings is a lot more complex than I think it should be. DefinitelyTyped is a single megarepo where most typings originate and has developed a culture of trying to get typings perfect. Unfortunately, perfect is the enemy of the good, and "good enough" typings for lesser used libraries often languish in PR obscurity, at least in my experience.Beyond DefinitelyTyped, libraries can embed their own typings in their npm packages, which is great, but not every library author is thrilled to "own" Typescript typings. (All in all, I still feel like I have better luck contributing typings directly to library authors than DT, though.) Beyond that there are tools like Typings to grab typing files from arbitrary GitHub repos, for instance, but there's not much of a good way to advertise types that way because most people will only check NPM now.
Sorry, this seems to have turned into more of an off topic rant than I at first intended.
My current main work laptop (a pre-TouchBar generation MBP) can only barely run a "heavy" JS-application like Slack and something like IntelliJ at the same time.
Migrating Slack into an IRC client reduces the CPU & memory footprint of _sending, receiving and displaying text_ by over 90%.
Something went seriously wrong somewhere and we're only going deeper into the hole.
Is this hyperbole? I run both of these with IntelliJ memory settings maxed out on a MPB no problem. Granted, I have 16GB of memory, so understandably YMMV.
No. Just checked and this is an 8GB machine, running Slack with ~9 simultaneous networks (unfortunately lots of open source projects are moving to half-deserted Slack networks instead of IRC channels) can easily use more than half of that.
With JavaScript, the problem isn't so much the language (though there are many ways to use and misuse it) as its ubiquity and ease of entry. Because it's so popular it attracts many novice programmers who write terrible code (but that's how we all start). If we're going to have any good, experienced engineers in future then we need those novices now.
If C++, Haskell, Ruby, or Scala were as popular as JavaScript - particularly if one of them were the standard for client-side web programming - there'd be just as much terrible code written in those languages; it would just be differently terrible.
I work with other peoples Haskell code daily; and some of this code has been written by domain experts. Nevertheless, Haskell mostly forces them into line. Our competitors use Python because it is superficially "easy", I can only imagine what horrors they must be dealing with.
Imagine being a clothing designer and told to make something. The output could be anything from Beyonce's grammy dress to a famous deceased CEO who wore black turtlenecks all the time. That extreme diversity of style is both the greatest strength and the greatest weakness of allowing a wide allowable spectrum of style. On the other hand a men's business suit tailor is much more restricted in that everything kinda looks the same which makes things both very easy to muddle thru and very difficult to stand out at the same time.
Maybe beginners do struggle with Haskell but, if you want my two cents, the reason nobody really bothered with it back when I was at university - except for assignments where we had to use it - was because there was no call for it out in the world (this is going back 17 years). Most people built their projects in C, C++, or Java because those were what you needed to get a job. I'd also observe that the same people that struggled with Haskell also struggled with C, C++, and Java [1].
Again, based on the assignments where people did write Haskell I'd have to suggest that it absolutely is (or was) possible to write terrible code in Haskell. Certainly it's possible to write broken, fragile, or barely functional code that's hard to understand.
[1] This is of course anecdotal evidence based on a small sample size - maybe 40 people on the course.
Despite thinking JavaScript itself has some really great qualities; I generally don't think Electron is a great solution for desktop applications. Executables are too large and slow compared to a good old fashioned native application.
Qt guy here... Windows and Linux are a breeze, pretty much dead simple as I thought they'd be, just run winqtdeploy, make installer out of resulting directory, copy other libraries, done. On Linux, just ship it and install dependencies on target or make a package appropriately.
OS X however is a nightmare if you need other libraries beyond Qt unless you know all the voodoo of install_name_tool. But maybe that's just my experience showing.
How long ago? I've never done Linux, but Mac it comes with a script that does everything and spits out a .dmg. On Windows it spits out everything into a folder you can zip up or create an installer.
It's not technically superior but it's economically superior since you usually get maximum reach with web and then minimize cost with the hybrid approach.
Sometimes you don't need the distribution magic that webapps allow, and can dispense with the huge overhead that comes with it. That's where tools like Deliphi/Windows Forms et al can make your life easier. Today it's a corner case, but it's worth keeping in mind that it's still an option.
As to the databinding, I find that WPF has more upfront work in databinding, in that you actually have to write some code, but that it's a lot more flexible in the long run. When I used to write winforms, I usually ended up with a lot of business logic embedded in hooks. It was a mess and was hard to reason about.
however, Mono supports WinForms on all platforms, and is able to compile everything into one standalone EXE. to be honest, i have not tried either, so i cannot say much about how that works in practice. from my experience with Mono, it can be dangerous. every now and then a new version breaks threading, causing mysterious pauses or crashes, and i've read (i think a text by Ayende) that the GC can also be buggy. but for the stuff that Delphi was good at, for smaller RAD apps, it might be worth a try.
That said, it was 20 years ago. Now there are IMO much better cross platform tools for RAD (Python, Tcl/Tk, ...) and Delphi is showing its age (no Linux targets?). Unless I have to live in a Pascal world there are much better tools today. My 2c.
That's why I wrote "in combination with easy deployment". Yes, you can do faster RAD in Python but good luck with easy deployment.
Linux is coming in the next release - there will be a blog on that soon. It already has Mac, iOS, and Android on top of its Windows support.
Honestly, I do not believe that Python or Tcl/Tk count as "good" RAD cross-platform tools. Only if you've never used something like modern Delphi to compare them to. We regularly have customers give feedback about their productivity with Delphi/C++Builder, versus Python, C#, etc, and they say they get apps completed and released twice as fast or often more. "5x" is quoted often in our marketing material, and that number is not marketing, it's based on numbers people tell us.
- David (one of the PMs at Embarcadero; I work with the blog author Marco.)
The last time I used Delphi it was on version 5. I never used anything for desktop GUIs on Python or Tcl/Tk (or any other language) that comes even close to it. That requirement of "modern" is too outreaching.
But I'm impressed by Python's kivy (but still didn't really use it), and there are some interesting things happening on Haskell circles. I'm optimist in that Delphi's decades old title may fall soon.
Developing on Linux desktop at that time probably wasn't ready for this.
There was a particularly big flap over them not stripping the corporate audit clause from the free Kylix Open Edition version targeted at OSS dev; and another regarding enforcing the mandatory "Made with Kylix Open Edition" splash screen that was linked into your app at the compiler level, since all the library code was technically modifiable per licensing.
I also seem to recall that they managed to standardize on Red Hat 7.2, which I think had the much maligned gcc 2.96 fork in it and possibly an older glibc, and then had problems with later kernel/glibc/something along those lines versions such that you were locked into the "bad" version of Red Hat using it.
I probably have some of the tech details jumbled 16 years later, but the TL;DR was that the development community for Linux is nothing like the development community for Windows, especially back then. There were simply different cultural expectations and a hugely diverse set of environments to target, along with a swiftly moving ecosystem to link against.
Upshot, Kylix more or less flopped and Borland switched gears to Java/JBuilder-based IDEs for C++ compilation (C++BuilderX), then back around full circle later focusing on single-platform IDEs for .NET/native Windows.
It is a nice start again though.
To each his own. I work in a cross platform world with a roughly equal mix of Linux and Windows and my personal preferences are with the standard Unix toolset.
- It was a wrapper around Qt
- Had some dependencies on Wine
- The set of available controls was small
- It was closed source
- They expected GNU/Linux developers to be willing to pay for it
Tk is the better than Delphi RAD tool?
It is a very simple, script language that allows creating dynamic GUIs on the fly. I can make a simple GUI and hang calls on buttons and menus with a few lines of text. No compiling. No library mismatches to deal with. Whiteboard sketch to a working prototype often takes less than an hour, almost never more than a day.
It is cross platform and text based, so we can email prototypes around for people to try it on their Windows, Linux and Mac machines, click on buttons and report what they want to change. It is text, and does not require installing software. This is a noticeable advantage in locked-down environments, where installing Tk once and running 10 scripts is much easier than installing 10 revs of software.
Due to the language simplicity we had people who said they have no idea about it (and no plans to learn it -- they just wanted a prototype) making and sending back mods within a few days of getting the prototype. This is great -- then we know that this is what they want.
Tk is long in the tooth and has many limitations, but for rapid GUI prototyping it is one of the most useful tools for me.
Very limited ones. And ones clients will have a shock when seeing. And still coding it all together.
With Delphi you can drag and drop great looking (and more full featured) prototypes in zero time.
It will be limited to Windows, though, I'll give you that.
Can you clarify "coding it all together" part. I have no idea what you meant.
Of course for more than trivial built-in behaviours you'll be writing code, but for a UI prototype, especially if it's just CRUD forms etc., you can get it built in a few minutes with no code. Drop a database connection component and set the connection properties, and you'll get live data and properly typed and bound controls on the form too.
Compilation takes fractions of a second, so that's not an impediment to design iteration - but you don't need to compile or run to see what it looks like since it's effectively a WYSIWYG form designer.
[Edit: hit reply too soon] Tk model of UI programming does not promote this that much, because causing stuff to happen by writing code is the default way. Also Tk-style approach of writing GUI definitions in code and letting the toolkit to deal with details like positioning (in fact, using HTML for UI is mostly similar) is more productive.
I really wish HTML was as easy to design with as the VCL designer. Trying to e.g. create vertically centered children is far, far easier in the VCL than in HTML + CSS.
Rather, it'll be limited to Windows, macOS, iOS and Android. :)
I can throw together a very nice looking GUI app in one sitting in Delphi, where laying out the elements and binding and defining events is absolutely trivial.
In Python, with Tcl/Tk, I don't. I use C#, qt, or even flask. Tcl/Tk is absolutely not appropriate for RAD GUI development, unless it's at some hello world level of complexity.
Further, there are several experimental projects that support running Tcl/Tk over HTTP/HTML rather than X11, Win32, SDL, the current Mac OS X/macOS GUI system.
TkWeb and WubTk are examples of this.
As the saying goes, if you can't beat 'em...
Borland also had the older Turbo Vision toolkit, but that was for MS-DOS. OWL was designed a very similar class hiearchy.
:)
20 years ago, RAD meant that you could drop visual components on a form, add some events, set some properties, and hit the green run button to compile and run it.
A very visual way of programming.
QtCreator with it's visual designer comes close, but then you have to suffer a more unforgiving syntax (C++), a complex macro compiler (MOC) and not at all easy cross-compilation / distribution.
Netbeans Swing support also comes close.
TCL/TK is about 20 years old if not more.
Try Unity3d component-based uGUI that you can edit live during the "playmode". After building complex UIs in it, going back to Xcode Interface Builder is like moving from iOS to a smartphone from 2005.
Shifting of priorities.
I remember when people used to complain that Delphi executables were 'bloated' and large - 200KB was the minimum size?
At that time the complaints didn't seem absurd when we were connecting via 36k dialups.
Admittedly we have probably swung too much in the other direction.
I'll tell you. Microsoft and Apple need to protect their native app license revenue, so they hobbled Netscape, brought browser development in house, and made a prohibition on allowing web pages to be integrated tightly into the OS.
If those electron apps could get the same OS integration in the browser as native apps get, the distributable could be kilobytes, even smaller than your Delphi executable.
But how would Microsoft and Apple make money if they're just a host for web apps? They're not going to turn themselves into a commodity/utility.
I don't really understand. I never paid a license to create and distribute native applications.
But also you provide the content which makes Windows licenses have value. If there were no Windows apps, they couldn't price it higher than Linux.
Just look at the Windows APIs there are a wealth of things Microsoft doesn't want in browsers if they can avoid it.
Well... there are people on the browser team trying their best, but the resource constraints keep investment where it needs to be to protect Windows and Office licensing.
You can get all that through UWP, though, can't you?
[1] https://developer.microsoft.com/en-us/windows/bridges/hosted...
Historically, the web version of office is not really a stand-alone product, and is designed to be a helpful feature for people who primarily use office on a Windows PC.
Before the .NET age, Microsoft was very active with ideas about bringing Web on desktop.
In early '00s, there surely were apps made and distributed as .hta files. Not much as .exes, of course, because even with ActiveX, DHTML was quite limited.
Heck, when I was in school, me and a buddy wrote a desktop web chat client using that tech (we wanted fancy text formatting and image posting that "official" webchat page hadn't, but we had - because it server lacked proper HTML sanitization, lol)
* http://www.rebol.com/rebol-view.html
* http://www.rebol.com/docs/sdk/
* http://re-bol.com/business_programming.html
NB. I say "was" because Rebol 2 SDK has (i believe) been discontinued. Rebol 3 & Red do offer new GUI / encapping replacements but not at same level of maturity.
I have started using it in earnest and it is wonderful - and a company can never take it away from you; there's no "we're shifting focus..." announcements. No paid support for broken updates.
I honestly can't recommend it enough.
(1) https://github.com/ziotom78/hpview/blob/master/README.md
Ironically, I don't use Delphi anymore. Yet, I still help people with it and defend it when is possible.
Delphi is amazing. It only have a HUGE problem: His owners.
You can re4ad why Delphi fade away here: https://www.quora.com/Why-did-Borland-fail?share=1
"Borland lost its way when executive management decided to change the company to pursue a different market. ... ... In the height of the enterprise transformation, I asked Del Yocam, one of many interim CEOs after Kahn, "Are you saying you want to trade a million loyal $100 customers for a hundred $1 million customers?" Yocam replied without hesitation "Absolutely."
consequently, you can never just pick it up and grow into it, you only learn it on the job which already uses it
or maybe, you torrent it
And he is 100% correct. It's way easier to double the profit from 100 customers than it is 1 million.
Is no that is bad to try to catch the fat-money, is that them forget the rest.
This make Delphi fade. And impossible to some of us to even continue using it.
---
The current free version is something new, however this have been try before but never consistently, so is unsure if I get Delphi free now it will continue.
This make risky to get it.
At work, I inherited maintenance of an in-house application a coworker that left the company wrote for our accounting department. In Delphi.
When people speak highly of Delphi, they always mention how great the IDE is. Personally, I am not a big fan of IDEs. I was not disappointed, but my mainly, what I do is read and edit the source code.
And I have to admit, that part was a pleasant surprise! I had never looked at or touched Pascal code before, but I was able to make a change to the source - and it worked, the very first time! - within a few days. And the majority of that time was spent figuring out how the code was structured[1] and what the accountants wanted me to do (they always talk to me as if I knew the first thing about accounting).
But after that, it was smooth sailing. It sure helped that my predecessor wrote very readable code, but it seems that ObjectPascal made it very easy to write it that way.
Or, more briefly: Happy Birthday!
[1] The application is about a 10 KLOC in total, which is not small in my book, but not "very large", either. Also, I was both a developer and a sysadmin and a helpdesk monkey, so the phone was ringing about every fifteen minutes.
For someone that uses it for home projects, $916 for an upgrade is out of the question.
Rambling here, but... Delphi 3/5/7 were incredible design packages. I feel they lost focus when they jumped on the .NET bandwagon - maybe it is just my perception, but maybe some of their internal developers were less focused on native code. Anders leaving was also a big hit. Kylix was yet another distraction.
[1]: https://www.embarcadero.com/docs/rad-studio-berlin-feature-m...
> Free Pascal tries to implement a Borland compatible pascal compiler on as many platforms as possible.
I was able to use the Help pages as (almost?) my sole reference for the API. Something that just wasn't happening with Delphi's big competitor, VB.
The choice was between learning Delphi 8 for .NET or learn Visual Studio .NET. I chose MS.NET because MS is the custodian of the .NET Framework. They are the ones on the driving seat, not Borland.
Looking back, I don't regret the move because Delphi is dying. Posts requiring Delphi are nowhere to be seen on job sites in South Africa.
Hello World ran to about 100 kB.
Funny thing is, I am just getting into Go, and you know what?
In the 90s I met this guy in IRC that used Delphi 2 to program a RAT called Hacker's Paradise.
He was very kind with me (I was much younger than him apparently) and shared the source code so I could learn from it since I was constantly asking him programming stuff.
Then later he renamed the tool "Master's Paradise" so he could go legit and sell it to companies and compete with MS BackOffice.
I enjoyed talking with him so much, even though I could barely understand OOP, but the thought of talking to a real developet left me an impression
I have a hello.adb program, 99bytes, compiled 25k
-rwxrwxr-x 1 seg seg 25352 Nov 2 01:26 hello
-rw-rw-r-- 1 seg seg 99 Nov 2 01:23 hello.adb
-rw-rw-r-- 1 seg seg 1409 Nov 2 01:26 hello.ali
-rw-rw-r-- 1 seg seg 1576 Nov 2 01:26 hello.oI still laugh about my first Hello World. My friends mocked me for my megabyte-sized beginner programs. It totally was in line with the image of Ada being a bloated, bureaucratic DoD monster. GPS made things feel extra complicated and ugly.
That said, I'm considering to use Ada 2012 for several of my upcoming works.
So you'd inevitably get some clueless complaints that Ada was so much bloat compared to C, based on comparing the size of a statically linked executable to a dynamically linked executable.
Hello World is 1MB?
You can use Electron (and basically bundle Chrome), or JavaFX (and bundle a Java runtime), and they're about the same size. But even if you ship all of the Qt dynamic libs, or all of the GTK dependencies, or even wxWidgets... it's still a far cry from "light".
It just takes tens of megs to make a window appear.
If you compiled a Delphi program without using the UI stuff the resulting .exe files were usually only a few dozen kb in size. People used this fact in combination with using raw Win32 API in order to create very small sized UI apps with no external dependencies.
There were tons of tutorials on how to use Win32 API in combination with Delphi.
On macOS the GUI parts are in Firemonkey (FMX) and that is an abstraction layer that does all of the drawing of the controls by itself instead of using the native controls as supplied by the OS.
This creates some extra overhead. There's pro's and cons here. Personally I'd rather had they used native controls instead of FMX as that would look a lot better. But it is what it is.
From there the app doesn't grow as fast, so it is not all bad.
edit: Just looked at the GUI on my app [0] and without any resources it comes in at 16.2MB (so my estimate was a bit on the high end of things)
Darkness Lay Your Eyes Upon Me - Conspiracy - Revision 2016 64k
https://www.youtube.com/watch?v=_SEGm2lUSY0
http://www.pouet.net/prod.php?which=67106
After watching a few 64k demoscene demos, a 380MB Electron-based minimalist text editor just seems horribly bloated. (I'm currently writing a cross-platform Windows/Linux/Mac GUI app in Xojo, and the macOS version is 11.6MB at the moment.)
GUI toolkits aren't comparable in this regard.
Adding Unicode support (independent of the Platform) probably bloats every executable an additional 100k. The horror.
I love that Xojo's IDE is cross-platform too, and that I can make my Windows & Linux builds from the Mac IDE. It's been easier for me than Qt anyway, and without any of the licensing or renewal issues.
Try it and report back the amount of Kb (not Mb) used.
EDIT: The version on their download page doesn't make GUI's for OSX yet, but there seem to be other versions that do.
That's not quite true. Check out these Avian examples:
https://readytalk.github.io/avian/
Fully statically linked Java cross-platform GUI app (using SWT) in a 1mb download.
Steve Gibson at grc.com has GUI utilities that are pretty small. For example, his DNS benchmarking tool is 165 kB.
I wrote my own personal GUI toolkit on top of OpenGL/GLFW for developing special purpose editors (for gamedev), and the resulting executables plus required shared libraries and resources (minus system libraries like libGL that shouldn't be distributed directly with the application) are only about a megabyte or two total. That includes a full blown custom scripting language interpreter, resizable rich text widget with bold/italics/color support + optional text wrapping and scrollbars, JSON parser and serializer, vector math library, a basic image loader and saver for several formats (using stb plus a little custom code for a few less common formats), various routines for software manipulation of surfaces (e.g. drawing lines, triangles, alpha blending images, and so on)... written in C++, with debugging info turned on, and using templates where appropriate. (It'd be even smaller if I stripped debug info and packed the whole thing into one executable.) I'm developing it on Linux, but I could rebuild it for Windows (and probably Mac) without too much effort.
I don't know what the hell the GUI libraries are doing to get so big.
It can be done, for eg. Rebol/View, a cross-platform GUI circa 1mb in size.
NB. Rebol/View used the AGG library to achieve this - http://antigrain.com/ | https://en.wikipedia.org/wiki/Anti-Grain_Geometry
package main
func main(){print("Hello");}
is 951kB on my computer.But you need to remember that Go bundles a whole runtime with your executable, something C doesn't do.
Sure it does, not all C compilers are like gcc with the idiosyncratics of glibc.
Also, there is ICC, MSVC, C++ Builder, aCC, xlC, SunPRO, TI C, ARM DS C, ....
To taste the cross-platform IDE for Rapid Application Development today:
http://www.lazarus-ide.org/index.php?page=whyuse
"Why use Lazarus?
No dependencies!
With Lazarus you can create programs which do not require any platform dependencies [1]. The result of it is the user of your program does not need to install any further packages, libraries or frameworks to run your software.
[1] Linux/BSD applications may depend on GTK2 or alternatively QT. Some add-on packages may also add dependencies of their own
Can be used in commercial projects
Some IDEs restrict their license to only non-commercial development. Lazarus is GPL/LGPL [2][3] which permits using it in building commercial projects.
[2] LGPL with additional permission to link libraries into your binaries. [3] Some additional packages come with various licenses such as GPL, MPL, ... "
I started using Turbo Pascal in college when it was $49. Given that Embarcadero Delphi is competing with a lot of stuff that is free and high-quality, I doubt it's got anywhere to go but down from here.
One reason Borland lost us was when they decided to go after the enterprise market, with comparable prices.
I was a Delphi addict in the 90's. After Borland screwed up Delphi - including the Kylix disaster - and since I am now a full time Linux user - Lazarus is the only option.
I have been following the Lazarus / Free Pascal project for years, and I think now is a good time to pick it up.
I wish that it had more traction, though.
Nevertheless, Lazarus and Free Pascal is very good and important work. Wish they would modernize to the 21 century though (but whatever works for them is fine - only it's difficult regarding the traction then).
Don't blame the forks, mods and spin offs on Lazarus / Free Pascal. It is a sign that the project is alive and doing well, IMO.
The looks? It looks like any other Qt / GTK 2/3 application. Fairly modern.
But I agree with you on some of the points - but the part that I like the best is the fact that it's fully open source. It's really nice to be able to look at the source to everything when developing your own applications.
Yes, the site itself, including the docs, looks dated and does a poor job of selling it. That's Open Source, the good and the bad.
Edit: The project does have a (mandatory these days, I reckon) Github mirror, if that would make you more happy. :)
They still need, once every 6 months, to compile the EXE file with a small change.
I get paid monthly just to press CTRL+F9 (generate new .EXE file) every 6 months, basically.
I liiiike it :)
Turbo Pascal 6.0/TASM for applications that required performance or system programming like, and Clipper Summer '87 (shortly replaced by the 5.0 OOP version) for database frontends.
Imagine being 14 and trying to understand CORBA.
I know of a few companies in Germany and Netherlands that still use it, but it is hard to get offers.
And we had to wait 15 years until .NET started to offer a compilation model similar to Delphi (only for UWP apps).
While Java kind of outsourced it to third party JDK vendors due to Sun's attitude against AOT compilation, oh well at least Java 9 will bring the first steps towards support it.
I'm just curious. How would AOT improve Java's ability to have better RAD. I guess I'm just missing the association. Is it bundling/distribution? Startup time? Integration with native libraries?
I would imagine hot code swap probably doesn't work with AOT (aka JRebel) so that would hurt RAD.
AOT compiling to native code, as standard option, would have improved Java's acceptance as safe language for desktop applications, due to better bundling, distribution and startup time.
To the point that even Oracle does reckonize this, and is delivering an initial way of partially AOT compiling on GNU/Linux x64, with support for other platforms planned for Java 10.
> I would imagine hot code swap probably doesn't work with AOT (aka JRebel) so that would hurt RAD.
Sure it does, that can be done with dynamic libraries. Many game engines make use of this approach.
Other environments like Eiffel and Lisp, have a set of JIT/AOT compilers, JIT during development and AOT for deployment.
Fast forward 20 years, and I'm a hardware developer using Altium a lot. As some here may be aware, Altium is a multi-gigabit piece of CAD/EDA behemoth written - and still maintained - in Delphi. 3D, DirectX, everything in Delphi.
Just yesterday and today I had easily reproducible BSODs by using a very basic feature (routing nets). Memory leaks galore - most people I know have the habit of shutting Altium down now and then just to avoid a crash. Success is low - it crashes a lot, I'm getting tired of unhandled exceptions windows.
And this way, I realize even great development tools age badly. Of course this is not all Delphi's fault, but it shows how tech is a Red Queen's race: you must run faster and faster to keep in the same place.
I get regular crashes with a bunch of stuff (everything from Thunar (don't think that shows C has aged badly), Chrome (C++) and Intellij (Java).
On the other hand, the tool should help prevent these issues. Altium has visible exceptions and lots of memory leaks that are much easier to prevent or solve with modern development tools and languages.
Also, C aged badly, but the tools (ecosystem seems to be the hip name nowadays) for C evolved, and in a smaller scale, even the language itself has evolved. Object Pascal and Delphi doesn't seem to be catch up so well.
I loved to use Delphi in the early- and mid-2000s, but unfortunately Delphi jobs disappeared, and I had to switch to C# and Java development.
Better: the Delphi component libraries made writing a GUI application easy. I've never seen anything of their quality and ease up through today, and I still miss being able to get an application running by just subclassing some standard components and writing the core logic I needed.
Such a shame it went downhill after the .NET stuff.
In the end I landed a job as a web developer, worked in PSPad and left Delphi forgotten until the day — a decade or so later after I used Delphi the last time — I opened Eclipse the first time in my life. Never hated a tool, my profession and the IT industry more than at that moment… Why take the compilation so much time? Why are the fonts so ugly? Why does this tool needs more time at startup than the good old Delphi 6 on my 800 Mhz PC ten years ago? And why nobody seems to care about it?
I switched to Netbeans. Slightly better: bigger icons, better looking UI. I like the key combinations there. Still nowhere good compared to Delphi IDE with useful code snippets built-in and easy-to-use creation of UI apps.
Edit: this is a historical reference... search for "Oracle Delphi Python"
It _is_ great IDE/language.
https://www.theregister.co.uk/2006/03/07/borland_ditches_del... ... https://www.theregister.co.uk/2016/05/20/verity_sons_of_khan...
Fast forward years later, and plenty of intermediate languages (C, C++, Java, ...) I got hired into my first professional software developer job ... as a delphi developer in a company with a big multi-million line delphi codebase they wanted to migrate to the web. I had done some web development, so I ended up writing features on both the delphi and web teams, often the same feature. So I became intimately familiar with the trade-offs of delphi vs web development.
The thing about delphi: it was/is insanely productive. In the beginning it took about 3 to 5 times as long to write a comparable feature on the web side. It ended up driving me to research cutting edge web dev techniques to find some way to approach the productivity levels that delphi gave. In the end we almost got there, using rich frameworks and a component-driven UI. But to this day the delphi team can still get a feature done faster than the web team, and that's despite an IDE which is much weaker than webstorm/intellij. Object Pascal and the VCL are just that good.
However, I wouldn't do a new project in Delphi. You're locked into an ever more expensive product with an uncertain future, and the productivity advantages just aren't worth it anymore. You can get close enough using an open source dev stack, and the value of having all your tools be open and free is significant.
There's a lot a legacy application written in Delphi here. Some old programmers, that only know to program in Delphi, may even build new apps with it.
It may not be that modern today, but there's the "pay the bills" mindset.
I think Delphi will die, but only because it costs a fortune today. If it had a resonable price, many people would continue to use it indeterminately.
I agree with your diagnosis. The problem is that Embarcadero doesn't understand that, and when it does (or when someone else buys Delphi), it may well be much too late to revive it. They could really position various versions of the product in a different way, making the lower tier more affordable.
There is a community of locked in customers who are wiling to pay to keep their projects going, it makes sense for Embarcadero to milk them.
Charging for basic development tools in 2017 just seems weird, and I'm afraid by the time they realize that the company is dying, the mindshare will be gone, never to return.
I had a bit of hope for delphi with mobile app support, but the pricing really killed it now that microsoft offers xamarin for free.
Plus, object pascal is too weird for js coders. C-style syntax is a must, even though object pascal is in many ways a better language.
Funny enough, I can produce Delphi executables that run perfectly on Linux and Mac using Wine. That means executables that run on anything from Windows 95 to any modern desktop operating systems available today.
Why the heck did they decided to kill such a good platform.
I've moved to Java back in 2010. From my perspective was the best next thing (platform agnostic, rock-solid) but still miss my Delphi IDE to create good looking UI apps with ease.
I don't see anything in your link, by the way.
Ah sorry about that; I am in China and internet is very slow & often broken (HN is very fast though). Probably the image did not (fully) upload. It was an error telling the application crashed. Just the empty default form after pressing run.
I Finally got the Linux version running on Mint by downloading and installing the files from their repository as recommended and it was a nice experience after that
Windows is another matter entirely, just download the setup, run it and go
Lazarus is a very active project, currently I rate it up there with delphi XE2 (the version I use currently) and it can only improve
which in my opinion makes it useless, RAD tools are mostly used to create line of business applications
Delphi had the flexibility of Visual Basic without the deployment problems.
Unlike VB, all the controls and libraries were written in Delphi itself, which allowed you to walk through each and every library when debugging problems.
They should have license fees based on how much money the developer earns, but I guess it's too hard to calculate long-term revenue and to ensure that the developers don't cheat.
I suppose if you go that route you need a legal team that can afford to be on the lookout for violators though.
Maybe it really is great, I don't know. I was a bit surprised looking at Tiobe (http://www.tiobe.com/tiobe-index/) that they rank it as the 9th most popular language right now. Where is this actually being used? And the price tag is incredible!
The very bottom tier of bottom up development is making business critical systems depend on Excel and some impenetrable write only undebugable macros. The next tier up is where I've see Delphi apps mostly in sorta integrative and peculiar reporting roles. Oh and ETL of all places too.
At least that's where I've seen it. It works well there, too.
It's kind of a "you had to have been there..." type of story, but if you get a chance, talk to a developer that was trying to create Windows applications for businesses back in the 90's and you will know what I mean. The really sad part is that while .NET and C# have done an okay job of providing a replacement (I think that MS has a hard time staying on-point when it comes to dev tools and make their tools too much of a moving target), you really cannot find anything exactly like Delphi/RAD Studio today. The primary reason why it's so sad is that Delphi created millions upon millions of dollars of revenue for independent software vendors all over the world, and you would think that companies would be trying to replicate that success. Alas, it's hard to contemplate even attempting such an endeavor when developer tools are not valued properly according to the money that they make the developer. If the software world finds a way to start making money from developer tools again, then you'll see another Delphi and it will be a lot cheaper.
The latest answer has been annual licenses.
FWIIW, where I work, I started using Delphi 5 when it came out. As of now we have about a dozen D5 desktop applications all essential for the core business that are in active use and supported as necessary, running happily on Windows 10. I don't see why it won't continue like this for another 15 years... The bosses (who are non-programmers) don't really care that D5 is out of fashion - because it all just works (and rocks).
The only reason I couldn't upgrade to a later version (Unicode is one thing that would be useful) is I am stuck with one critical and long discontinued grid component.
Looking back I am not sure how we could have lived w/o Delphi. Well maybe it's an exaggeration, but certainly life would have been more difficult. Everything else from before .NET/C#/Windows Forms looks like a nightmare.
Try to replace it with Virtual TreeView: http://www.jam-software.com/virtual-treeview/ https://github.com/Virtual-TreeView/Virtual-TreeView/
Has there ever stopped being a need for this?
I used Delphi for years, now I'm working in Excel all day and I can't quite see the parallel you're describing?
What my former company called 'End User Computing'. This meant developing small or not-so-small programs in the only tool capable in a corporate environment: Excel (often linked to SharePoint as a data store). Otherwise lots of forms and procedures would have to be gone through making it a tech project.
Background: Operations (not tech) mega-corporate bureaucracy where these apps were helpers.
Solution: Open up Excel, and start to code and design GUIs on the worksheet via VBA built in to Excel (and all of Office). It was a stunningly similar experience to hazy memories of Delphi in terms of GUI and code, but ultimately was using a spanner to do a screwdriver's job. Memories of Delphi were certainly hazy at this point, but it was more similar than any other tools I'd used the the decade+ since that point.
The idea of Bled is to mix those RAD concepts with Photoshop like tooling for designers.
I still find it easier than trying to make web pages look like the Photoshop mockups.
But the real issue is rapid database applications. Being able to create business apps very rapidly was always Delphi's thing. It was a really fantastic replacement for Paradox and brought Turbo Pascal and Paradox together to create something amazing.
For that there still isn't anything. There are a lot of things that are close, but nothing with the same level of power and speed. The closest thing I've found is Django. Hopefully that clarifies: it's not about GUI anything.
Delphi vs VB
TASM vs MASM
Borland C++ OWL vs Microsfot C++/MFC
Philippe Khan vs Gates
Delphi was the raddest RAD tool. The free VCL components for it were often better than commercial VB ActiveX components. Delphi executables were faster. Delphi could statically link everything.I eventually had to move to VB when my Delphi job dried up. VB felt like a downgrade. I remember constantly referring to Dan Appleman's book so I could use Win32 APIs to work around the limitations of VB. I'm not knocking VB as it's one of my favorite tools too, but Delphi was the cream of the crop.
What do you get 22 years later on an Intel i7?
First time I used a C++ compiler I thought it had frozen because the hello world took so long to compile. The notion that something could compile for longer than a split second (for trivial things) didn't occur to me.
For me it was less rosy.
I remember my boss trying to get me started on Delphi.
We basically had two or three Delphi developer workstations available because setting up one that could compile the projects we had in our vcs was a three day task - and it was only possible with the help of our resident Delphi consultant.
Stuff like that has made me love Maven and Java.
Same goes for Visual Basic that I once used to love.
Still I feel I could have loved it if I didn't start with 10 years of accumulated references to unsupported packages. :-/
Not convinced it's still best as a practical language though.
Agreed. One thing that prevented me from loving python. The language was great...but how the fk do I get a clickable button without some mish-mash of half developed 3rd party libraries?
Delphi 1.02 I got from some CD in a UK magazine sold in the USA. They gave away free copies of commerical software for buying the magazine for $10 or so.
I did better in Visual Basic because I got jobs that required it.
Are recent versions of Delphi actually usable? I haven't tried anything beyond 8, and from my (admittedly rusty) experience the best version was 6.
The book with the IDE was free and easy enough to comprehend and it introduced all the basics of OOP.
Great times. I wonder if lots of people have had this same experience with VB .NET
Would someone please point to his/her blog saying that Tcl/tk being the universal scripting language?
It's sad that RAD isn't popular anymore. 1995 - 1999 was great with Win95 era, everything was so consistent, good documentation. Then Microsoft realised their "The Microsoft Network" lost against the open free WWW and then the announced dotNet (which took until 2003 for them to release v1) - that was the beginning of the end of the great Win32 platform and RAD. HTML with Frontpage and Dreamweaver was just an okay RAD andbthe situation got worse with "no tables, use div" and XHTML 1/2 movements.
Yet ironically, I use Winforms in personal code way more today than any of Microsoft's other GUI technologies. Winforms is a great way to get a Windows app up extremely quickly that needed a simple GUI. There are plenty of ways to get a quick command line style app up, but I really don't know too many solutions that allow you to drag and drop functional GUIs as quickly as Winforms (other than VB and Delphi).
For a fully fledged app, Winforms makes no sense to me these days. But Microsoft specific syntax like WPF or UWP no longer makes that much sense to me either. Might as well spend the time on HTML+CSS+Javascript and get cross-platform support...
Delphi – why won't it die? (2013) (stevepeacocke.blogspot.com)
https://news.ycombinator.com/item?id=7613543
Did a search in hn.algolia.com just now to find the thread, and it was the top result when the setting was "By popularity":
https://hn.algolia.com/?query=delphi&sort=byPopularity&prefi...