Hacker News new | past | comments | ask | show | jobs | submit login
It's 29—Delphi, I mean (marcocantu.com)
71 points by andsoitis 7 months ago | hide | past | favorite | 69 comments



Delphi was a wonderful language in the late 90's for desktop application development. It was easy to build desktop applications quickly and was very fast for both compiling and the executables it generated. Definitely a product of its time, but I look back on it fondly.


It turned out the distribution (and to some extent, ownership) problems eclipsed every other problem in software. This is why the web won, because it solves distribution and ownership immediately.

The trade-off was/is that building software as easily as late 90's desktop applications is extremely difficult to do on the web; in fact, we're still not there. Surprisingly, no-one has made a Delphi (or Access) clone that runs on the web. It seems like we're getting there, but incredibly slowly and only asymptotically approaching that experience.

On the bright-side, webapps have invented some novel and useful ways of writing applications that are in some ways superior to the old ways - the ideas behind React (in particular, rendering application state as a single function), or Redux (modeling application state as a monolithic, immutable object against which reducers run) may not have arisen if not for this shift. I'd also credit JavaScript with making functional programming mainstream, a great example of "worse is better".

Another part of the issue may be that younger programmers are simply not aware of the DX of building with tools like Delphi or Access. And in turn, older programmers have forgotten the headaches of dealing with closed-source tools and the distribution headaches that came with them. (And the ones who are aware are themselves unaware of the DX of building with Smalltalk.) You cannot miss what you never experienced or do not know about.


> It turned out the distribution (and to some extent, ownership) problems eclipsed every other problem in software.

I have a different perspective. I see it more as a question about runtime environment. We still have 20y old Delphi applications in production, and distribution is trivial, corporate machines have software that just installs the apps the users need based on their roles, and they autoupdate etc. My team still hates them and want to replace them with webapps, even with no distribution or ownership issues.

For us the big issue is the "it's not working for me, what could be wrong?" cases where you have to dedicate half a day or more of expert time trying to figure out which absurd corner of microsoft windows is causing issues on the particular intersection of that one application on that one entirely unique computer configuration (even after corporate management of software/policies etc), and of cause that one particular user, because what could they have done?

Web apps have the benefit that they don't run on microsoft windows, they run on chrome (even if you use edge), and chrome is a much better operating system than windows will ever dream of being. It even fulfilled java's pipedream of being cross platform (well effectively from a user perspective anyway).


We've had a similar issue even with our sass webapp. It started with one user at one client where a single UI in our large SPA started encountered odd bugs. And then other employees in the same department started having the same exact issue. We spent a considerable amount of time investigating the issue with our company pushing back claiming it was an issue on their side. Eventually it escalated and we did a call with their users and management. I was able to successfully debug the issue, but their management was not that happy! The issue: Fantasy football Chrome extension their employees had installed which their IT department obviously did not authorize!


Indeed, webapps are not immune to distribution problems. Wayward and invasive browser extensions are a clear threat, as are 3rd-party dependencies (and their dependencies) loaded at runtime. Which is why companies like https://sentry.io exist. I think the difference is that webapps are "distributable by default" and it takes real work to break this. Versus having local desktop apps which require work to distribute. A potent example of the power of defaults.


Through the halls and chat rooms of every company populated by developers you hear constant groaning about software distribution problems (we call it deployment). Yes, we managed to fuck that up and a hundred other things along the way. So many hours wasted on that bullshit.

I left web development and have been having the time of my life. Web dev is nothing but stress and pain. The first relatively pain free web dev experience I had was using Vue3 (not counting Laravel ten years ago).


> Surprisingly, no-one has made a Delphi (or Access) clone that runs on the web.

There have been a couple attempts but they were all closed source from small developers that died (the projects) once the developers couldn't convince anyone to pay for them. Ironically one of these attempts used Pascal too (IIRC it was using a fork of Free Pascal).

There was also Microsoft's Web Forms which kinda did something similar in the early 2000s or so, though AFAIK it wasn't as "drop an exe and have it work" as programs made in Delphi for the desktop were.


To note that Blazor is the new Web Forms.


Oh, I remember. I built client-server applications in Delphi. Distribution was a huge pain. Easily the worst part (as you mentioned).


> It turned out the distribution (and to some extent, ownership) problems eclipsed every other problem in software.

Distribution is easy. It's just that in many companies it is hard to convince IT to distribute your software, while it is perfectly fine to have a web browser on the computer.


> in many companies it is hard to convince IT to distribute your software

Isn't that the definition of hard?


> Isn't that the definition of hard?

No, that is the definition of "a different problem":

- distribution: easy

- convincing an organization: hard


> Surprisingly, no-one has made a Delphi (or Access) clone that runs on the web.

Yes they have, but many aren't willing to pay for their tools, so only big corps get to see them, see OutSystems.

Also WebForms and now Blazor, are pretty much it.


There was some Delphi for PHP: https://en.wikipedia.org/wiki/RadPHP

renamed later to RadPHP and then abandoned.


At one time there was also Kylix, which was Delphi for Linux.

I had tried it out briefly, but dropped it because it was too buggy.

Later they killed it.

https://en.m.wikipedia.org/wiki/Borland_Kylix


Same here - Kylix was good for "hello world" projects, but when you trying to implement some coding stuff you'll see many small bugs that make future development impossible.


What does ownership mean here? And what does it mean on the web?

I like to make my software single html files whenever possible. People can just save them and run them locally. Havent met anyone who cares yet though.


> What does ownership mean here?

It means owning the code and the data. With webapps, the code and data are hosted and owned, the users do not own the code, cannot run it independently. This is a clear dileneation between owner and user, and the owners can use that clear line to create artificial scarcity of various kinds. (The most popular being the subscription SaaS model). It's also easier to defend your IP since end users never see your binaries.

> I like to make my software single html files whenever possible. People can just save them and run them locally. Havent met anyone who cares yet though.

I like that idea a lot, and I care. I think others care, but yes, it's a niche interest. Take a look at https://tiddlywiki.com/ for an example of a fairly successful project that uses the single html format running locally. However it suffers from limitations on File|Save which often requires a separate runtime of some kind to support.

Another project that approaches this ideal is https://redbean.dev/, @jart's tiny, performant, featureful single-file webserver. In this case the "single file" is a server executable + zip whose state must be updated on the command-line, but I think hits a sweet spot in terms of practicality, and a global minima when it comes to minimizing dependencies. (Redbean bundles SQLite and Lua so it's also possible to do through-the-web state updates as in a traditional webapp.)

My own project, Simpatico, aspires to be something along these lines.


I got started in QBASIC as a kid, but it wasn’t until Delphi 4 that programming became something that I wanted to pursue as more than just a hobby. Though it’s been over 20 years since I touched Pascal, I owe my entire career to Borland and Delphi.


My goal with GridWhale is to build something like Delphi (a RAD platform) for web apps.

I wanted something integrated (UI, storage, business logic) but with real code (not a no-code platform like Bubble.io).

Will it succeed? I don't know. Maybe no one wants RAD anymore. Or maybe no-code platforms are good enough. Or maybe AI will be a better answer.

Still, I have to try.


The web is crying out for true RAD. GridWhale is promising, I have been casting around for a project I could use it with.

If you can pull it off, I guess we'll grudgingly forgive you for not finishing Vault of the Galaxy yet. :)


OMG! My worlds have collided!

Let me know if you find a project. I'm trying to integrate TransData into GridWhale so you can manipulate Transcendence tables in GridWhale.

And, as you know, I still do Twitch streams on Thursdays at 3 PM Pacific. Drop by sometime and chat.


Have you had a look at Anvil? https://anvil.works


I haven't heard of that before, but it's exactly the kind of thing I'm talking about.

Thanks for the link!


Free Pascal and Lazarus seem really really great, and I wanted to really look into the ecosystem, but doing a bit of surface researched revealed some concerns that held me back from going any deeper

- Pascal seems like a mature language but looks like it's got its warts and being a language of the 80/90s may not offer the niceties of languages that came after it. One concrete criticism I came across was some inconsistencies in the language design meaning you want to be careful as some things work one way and others another way, and some things don't work as you expect (at the syntax/semantics level if I recall correctly).

- GTK support is still work in progress according to wiki pages I could find: mainly GTK3(??) and GTK4 which aren't 100% stable. If you want to use GTK2 that seems fully supported. Given the Linux GTK based distros are on GTK3 and moving to 4, seems less than ideal. I'm not sure if/how much the situation is better in the QT bindings.


It looks like a relatively easy to learn language.

The QT bindings are pretty up to date according to the wiki:

https://wiki.lazarus.freepascal.org/Qt5_Interface

https://wiki.lazarus.freepascal.org/Qt6_Interface


Have you used Lazarus or FreePascal for any significant project?

I was hoping to get some insight from someone who's deeply familiar with it and can provide their experience and opinion after using it for a reasonable amount.


Here's a list of projects using FP+Lazarus.

https://wiki.freepascal.org/Projects_using_Free_Pascal


No I have not, I would also be interested in an answer from someone knowledgeable. It might be worth asking on the Free Pascal forums.

This suggests GTK3 support is not going to be great any time soon.

https://forum.lazarus.freepascal.org/index.php/topic,63867.m...


> Pascal seems like a mature language but looks like it's got its warts and being a language of the 80/90s may not offer the niceties of languages that came after it.

My recommendation is to ignore language design, I spent a lot of time trying to find the best way to create cross platform desktop applications in a "nice" language. This was just time wasted.

What you should look at is how productive you can be and how much of the problem space the language and framework solves for you.

By changing to this perspective you will notice that your number of options increases drastically.


> inconsistencies in the language design meaning you want to be careful as some things work one way and others another way, and some things don't work as you expect (at the syntax/semantics level if I recall correctly).

It equally applies to ANY current programming language, including the fashionable Golang and Rust, not to mention Python, Java, C#, C++ or JavaScript.

So this argument is childish.


The Lazarus ide always felt jank to me, esp. on Linux. The FPC textmode "Turbo Vision" like ide is fine, but I don't see how someone used to Delphi or VB can tolerate building anything with Lazarus. The polish isn't there.


> The FPC textmode "Turbo Vision" like ide is fine

Fun fact, recently an attempt to add unicode support to Free Vision (and related units) was submitted to the repository and while that worked, it broke a bunch of things and introduced extra jank (and a massive performance regression, even if you are not using the unicode-aware units) to it (including the textmode IDE, which -e.g.- crashes the second time you try to build something).

But this is in the development version from the repository and there are no plans currently to make a new release soon, so chances are by the time a new release is made this will be fixed.

> I don't see how someone used to Delphi or VB can tolerate building anything with Lazarus. The polish isn't there.

Personally i find Lazarus much more polished than Visual Basic ever was.


I don't know what you are comparing to, but Delphi this year and age is far from polished either.


> One concrete criticism I came across was some inconsistencies in the language design

Yeah that is a valid criticism, Free Pascal (and Delphi's Object Pascal, but because Free Pascal supports multiple dialects it is more pronounced there) isn't so much "designed" as "organically grown". On the other hand, you could say the same for any language that has been around for a long time and tried to add new functionality without breaking existing code.

In practice while you may come across the occasional 'gotcha', you won't really have much of a problem. E.g. in Free Pascal - and Pascal since Borland's Turbo Pascal - the function result is actually a hidden parameter passed by reference (this helps to avoid costly copies if you return records/structures). I've been writing Pascal code since the 90s and yet it was only very recently that this caused a bug in my code. TBH if you have written in C#, C++, Java, or any other "unexcitingly mainstream" language you'll be fine writing Free Pascal too.

The biggest issue with the language i have is the three different compound types ("record", "object", "class") and really it is mainly about how you can't do things with two of them ("record" and "object") that you can do with the third ("class") for seemingly arbitrary reasons (especially since under the hood the compiler treats them all the same). But it is largely an annoyance that you can almost always work around, not a roadblock.

> GTK support is still work in progress according to wiki pages I could find: mainly GTK3(??) and GTK4 which aren't 100% stable. If you want to use GTK2 that seems fully supported. Given the Linux GTK based distros are on GTK3 and moving to 4, seems less than ideal. I'm not sure if/how much the situation is better in the QT bindings.

For Gtk3 the main issue is the developer who mainly worked on the Gtk backends got tired of the Gtk developers breaking the API every new major version just as he was getting things working and decided to just abandon the effort. I think someone else is providing patches for Gtk3 nowadays though. Personally i contribute the occasional fix to Gtk2 as not only it is the most stable but also i prefer Gtk2 apps to Gtk3 apps. I also keep Gtk1 working (one neat aspect with Gtk1 is that you can statically link against it and thus make a binary that only relies on X11 - and OpenGL if you use that - like, e.g., the binary i have here[0])

However there is a lot of development on the Qt backend (AFAIK including the guy who used to work on Gtk3) to the point that it might become the default in the future. You can try the binaries of a tool i wrote from [0] that are built with Gtk1 (statically), Gtk2 (dynamically) and Qt6 (links to the Qt bindings statically but to Qt6 libraries dynamically) and see how they look like in practice (note that ironically the Gtk2 one might actually have issues - i built it from the repository version, not any official release). Note that i compiled this on my Linux PC running openSUSE Tumbleweed so it was linked against fairly recent versions (e.g. you need Qt 6.6 - a friend of mine running Debian couldn't run it because none of the repositories had it).

[0] http://runtimeterror.com/tools/piecemod/


Exactly the type of response I was hoping to get. You've covered basically 90%+ of what I was after. Thank you for the great comment.


Wow, the author is also working on a book that is just released: https://blog.marcocantu.com/blog/2024-february-expertdelphi2...

No technology ever truly dies.


He has written many versions of that book. He is one of the Delphi old-timers.


HD DVD is pretty dead. ;)



I'm still maintaining Delphi software that my dad wrote in the 90s and is actively used today. Delphi (and Windows, which can still run it!) is pretty amazing, even if writing Pascal is less pleasant than most modern languages due to things like having to pre-define all the variables at the top of a block.


Delphi supports inline variable declarations.

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Inline_V...


Second Pascal -thing I've seen on front HN this week. Is it nostalgia or is it because it's useful and cool stuff even in 2024?

I'm nostalgic about Pascal because it was my first real professional full-time payed programming language and I loved it passionately for years. But now, I kinda don't trust myself when I just see old dated stuff compared to what we use now. It is the past for me, but maybe it's not the case for people without my baggage


Is it nostalgia or is it because it's useful and cool stuff even in 2024?

Or maybe because Wirth died recently?

https://news.ycombinator.com/item?id=39473042

(Why NYT is just getting around to an obit, I do not know.)


I have looked for a long time for some stable, cross-platform, environment to use for my future hobby projects, and Free Pascal might be the best candidate I have seen. They officially support a large number of platforms from 16-bit to 64-bit systems and APIs seem to change slowly and still maintain compatibility to some (many?) 1980's libraries. I am a bit fed up with unstable APIs. That probably does not make Free Pascal "cool" but it is definitely something I see as a big plus, when some other programming languages roll out breaking changes every 6 months or so.


> because it's useful and cool stuff even in 2024?

Yes, absolutely!



Delphi was the first GUI-based development experience for me back in '96-'97. It was the next step after learning Turbo Pascal and writing command line programs. I still get warm feelings every time I see it mentioned somewhere. The built-in and third-party components were my favorite part.


I feel old - remember having access to Delphi 1 alpha as we were one of the first third-party VCL components. I was moving from VB3 and Delphi felt like a major upgrade and super cool!


I worked with an energy company who has a huge custom accounting package written in Delphi. They got a lot of bang for the buck out of it over the years but is causing obvious problems now with all the logic embedded in the client.


Hard not to feel old when you've developed apps using Delphi 1 on Windows 3.1.


I heard a rumor years ago that Russian train systems still run on Delphi.


We have the national branches of several well-known Fortune 500 companies as customers, and they rely on our Delphi-based software for their daily operation. As in, if our software stops they can't do their primary thing.

Our software is under active development, but we're transitioning away from Delphi. Mainly due to the difficulty finding developers who want to work with it, and C# and .Net now is a much more compelling platform than it was 20 years ago.

Doesn't help that desktop-oriented applications going the way of the dodo, effectively neutering the main selling point of Delphi: its RAD capability.


There are a lot of companies using Delphi where I live (Brazil), food distribution, point of sale, HR, construction, etc. In fact, the first real job I had was developing software with Delphi. I know half a dozen people from the industry who have been working with it for more than 10 years. It’s not a flashy gig, but it’s stable.


A lot of industrial automation around the world, but especially in Russia, likely run on Delphi.

Of course we're talking about stuff like rail yard management, not ticket booking. That used to be mainframe based, but is likely Enterprise Java for the last two decades or so.


Delphi = Make Pascal Great Again!


The HN title makes no sense without the exclamation point that was in the original.


It’s still quite unintelligible even with the exclamation mark.

You can read “29 Delphi” similar to “29 AD”, and it almost works.


It sounds like something the author exclaimed out loud and then wrote down.

A more formal of writing what they said is "It—that is, Delphi—is 29 years old."

Edit: The title read "It's 29 Delphi, I mean" at first. Now it reads "It's 29—Delphi, I mean"


I think it's legible. I'd definitely write/say that way.


I thought "29 Delphi" was the name of a star


If it isn't, it should be.


I always wondered how awesome would it be if they thrown away Pascal from it somehow and replaced with Python.

The same topic with VB6 and putting Perl instead.


You'd basically get Boa Constructor[0][1] and the fact that it mentions that it is based on "wxWindows"[2] and the last release was in 2007 is probably a good indicator of how much Python developers would be interested in such a program.

(incidentally there was also Visual Tcl[3] which was quite interesting in that while it had a Delphi/Lazarus/BoaConstructor-like interface, you could modify the program while it was running)

[0] https://boa-constructor.sourceforge.net/Screenshots/

[1] (the name is probably a play on C++ Builder)

[2] old name of wxWidgets before Microsoft asked them to change it

[3] https://vtcl.sourceforge.net/


It's Nim you want.


I don't. 2024 has very few reasons for making GUI desktop apps anymore.


Not shipping Electron all over the place would be a reason, followed by games, 3D API that can take full advantage of the graphics card, and air gaped environments.


Huh, then why do you talk about Python? The whole point of an IDE like Delphi is the RAD tooling for GUI apps. If you don't want that, language doesn't matter.


I'm no longer inrerested, but it was relevant 20 years ago.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: