Live data from Hacker News

I miss Delphi

news.ycombinator.com

71–80 of 194 posts

Re: I miss Delphi

#71
I did professional development in Delphi for 13 years, writing and maintaining a sprawling 700k line reservation system. I don't miss it much. It was a great learning experience to have to fill in all the gaps in the standard libraries by twisting and turning Pascals rigid rules into something semi-useful; writing foreign function interfaces to WinSock to get around the limitations in the provided toy socket implementation; finding ways to convince the over-engineered pixie-dusty data-layer to issue effective SQL; and trying to keep up with Borland's, nay Inprise's, wait Embarcadero's, ever changing priorities and price hikes.

I don't even find the GUI-builder that amazing. It's very easy to use, and up to a certain scale it's very convenient; but it encourages and rewards coupling the implementation to the interface at every turn, making any attempt to do the right thing an uphill struggle.

One of the most painful memories I have from software, the stuff that haunts me in my dreams; is writing stored procedures for Delphi's favorite database, Interbase. Whenever you did something wrong, it would give you an error saying 'Error at BLR offset 283729' or similar, offset being the offset in the compiled code where the error supposedly happened; thereby forcing an inhuman level of discipline when making changes. I had to write and maintain thousands of lines of that bullshit; since by the time we dug that deep into the performance of the BDE, the entire application was fused to it on UI level. Switching meant going through every single stupid form in the application and carefully translating event logic, bindings and properties to pure SQL.

Thank you Borland, but no thank you; I'm out.

Re: I miss Delphi

#72
I'd love to hear what you think of Anvil (https://anvil.works) - it sounds like exactly what you're asking for.

It's a very Delphi-like (or VB-like) tool for building web apps: Drag and drop for visual layout, then write code with a simple object model behind it. (It's 2017, so Python rather than Pascal - but more similar than it is different. Also built-in git repo, a built-in database, code completion, integration with services like Google Drive/auth/mail, etc.) I'm a cofounder, so I'm interested to know whether it scratches your itch.

Re: I miss Delphi

#73

While I don't necessarily want a Delphi-like thing for Web development, I do want a Delphi-like thing for developing GUI desktop applications. So far I've tried out a few things, but for some reason they don't "feel" the same as Delphi did. Maybe it's because I'm older and have moved on to different tools, or maybe it's because I haven't made the time to properly invest in these. Anyways, here's what I've played with…

Did you try Qt? Creating GUI with qtdesigner is similar to Delphi, and Qt Studio is well integrated nowadays.

Re: I miss Delphi

#74
post #44
post #25

If anyone using Delphi to build big apps in early 90s was told that to do the same function in 25 years time they would need HTML, CSS, JS, Ruby or PHP or similar, some SQL, some Rust or Go and probably a few DSLs - it would take months longer to build - require multiple servers - and would need more test code than app code to get it 98% as stable - you wouldn't have believed a word of it. Every single time I have to…

I write enterprise apps almost exclusively in Ruby and a very small amount of SQL and HTML, but I'm guessing Delphi doesn't have some magical fairy dust that makes SQL unnecessary. If you told me your stack is as you described, I'd say there's either some serious overengineering going on where you work, or you're solving a very different problem that would have been very complicated even in the Delphi world. I think…

Delphi used drag and drop and property setting to do most of what you'd do in Rails. Whether it's validation, master-details views, specifying display formats to represent decimal formats as currencies, specify the correct editing control for a database column - all specified as properties on the components representing the connection to the database.

You'd then be able to drag and drop columns from the list onto a form, and it would create the correct components depending on type, with appropriate labels, etc. Similarly, drop a grid on a form and get type-aware in-cell editing. Automatic updating of a details view when navigating through a parent data set. Etc.

One of the nicest things about Delphi was that you could compile into a single executable that you could deploy without further dependencies. One of selling points of Go, 20 years ago.

Re: I miss Delphi

#75
post #30

I work with Delphi professionally. And we maintain a code base of about 150,000 lines of Pascal and about 300,000 lines of T-SQL (written to work in both Sybase and Microsoft SQL). Delphi may be easy, but it's not simple. Once you get into the meat of things, Delphi's ecosystem truly becomes a limitation. Delphi's main drawback is its lack of library availability. If you are in the marked for modern technology, using…

That was always my biggest disappointment with Delphi. Things that were simple, free, and of very high quality in other languages would lead you into a thicket of shady, low quality nagware VCL components that had a tangle restrictions on use and usually a magic DLL blob you were then forced to distribute along with your app.

It was a constant infuriating disappointment. Delphi should have been so much more.

Re: I miss Delphi

#76

I'd love to hear what you think of Anvil ( https://anvil.works ) - it sounds like exactly what you're asking for. It's a very Delphi-like (or VB-like) tool for building web apps: Drag and drop for visual layout, then write code with a simple object model behind it. (It's 2017, so Python rather than Pascal - but more similar than it is different. Also built-in git repo, a built-in database, code completion, integratio…

If this could make desktop apps, I'd be all over this. A thing like Lazarus that uses Python as the language would be pretty interesting.

Re: I miss Delphi

#77
I miss Visual FoxPro. I have never been more productive in my whole life. Of course compared to today's languages that's an abomination to say, but the tools, the data browser and the sql embedded in the language made it shine on its own merits.

Re: I miss Delphi

#78

While I don't necessarily want a Delphi-like thing for Web development, I do want a Delphi-like thing for developing GUI desktop applications. So far I've tried out a few things, but for some reason they don't "feel" the same as Delphi did. Maybe it's because I'm older and have moved on to different tools, or maybe it's because I haven't made the time to properly invest in these. Anyways, here's what I've played with…

Did you try Qt? Creating GUI with qtdesigner is similar to Delphi, and Qt Studio is well integrated nowadays.

I haven't yet, but it looks like something worth checking out. Thanks!

Re: I miss Delphi

#79

While I don't necessarily want a Delphi-like thing for Web development, I do want a Delphi-like thing for developing GUI desktop applications. So far I've tried out a few things, but for some reason they don't "feel" the same as Delphi did. Maybe it's because I'm older and have moved on to different tools, or maybe it's because I haven't made the time to properly invest in these. Anyways, here's what I've played with…

I'm a little embarrassed to admit it, but just today I was thinking about how I miss Visual Basic 6... Such a great IDE for slapping together a crummy GUI with buttons, textboxes and labels all slightly misaligned :) I'd love to have something similar for Python.

Re: I miss Delphi

#80

The problem with Delphi and its relatives is that they are walled gardens. As long as you are working on the kind of application envisaged by the designers (roughly, CRUD with a SQL backend) everything is easy. As soon as you step outside that domain your foot disappears into a sucking quagmire.

I don't really agree. Delphi made writing native code on Windows really pleasant, primarily because it had (a) a built-in string type with reference counting and (b) strong conventions around object ownership and construction / destruction.

The built-in string type interacted really well with the Win32 API, and it was universal - there wasn't one string type to deal with the platform, and another string type for your own code, and yet another string type for third party code, all too common in C++, especially in the 90s.

The object model - zero-initialized reference types with a Destroy method that was safe to call on null values - avoided one of the biggest pains in C++ exception safety, in particular safely destroying partially constructed instances. The idioms in Delphi don't catch all cases (e.g. if a destructor throws, you're potentially going to leak), but they work really well 99% of the time without convolutions or RAII wrappers.

Delphi did exceptions very well too. Because of the strong conventions around try/finally to wrap creation and destruction of objects, exceptions never felt dangerous or uncontrolled. I don't think anyone who used Delphi in anger pined for nothrow, explicit exception specifications or wholesale replacement of exceptions with error codes.

The point is that it was a high-level native language language that was far easier to use correctly than C++.

Post reply on HN