In any discussion about Delphi, you really should also mention Lazarus (https://www.lazarus-ide.org/). It's more mature (i.e. more cross platform) than Delphi, and fully open source. It's based on the Free Pascal Compiler (FPC) (https://www.freepascal.org/) (also open source).
It is more cross platform but integrated debugger kind of sucks. I am doing some project for Raspberry Pi 4 and had to resort to debugPrint() as on some breakpoints it reports gdb error and terminates debugging.
Indeed, i always have issues with gdb and Lazarus (under Windows) with the debugger randomly deciding to stop working or not stepping through code (even with zero optimizations) or other stuff.
However the new debugger written specifically for Free Pascal seems to work much better - just not available everywhere ATM.
The original Delphi compiler which was in use until some versions ago (and might still be available, dunno) was much faster than Free Pascal while producing more or less the same quality code (in terms of performance) but could only target Windows. Free Pascal targets a bunch of other CPUs and OSes though.
I haven't tried any of the recent versions, but AFAIK they're based on LLVM so i'd expect compilation times to have went up but produced executables to be a bit faster.
FWIW Free Pascal's developers have mentioned at the past that fast compiler performance isn't really something that they care much about (though in practice FPC is among the faster compilers, just not as fast as Delphi used to be).
Well, Free Pascal was never as fast as Delphi and i doubt its feature set would allow it to be as fast anyway. Delphi only supported a single platform for a single CPU for the largest majority of its lifetime whereas Free Pascal supported a ton of different CPUs and platforms while also adding support for a variety of different Pascal dialects at the same time and often extending the language beyond what you'd see in Delphi - all that adds up quickly.
Still, as i wrote, in practice FPC is quite fast. Lazarus itself is almost two million lines of code and yet it compiles and links in seconds.
Well... in a perfect universe where bad decisions are never made, sure. But a few years after the turn of the century someone at Borland/Inprise/CodeGear/whatever decided to rewrite the IDE while chasing .NET when under a company that by that time had completely lost any interest in development tools.
I've only tried the trial/free Delphi versions sporadically and TBH 'polished' isn't something i'd use to describe them. Then again neither is something i'd use to describe Lazarus (which i'm using much more often), however that is for completely different reasons.
Delphi, ah the memories. I use to make a fair amount of money in the late 90s making shareware applications with Delphi. It was the most productive I have ever been as a developer. But, the world moved to web fairly rapidly, so I had to move on to the web.
I had Spinel Clean and Tidy that let you clean-up your registry and various temp files that were left all over the place back in the Win95 era. Also Spinel ScreenPik which was a screen capture utility.
embarcadero , wondering why they couldn't retain the original name borland? .. it was a nice platform , cant afford subscription model so moved on to open source technologies.
I am not writing Delphi code anymore (but did that for close to 20 years professionally), but there are many artifacts still up and running and would probably run for next few decades if not longer.
1) I've started my programming career by creating new user interface for device that measures properties of metal joins on [BIG] machines [1]. It is used by many mining and energy companies. First version of this device was created somewhere in 70s so I guess this new one will last for many decades to come.
2) There was a time when every company created its own ERP software and I was hired to help maintain 500k lines of code monster that is used by fair chunk of construction companies in Austria. All the accounting, warehouse, quoting, payroll and what not was based on top of old Paradox database. Custom hacks were deployed to make sure we fit everything into 64kb of index space and I've got massive headaches trying to make work decades old database in networking mode. Another fun year was at the time when Vista changed memory layout and you sometimes crash everything because of memory location that was meant to be for printers is now occupied by sound stuff and you've touched protected memory. Anyway as far as I know this system is up and running, counting numbers, printing invoices, work orders and quotes all days long.
2) Funny, I did a fair bit of freelancing at construction companies back in the early 90's, mostly using Paradox (3.x DOS, if I'm not wrong) and mostly helping out with the insane reporting required for taking part in public tenders. I still have nightmares and have not gone back to freelancing since then.
Oh yeah, the amount of reports are insane. There were more than 200 different reports implemented in the tool and most of them have been customized for each separate customer. It was spaghetti bowl of half baked custom DSL, config files and what not.
We’ve got a 20 year Delphi code base for a robotic product that we need to update the functionality and simplify the UI. If I could have 2 Delphi devs to take on this project I’d be delighted. We’ll probably just use a .net cover though.
There are a lot of companies using Delphi in some very cool apps. There has been a lot of them published recently on the updated blog site at Embarcadero.
On what platform(s) do you run Lazarus if I may ask? Does it work reliably for you?
I've tried Lazarus a while ago on macOS and the out-of-the-box experience seemed a bit flaky, unable to compile (or run) a simple writeln('hello world') throwing obscure linking errors. (Granted XCode occasionally gives me the same experience! Mostly because of code signing issues.)
I'm part of a 4 man team that maintains a 1.3 million loc application in the PropTech industry. It's been jazzed u with a WPF front end I can compile all 1.3 million loc in 11 seconds on my work laptop using Delphi Xe7.
The rest of the form has gone web but moving 1.3 million LOC would be a 10 year project we estimate. So it's not happening. Customers love it and thats what matters.
I think I've posted it before, but I'll repeat myself nevertheless: Delphi was my first contact with programming.
I was probably 13 or 14 years old and had no idea what I was doing, but I could resize the windows, add items to lists, change the color of Strings and place buttons and stuff like this.
So, _obviously_ I needed the Delphi 6 Enterprise edition which a friend had (pirated of course) and gave it to me on one of those really cheap CD-R with that distinctive plastic smell.
One of the first "real programs" we wrote was something to read sensor data via the parallel port. It was for a school project where a belt had to move and then stop, once the light barrier would sense something. We killed lots of parallel ports in doing that, because we just didn't knew how to do it.
Didn't really write anything more useful at that time, but it showed me that there's a world behind what we see and know as "programs". Maybe it laid some fundations in my brain, who knows.
Every time I see Delphi pop up I think I should probably have a look at it. But I'm a web monkey now. Lost for everything good, but I like to think back of the 14 year old me. Better times.
My experience was very similar to yours, playing around with components and forms on Delphi 3; But in addition to that I've managed to learn some assembly with Delphi (asm blocks), go figure.
And the speed of the compiler on my venerable Pentium MMX 166MHz!!! (Sad looks towards my Rust build on a 100x more powerful computer :-( )
This could have been written by me. I loved Delphi and learned how to write software using Delphi 5. We got a cheap copy from school so I didn't have to pirate it. I still have that printout of the class hierarchy of the standard library and the CD ROM.
I loved Delphi and I'll be forever grateful for the lessons I've learned.
For the most part I was spared of this fate. I do everything from firmware to enterprise applications. Delphi/Lazarus are still both in my toolset for Windows and Raspberry Pi GUI based projects. Most of the time it is C++ based servers though.
I was entertaining QT at some point but it feels like a legal minefield with all their licensing shenanigans to me.
I already had a background on electronics and, lucky me, I burnt no parallel ports.
When I joined the university I met a guy who built amateur solid motor rockets and I designed and built a prototype atmospheric probe for it. It measured temperature and barometric pressure only, and a program in Delphi 7 downloaded the data from a PIC mcu via parallel port, displayed them in a grid and stored them in a Paradox table (by then, I didn't know there was a difference between databases and tables and couldn't understand all that excitement some of my colleagues felt about Oracle, MSSQL and alikes. "They are mere files to store tabular data", I used to think).
By then, that was the most complex project I had built, and I can still feel the proud and the happiness so vividly. I was so ignorant about so many things that it didn't even occurr to me to look for information on the internet. And, anyway, it seems that the modus operandi by the time wasn't that -- nowadays we go right into the internet to look for the most suitable lib to the task.
I just got the data sheets, the docs and examples installed along Delphi, and found my way through.
It wasn't productive, but those were definitely good times.
Delphi was great. I remember downloading it (pirated obviously) over a 14k connection. It took like a day.
The killer feature was that it could build stand lone executables with no runtime.
On one hand I really miss those days. On the other hand, what we have today is far superior. Its a great time to be alive for a kid who wants to learn how to program.
We might not have better commercial tools for building pixel-perfect UIs for apps that are going to run on a narrow range of devices in terms of capabilities and display sizes.
We've got better F/OSS tools for, well, everything else, desktop or otherwise, than the commercial tools of that time, though.
yep. This is exactly what attracted me to Delphi. Did a lot of Pascal dev in college with TP. Then tried out VB 3.0 for windows dev. Hated VB because of the performance and having to include the VB runtime. Delphi created a single standalone executable and it was fast. Back in those days, if you wanted close to C/C++ performance without having to learn or deal with the complexities, Delphi was the next best thing.
Yes, that is why when Delphi 1 (or 2?) was announced, it was billed as the VB killer. That never happened, I guess, though it did become somewhat successful. I used both VB and Delphi some, in work and personal projects. Preferred Delphi by far.
Oh I definately agree, Delphi was a better dev tool compared to VB at the time. No runtime needed to be shipped, standalone fully compiled executable alone was the killer feature.
I did not used Delphi but did a a few Windows apps with C# and Windows Forms int he past, I am curious in the present day for Windows only dev what would be the advantage of using Delphi over C# with VS or Intellij.
Delphi produces native applications with no dependency, offers components encapsulating Windows APIs, COM, WinRT -- and a great native platform experience. Binary code with no dependency = real xcopy deployment, small deployment, memory and CPU efficiency. It's like writing in VC++ in terms of power, but visual and high level in terms of dev experience
Thanks for response, I agree with parts of your response but I do not understand what you mean with "components encapsulating Windows APIs, COM, WinRT" in comparison with .Net , I mean .Net also wraps the majority of the win32 and other APIs.
Yes but the resulting .exe depends on like 20 installed .dlls. For starters, the .NET runtime, which will fundamentally limit where your app runs.
Second updates in those underlying dlls and runtimes may prevent your app from working correctly.
So if the customer doesn't have or screws up their .NET installation, your app stops running. Getting a Delphi app to stop running on windows through bad sysadminning ... I haven't seen it done.
Think of C# apps like java .jar applications. They end in .exe, but they're not, not really. And at least .jar makes it a lot clearer it needs a JRE to run, and it's cross platform to boot.
I know the issues with the .Net dependency, like user has 4.0 but the app depends on 4.5 or similar problems. But this is not a big issue and you can if you want bundle the Java or .Net runtime inside the application.
Anyway I was aware of this binary size / memory usage difference in favor of unmanaged code, my question was something else, if you can clarify that or admit it was an error would be great.
> Yes but the resulting .exe depends on like 20 installed .dlls. For starters, the .NET runtime, which will fundamentally limit where your app runs. Second updates in those underlying dlls and runtimes may prevent your app from working correctly.
Not these days (for newer codebases).
The DotNet Framework has that issue with the runtimes, but it's been a fair few years since Microsoft were suggesting people start new projects with the Framework for much other than WinForms.
The present and the future of DotNet is DotNet Core, which can produce cross-platform single-file stand-alone dependency-free binaries, well suited to a copy/paste deploy if you want.
That said, away from Windows you're a bit screwed for the GUI. It's a great flow for cross-platform console tools and web apps/servers though, especially with the free VS2019 Community Edition or, better still given it is many gigabytes less and cross-platform, with VS Code and the C# plugin.
Delphi has make it very easy to call the Windows API, COM and WinRT, with wide coverage, and encapsulates some of the complexities to make it easier for developers, as you would expect from any good programming tooling today.
Where it gets very cleaver is actually in the way OOP/components are used under the hood to already make many modern features cross-platform ready!
e.g. The same component used by developers for linking to the Notifications API's on Windows 10, works on Android, iOS and macOS! Under the hood, Interfaces are providing back the platform specific implementation, but at a high level you just work with the same component in code, making it very fast to develop cross platform.
The same is true of the RTL for parallel programming, file access etc. - This is thanks to the way API's get encapsulated. I hope that answers the question.
Thanks for trying to respond, it was clear to me that Delphi is similar with Qt ,Java and .Net and encapsulates platform specific stuff in OOP components. My question was why Delphi over C# ? The answer seems to be that if you don't want or can't use the .Net runtime dependency, or maybe if you want small binary size or small memory usage.
My conclusion is that for Windows only GUI there is no major advantage in favor of Delphi, .Net has more tools and libraries. For cross platform it seems Delphi has a superior story though with official support for GUIs on major platforms so is more similar to the Qt Toolkit (Qt also includes a GUI designer and non GUI related components).
One of my competitors used Delphi to write their software. One part of the software ran under the print spooler so when 64-bit Windows came along they were stuffed as the 64-bit version of Delphi was slow to arrive. I did quite well out of that.
I remember when I turned 16 and all I wanted as birthday present was a license for Delphi 2009. If I remember correctly, it costed more than €1k at that time.
Obviously I got something else.
When I learned about the free Visual Studio Express, I switched to .Net development and never used Delphi again.
This experience shaped me and all tools I will ever create will be available for free to students and kids.
Thats because Microsoft hired Anders Hjeilsberg, architect of Delphi, to create the .net platform and the C# language. And in the process signing the death warrant for Borland (who created Delphi).
The rumour was Microsoft's own staff preferred using Delphi to their own tools, which is why they hired Hjeilsberg.
The killing feature was not .Net for me, but the free and fully featured IDE. I hated to type out every public declaration twice in the Delphi 5 IDE I got from school.
I remember that I hated the startup time of Visual Studio though. In Delphi 5, I typed invalid syntax to create a temporary bookmark: When I pressed F5 to compile the project, I immediately jumped to it.
This was entirely impossible for C# programs.
When it first came out, Delphi was streets ahead of the main Microsoft options available at the time, namely VB and Visual C++. I remember it with great affection.
A lot of this was good, reminding us that the world of 1995 when Delphi was first released was quite different from now. But the idea that "The video games industry was in its early days" in 1995 is a bit of a weird assertion. So the 8-bit and 16-bit eras didn't count?
Unfortunately, I've never used Delphi. But the article makes me nostalgic for the old school Borland style GUIs with icons on the buttons and stippled backgrounds. Or the CTL3D style which was really modern at the end of the Win 3.1 era.
I remember using Delphi 1 on a 386 under Windows 3.1 and watching and even listening to the GUI reloading from the swap file component by component. I had enough RAM but I think the Windows memory manager was not great. Today, I'd throw the PC out the window, but at the time, there was something reassuring about it. But maybe I'm embellishing my memories.
BTW from memory Delphi was named as such as it was the main route to Oracle which was the most common enterprise database. https://en.wikipedia.org/wiki/Delphi
I still occasionally come across Delphi in use today, and even new projects are started using it as the core technology. It definitely wouldn't be my choice but it is interesting to see how productive people can be with this even now.
I remember when I discovered Delphi, it was in circa 2001-2002.
At the time I was 16-17 and knew how to program with PHP (I was modding phpBB at the time), tried with PHP-GTK to build user interfaces, but found it not that great.
Then I discovered Delphi, already knew some parts of Pascal. But what a gem it was, in a matter of days I felt like I was totally proficient, could create windows, manage resize, add components, tweak colors, run background tasks, want a listview? just drag it. Need a HTTP call? drag the component (can't remember the name), connect onclick to it, and you're done. I recall the website torry.net with plenty of libraries to download.
I also tried Borland C++, but wasn't good enough with it, and as I remember discovering that even DevC++ was written with Delphi. Simply figuring out it was good enough for me.
I created so much things with it until like 2004-2005 I think, like a complete terminal on my Windows, re implementing standard commands all within Delphi. Wrote some games companion for Rainbow Six and RavenShield [1], fetching statistics and available servers, scanning games to find your friends, downloaded thousand times. An alt-tab which worked with Quake III that at the time was also downloaded hundreds of times, a companion to The All Seeing Eye (server browsing), a small Photoshop tool where I learnt how to create my own filters like Gaussian blurs and so on [2], key mapping profiles for plenty of games by modifying INI files [3], a code formatter inside DevC++ [4], ...
I have lost all of my source code (didn't knew how to backup things at the time), still have some binaries and screenshots for posterity
I remember this period with nostalgia and great passion.
Thank you Delphi for the good times and all the fun, this is when I really knew what I wanted to do after school.
Delphi was my first programming language. I learned it from programming magazines I used to buy when I was about 17 years old or so.
My dad had a small supermarket at that time, and I remember the first useful program I built in my life was a small application to scan discount coupons he used to accept. Those coupons had a barcode and I discovered the hand scanners we used were just doing keyboard emulation. So I wrote an application in Delphi that would allow my father to scan all coupons at the end of the day and then print a sheet with a table of quantities, amounts, subtotals and totals of the money he had in coupons... something he was doing by hand before this. He was so happy with this program.
The program itself was very, very, very shitty, but it worked well for him. For example, at that point I didn't even knew that arrays existed, so all the logic and multiplication was done manually, like label43 = textInput25 * textInput24 * 0.1.
I also remember that, in order to send the form to the printer, I wrote code to go control by control, change the background to white, the border to black, calling something like form.printForm() and then restoring all the colors. This caused a horrible flickering when printing... but hey... it worked!!
The best memories I have was that probably, this was the first time I had that "feeling" of having built something useful to somebody. And certainly the best moment was when one of his suppliers who also accepted those coupons asked us for a copy of the program. Great times.
Some days I feel like I've never have built something as useful again since then .
>The best memories I have was that probably, this was the first time I had that "feeling" of having built something useful to somebody. And certainly the best moment was when one of his suppliers who also accepted those coupons asked us for a copy of the program. Great times.
And then you go off to college, and one day the program stops working because of one problem or another, and they call you in the middle of studying for final exams, and that's when you learned about technical support and technical debt and all the things that make programming less fun!
Some people have recurring dreams in which they show up to school or work in their pajamas... my recurring dream is that some program I wrote in high school is still being used twenty years later, and they come calling because something broke...
You and I sound like we had very similar childhoods . . .
I wrote a tool that managed a bunch of information related to the AP Computer Science exam[0] which my High School continued to use for 10 years after I graduated. I had received a call on it once, five years after I graduated, from a guy filling in for the teacher I wrote it for and I ended up working with one of his students to figure it out ... while at the Atlanta airport, traveling for work. :)
[0] I don't recall the details, but it was a surprisingly involved text-based pascal program.
I'm gonna be honest, if I'm just sitting in the airport with not much to do, this sounds like fun. No pressure, just taking a call and debugging an old script, with a chance to give a kid a good story/learning experience...
"C'mon kid, I had it working for 5 years and you broke it? What'd you do!" :)
Oh, man, the only thing better would have been if one of my colleagues was there with me... I was very young in this job (19, first real job, next youngest was 26). Waiting on my bags, traveling for business as a 19-year old kid and fielding support calls for software I wrote on the side. Even without any witnesses, it felt pretty damn awesome. I remember the incident very well because the flip side was that I was scheduled to work at the switch site in Downtown, which meant I was staying at a really nice hotel and besides the software issue, I had a much more pressing problem of Northwest Airlines[0] having managed to lose my bags on a direct flight and I had failed to pack the usual emergency items in my carry-on[1].
[0] Yup, it was that long ago.
[1] Someone told me "they don't lose bags on a direct flight". Very wrong. Lost them on the way back, too -- same fscking trip. But Detroit opened a new terminal and was having a "holiday baggage handling crisis"; after a few weeks they compensated me and sometime the following summer my bag appeared on my front porch. The "crisis" only affected international flights, so I wonder if my luggage had a better trip than I did. It was seriously more than 6 months lost.
Oh, this brought back memories of the first useful Delphi program I wrote, back when I was a teenager:
The basketball club of our city held an online popularity contest, where the winner would receive free tickets or something. My friend desperately wanted to win this competition, so I wrote a Delphi program that would record the mouse clicks it took to perform a single vote and then repeat them forever. All of our peers received a copy of the program and in a coordinated attack, we opened the site in our browsers, taught the program to vote and left it running until my friend rose to first place. Sadly, he ultimately lost the competition, because another fan was better at forging votes. He surpassed us with ease. I guess he just hammered the server with HTTP POST requests, something I had no clue of at the time. In the end, the number of votes on the first and second place were laughably off the charts.
Years later, when we were adults, my friend became friends with the owner of the club, who invited us to a game. There, my friend introduced me by telling him this story, which I had completely forgotten. The owner had a good laugh, but I think I blushed a little.
I have had nightmares about stuff like this. I get called in to update an in house program, start looking at the code and exclaim “wtf is this? Who wrote this?”...and then enters a sheepish looking 17 year old. Now I have to back track “hold up there...is this your first program? Really? Good job”.
yea i learned about that early on, and the hard way... first day i was told by the VP to review a bunch of code and share my thoughts with the team next day. all the code that, IMO, had the worse issues, had all been recently redone by the guy who was adjacent to my boss. that sure got me started on the wrong foot with that guy.
> Some days I feel like I've never have built something as useful again since then
Oh I am so familiar with this feeling. I recently found a program I wrote at my last job on a flash drive. It came from a chance conversation with one of the scientists I worked with.
After listening to her lament the many hours of manually parsing log files it took for her team to generate reports, I wrote a short program one day (with a few updates over the following weeks) to do it for them. Some days I feel that the code I wrote that one slow afternoon was the most useful thing I've done in terms of ROI. A couple hours of fun text manipulation and voila: a bunch of Very Happy People (tm) and untold hundreds of hours of time saved.
I feel like back then I could appreciate the usefulness of my work a lot more. Even a very simple program was like magic and I got my feeling of accomplishment. Nowadays it's all about best practices, getting stars on Github or writing influential blog posts to further my career. By surrounding myself with other successful people, the bar has become a lot higher than in my childhood days where most peers could barely even turn on a computer. I have realized that writing a software to do X is most of the time trivial; getting tests to pass is only the very first step. But writing software in a _good way_ (whatever that means) is the hard part and the worst thing is that there is no clear indicator if you are even improving. It used to be the program either works or it doesn't. But values like maintainability and scalability are intangible and a perfectionist like me is compelled to work themselves to death in pursuit of an unclear goal.
In many cases I don't even care if the program works as long as the code is beautiful, like a mathematician who spends all his time working out elegant proofs with zero applicability whatsoever. It doesn't help that I have to waste my talent on pointless CRUD and yet another e-commerce system, which only serves to sell people things they don't need and make the rich even richer.
I did something similar! It shoved lab results into a SQLite DB and ran some simple queries for them. Before it was all being hand imported into excel. I thought it was neat throw away work but turned out the entire lab team migrated over to it.
Something about people actively choosing to use your work with no pressure, marketing or mandate just hits different emotionally.
>The program itself was very, very, very shitty, but it worked well for him. For example, at that point I didn't even knew that arrays existed, so all the logic and multiplication was done manually, like label43 = textInput25 * textInput24 * 0.1.
That is exactly how I wrote my Delphi code as kid!
Later, I learned to use arrays, and used them for everything because I did not know any other data structures. Like, array of array of array of integer. And the ref counting makes them memory safe. Delphi had the best arrays of all languages
At the university, they taught more complex data structures like linked lists and tree structures, so I started using them.
Then I learned about caches and that tree structures are bad for caches. Optimal are arrays. One should only use arrays for everything, so I started using arrays again.
Now I know about loop unrolling. And about the conservativity of the Pascal optimizer, it never keeps values in registers if they can alias. Heap values like arrays are always assumed to alias. If you do not use arrays, but use a separate local variable for every element, it can be much faster.
173 comments
[ 6.0 ms ] story [ 211 ms ] threadHowever the new debugger written specifically for Free Pascal seems to work much better - just not available everywhere ATM.
I haven't tried any of the recent versions, but AFAIK they're based on LLVM so i'd expect compilation times to have went up but produced executables to be a bit faster.
FWIW Free Pascal's developers have mentioned at the past that fast compiler performance isn't really something that they care much about (though in practice FPC is among the faster compilers, just not as fast as Delphi used to be).
That's an interesting evolution. It had a lot of nice features, but compile time was the only thing about Delphi that was really magical.
Still, as i wrote, in practice FPC is quite fast. Lazarus itself is almost two million lines of code and yet it compiles and links in seconds.
Usually that implies that bugs and rough patches have been ironed out. I would have to say that Delphi is far more polished than Lazarus.
Not that I'm complaining about Lazarus, it's an amazing accomplishment and I play around with it every now and then to see how far it's come.
I've only tried the trial/free Delphi versions sporadically and TBH 'polished' isn't something i'd use to describe them. Then again neither is something i'd use to describe Lazarus (which i'm using much more often), however that is for completely different reasons.
So, who's using Delphi in prod anno 2021?
1) I've started my programming career by creating new user interface for device that measures properties of metal joins on [BIG] machines [1]. It is used by many mining and energy companies. First version of this device was created somewhere in 70s so I guess this new one will last for many decades to come.
2) There was a time when every company created its own ERP software and I was hired to help maintain 500k lines of code monster that is used by fair chunk of construction companies in Austria. All the accounting, warehouse, quoting, payroll and what not was based on top of old Paradox database. Custom hacks were deployed to make sure we fit everything into 64kb of index space and I've got massive headaches trying to make work decades old database in networking mode. Another fun year was at the time when Vista changed memory layout and you sometimes crash everything because of memory location that was meant to be for printers is now occupied by sound stuff and you've touched protected memory. Anyway as far as I know this system is up and running, counting numbers, printing invoices, work orders and quotes all days long.
[1] https://www.popsci.com/resizer/meUXbu78Po3bGHtIFIaRTwBsLqg=/...
2) Funny, I did a fair bit of freelancing at construction companies back in the early 90's, mostly using Paradox (3.x DOS, if I'm not wrong) and mostly helping out with the insane reporting required for taking part in public tenders. I still have nightmares and have not gone back to freelancing since then.
Willing to help. Drop me mail to peter at mobiliodevelopment dot com
https://blogs.embarcadero.com/category/showcase/
I still maintain it
But I ported it to FreePascal/Lazarus, since I did not want to buy newer versions
Invoking fpc from Terminal worked OK.
It is ok. On Linux nothing is really reliable
The rest of the form has gone web but moving 1.3 million LOC would be a 10 year project we estimate. So it's not happening. Customers love it and thats what matters.
I was probably 13 or 14 years old and had no idea what I was doing, but I could resize the windows, add items to lists, change the color of Strings and place buttons and stuff like this.
So, _obviously_ I needed the Delphi 6 Enterprise edition which a friend had (pirated of course) and gave it to me on one of those really cheap CD-R with that distinctive plastic smell.
One of the first "real programs" we wrote was something to read sensor data via the parallel port. It was for a school project where a belt had to move and then stop, once the light barrier would sense something. We killed lots of parallel ports in doing that, because we just didn't knew how to do it.
Didn't really write anything more useful at that time, but it showed me that there's a world behind what we see and know as "programs". Maybe it laid some fundations in my brain, who knows.
Every time I see Delphi pop up I think I should probably have a look at it. But I'm a web monkey now. Lost for everything good, but I like to think back of the 14 year old me. Better times.
And the speed of the compiler on my venerable Pentium MMX 166MHz!!! (Sad looks towards my Rust build on a 100x more powerful computer :-( )
I loved Delphi and I'll be forever grateful for the lessons I've learned.
For the most part I was spared of this fate. I do everything from firmware to enterprise applications. Delphi/Lazarus are still both in my toolset for Windows and Raspberry Pi GUI based projects. Most of the time it is C++ based servers though.
I was entertaining QT at some point but it feels like a legal minefield with all their licensing shenanigans to me.
I already had a background on electronics and, lucky me, I burnt no parallel ports.
When I joined the university I met a guy who built amateur solid motor rockets and I designed and built a prototype atmospheric probe for it. It measured temperature and barometric pressure only, and a program in Delphi 7 downloaded the data from a PIC mcu via parallel port, displayed them in a grid and stored them in a Paradox table (by then, I didn't know there was a difference between databases and tables and couldn't understand all that excitement some of my colleagues felt about Oracle, MSSQL and alikes. "They are mere files to store tabular data", I used to think).
By then, that was the most complex project I had built, and I can still feel the proud and the happiness so vividly. I was so ignorant about so many things that it didn't even occurr to me to look for information on the internet. And, anyway, it seems that the modus operandi by the time wasn't that -- nowadays we go right into the internet to look for the most suitable lib to the task.
I just got the data sheets, the docs and examples installed along Delphi, and found my way through.
It wasn't productive, but those were definitely good times.
The killer feature was that it could build stand lone executables with no runtime.
On one hand I really miss those days. On the other hand, what we have today is far superior. Its a great time to be alive for a kid who wants to learn how to program.
We've got better F/OSS tools for, well, everything else, desktop or otherwise, than the commercial tools of that time, though.
I still haven’t found anything with such a good interface builder (Xcode comes close, but it’s still worse imho)
Second updates in those underlying dlls and runtimes may prevent your app from working correctly.
So if the customer doesn't have or screws up their .NET installation, your app stops running. Getting a Delphi app to stop running on windows through bad sysadminning ... I haven't seen it done.
Think of C# apps like java .jar applications. They end in .exe, but they're not, not really. And at least .jar makes it a lot clearer it needs a JRE to run, and it's cross platform to boot.
I know the issues with the .Net dependency, like user has 4.0 but the app depends on 4.5 or similar problems. But this is not a big issue and you can if you want bundle the Java or .Net runtime inside the application.
Anyway I was aware of this binary size / memory usage difference in favor of unmanaged code, my question was something else, if you can clarify that or admit it was an error would be great.
Not these days (for newer codebases).
The DotNet Framework has that issue with the runtimes, but it's been a fair few years since Microsoft were suggesting people start new projects with the Framework for much other than WinForms.
The present and the future of DotNet is DotNet Core, which can produce cross-platform single-file stand-alone dependency-free binaries, well suited to a copy/paste deploy if you want.
That said, away from Windows you're a bit screwed for the GUI. It's a great flow for cross-platform console tools and web apps/servers though, especially with the free VS2019 Community Edition or, better still given it is many gigabytes less and cross-platform, with VS Code and the C# plugin.
Where it gets very cleaver is actually in the way OOP/components are used under the hood to already make many modern features cross-platform ready!
e.g. The same component used by developers for linking to the Notifications API's on Windows 10, works on Android, iOS and macOS! Under the hood, Interfaces are providing back the platform specific implementation, but at a high level you just work with the same component in code, making it very fast to develop cross platform.
The same is true of the RTL for parallel programming, file access etc. - This is thanks to the way API's get encapsulated. I hope that answers the question.
My conclusion is that for Windows only GUI there is no major advantage in favor of Delphi, .Net has more tools and libraries. For cross platform it seems Delphi has a superior story though with official support for GUIs on major platforms so is more similar to the Qt Toolkit (Qt also includes a GUI designer and non GUI related components).
But for Windows in jumped right to Visual C++. All because Delphi was “dying”, at least in popularity. So I never got to give it a chance.
When I learned about the free Visual Studio Express, I switched to .Net development and never used Delphi again.
This experience shaped me and all tools I will ever create will be available for free to students and kids.
The rumour was Microsoft's own staff preferred using Delphi to their own tools, which is why they hired Hjeilsberg.
I remember that I hated the startup time of Visual Studio though. In Delphi 5, I typed invalid syntax to create a temporary bookmark: When I pressed F5 to compile the project, I immediately jumped to it. This was entirely impossible for C# programs.
Secondly, he only joined after been asked multiple times by ex-Borland colleges when he felt it wasn't his place any longer at Borland.
https://youtu.be/0g-IjyFnrAM
Lovely typo, although it undeniably feels as if Delphi has been around forever.
Maybe if Microsoft had bought it instead of "just hiring" Anders Hejlsberg?
At the time I was 16-17 and knew how to program with PHP (I was modding phpBB at the time), tried with PHP-GTK to build user interfaces, but found it not that great.
Then I discovered Delphi, already knew some parts of Pascal. But what a gem it was, in a matter of days I felt like I was totally proficient, could create windows, manage resize, add components, tweak colors, run background tasks, want a listview? just drag it. Need a HTTP call? drag the component (can't remember the name), connect onclick to it, and you're done. I recall the website torry.net with plenty of libraries to download.
I also tried Borland C++, but wasn't good enough with it, and as I remember discovering that even DevC++ was written with Delphi. Simply figuring out it was good enough for me.
I created so much things with it until like 2004-2005 I think, like a complete terminal on my Windows, re implementing standard commands all within Delphi. Wrote some games companion for Rainbow Six and RavenShield [1], fetching statistics and available servers, scanning games to find your friends, downloaded thousand times. An alt-tab which worked with Quake III that at the time was also downloaded hundreds of times, a companion to The All Seeing Eye (server browsing), a small Photoshop tool where I learnt how to create my own filters like Gaussian blurs and so on [2], key mapping profiles for plenty of games by modifying INI files [3], a code formatter inside DevC++ [4], ...
I have lost all of my source code (didn't knew how to backup things at the time), still have some binaries and screenshots for posterity
I remember this period with nostalgia and great passion.
Thank you Delphi for the good times and all the fun, this is when I really knew what I wanted to do after school.
[1] https://rehost.diberie.com/Uploads/37/20210215-160435-948cd7... [2] https://rehost.diberie.com/Uploads/37/20210215-160351-cc03e0... [3] https://rehost.diberie.com/Uploads/37/20210215-160401-712b1f... [4] https://rehost.diberie.com/Uploads/37/20210215-160338-6f856c... && https://rehost.diberie.com/Uploads/37/20210215-160330-cc512a...
Delphi was my first programming language. I learned it from programming magazines I used to buy when I was about 17 years old or so.
My dad had a small supermarket at that time, and I remember the first useful program I built in my life was a small application to scan discount coupons he used to accept. Those coupons had a barcode and I discovered the hand scanners we used were just doing keyboard emulation. So I wrote an application in Delphi that would allow my father to scan all coupons at the end of the day and then print a sheet with a table of quantities, amounts, subtotals and totals of the money he had in coupons... something he was doing by hand before this. He was so happy with this program.
The program itself was very, very, very shitty, but it worked well for him. For example, at that point I didn't even knew that arrays existed, so all the logic and multiplication was done manually, like label43 = textInput25 * textInput24 * 0.1.
I also remember that, in order to send the form to the printer, I wrote code to go control by control, change the background to white, the border to black, calling something like form.printForm() and then restoring all the colors. This caused a horrible flickering when printing... but hey... it worked!!
The best memories I have was that probably, this was the first time I had that "feeling" of having built something useful to somebody. And certainly the best moment was when one of his suppliers who also accepted those coupons asked us for a copy of the program. Great times.
Some days I feel like I've never have built something as useful again since then .
And then you go off to college, and one day the program stops working because of one problem or another, and they call you in the middle of studying for final exams, and that's when you learned about technical support and technical debt and all the things that make programming less fun!
Some people have recurring dreams in which they show up to school or work in their pajamas... my recurring dream is that some program I wrote in high school is still being used twenty years later, and they come calling because something broke...
I wrote a tool that managed a bunch of information related to the AP Computer Science exam[0] which my High School continued to use for 10 years after I graduated. I had received a call on it once, five years after I graduated, from a guy filling in for the teacher I wrote it for and I ended up working with one of his students to figure it out ... while at the Atlanta airport, traveling for work. :)
[0] I don't recall the details, but it was a surprisingly involved text-based pascal program.
"C'mon kid, I had it working for 5 years and you broke it? What'd you do!" :)
[0] Yup, it was that long ago.
[1] Someone told me "they don't lose bags on a direct flight". Very wrong. Lost them on the way back, too -- same fscking trip. But Detroit opened a new terminal and was having a "holiday baggage handling crisis"; after a few weeks they compensated me and sometime the following summer my bag appeared on my front porch. The "crisis" only affected international flights, so I wonder if my luggage had a better trip than I did. It was seriously more than 6 months lost.
The basketball club of our city held an online popularity contest, where the winner would receive free tickets or something. My friend desperately wanted to win this competition, so I wrote a Delphi program that would record the mouse clicks it took to perform a single vote and then repeat them forever. All of our peers received a copy of the program and in a coordinated attack, we opened the site in our browsers, taught the program to vote and left it running until my friend rose to first place. Sadly, he ultimately lost the competition, because another fan was better at forging votes. He surpassed us with ease. I guess he just hammered the server with HTTP POST requests, something I had no clue of at the time. In the end, the number of votes on the first and second place were laughably off the charts.
Years later, when we were adults, my friend became friends with the owner of the club, who invited us to a game. There, my friend introduced me by telling him this story, which I had completely forgotten. The owner had a good laugh, but I think I blushed a little.
“We have to listen to Dave, he built this place! We can’t replace his code!”
Oh I am so familiar with this feeling. I recently found a program I wrote at my last job on a flash drive. It came from a chance conversation with one of the scientists I worked with.
After listening to her lament the many hours of manually parsing log files it took for her team to generate reports, I wrote a short program one day (with a few updates over the following weeks) to do it for them. Some days I feel that the code I wrote that one slow afternoon was the most useful thing I've done in terms of ROI. A couple hours of fun text manipulation and voila: a bunch of Very Happy People (tm) and untold hundreds of hours of time saved.
Something about people actively choosing to use your work with no pressure, marketing or mandate just hits different emotionally.
That is exactly how I wrote my Delphi code as kid!
Later, I learned to use arrays, and used them for everything because I did not know any other data structures. Like, array of array of array of integer. And the ref counting makes them memory safe. Delphi had the best arrays of all languages
At the university, they taught more complex data structures like linked lists and tree structures, so I started using them.
Then I learned about caches and that tree structures are bad for caches. Optimal are arrays. One should only use arrays for everything, so I started using arrays again.
Now I know about loop unrolling. And about the conservativity of the Pascal optimizer, it never keeps values in registers if they can alias. Heap values like arrays are always assumed to alias. If you do not use arrays, but use a separate local variable for every element, it can be much faster.