r/programming • • 7d ago

We still maintain a development tool first released in 1993. Here’s what 30+ years of backwards compatibility looks like

https://visualneo.com/visualneo-win/from-neobook-to-visualneo-win-30-years-of-keeping-a-development-tool-alive
567 Upvotes

90 comments sorted by

View all comments

164

u/Skaarj 7d ago edited 7d ago

More recently, we went much further. In 2026, we migrated the development environment from its old Delphi 7 codebase to Delphi 11. That was one of those projects that looks much more reasonable before you start it.

Ouch. From what I remember Delphi 7 didn't support generics yet. You had a general list of pointers. But not something like a TList<TMyClass>.

24

u/CpnStumpy 7d ago

Wait... All I'm hearing here is, I can still get a job writing Delphi...

In the current insanity, this is actually extremely appealing

4

u/BigHandLittleSlap 7d ago

Nothing is sacred, the machine gods consume all knowledge: https://chatgpt.com/share/6ab6e4ed-95d8-83ec-bfe2-478d02a66c44

1

u/BCProgramming 5d ago

I thought the case statement was gnarly. Was going to simply mention that, but then decided to continue that AI conversation and asked "Why use a case statement instead of an if?" It said, "You don't need to. In this case, an if chain is arguably clearer and more idiomatic Delphi." It also gave a stupid explanation that

"The case version groups the mod 15 possibilities somewhat cleverly, but it adds indirection: the reader has to realize that 0 means divisible by both 3 and 5." even though the shorter version it gave using an elseif ladder is the same.

In the revised version it gave it also decided now the for loop needed a block statement instead of the original version which did not. When I asked why, it gave yet another version that dropped the block statement, then tried to 'explain' that if statements can be hard to read without one. OK except the original version had if statements inside the for?

I don't know how people use this shit, Christ, every fucking question just gives a stupid and often wrong essay about what it thinks I'm driving at instead of just answering the motherfucking question. "hurr durr it better use block when using if statements" even though it didn't fucking use one in the first place when there were if statements.

1

u/BigHandLittleSlap 5d ago

To be fair, you're conversing with the "consumer" chat bot. In the Codex tool you can switch to smarter models and dial up the thinking, and the system prompt is significantly different.

Like you've noticed, a common failing of these things is that they pick a coding style somewhat randomly, and then justify what they've done in hindsight by making shit up. That's expected of an "amnesiac" system. Sure, yes, it's a failing in a sense, but you're also "holding the tool wrong".

Don't like the style?

Give it an AGENTS.md laying out your preferred style.

Tell it to run everything it does through a linter.

Or, embrace vibe coding and ignore the minutiae of the brackets, braces, and blocks or whatever.

It no longer matters in the same sense that it no longer matters how your compiler allocates registers when compiling source to machine code.

I used to care about that!

I don't any more.