26 Years of Delphi
blogs.embarcadero.com
blogs.embarcadero.com
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.
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.
However 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.
Anyway, we've recently had "FoxPro" guest-star here, and Delphi definitely was one that took its lunch money. Decent small-business relational databases appeared, and people were eager to marry it with fancy GUIs -- maybe even with that new-fangled 32 bit Windows Microsoft was promising. Visual Basic was what Microsoft offered. But for many, the language felt a bit awkward, as did the programming paradigm. I'm leaning a bit out of the meaphorical window here, but there's an argument to be made that VB was closer to 4GLs than "conventional" programming languages.
Delphi just really hit a sweet spot. A fast Pascal compiler was to be expected from them, the OO features were available in previous Turbo Pascal versions, too. But all very nicely integrated into a truly RAD IDE -- if what you wanted to develop rapidly was a CRUD Windows app.
Still one of the best experiences doing that. I'd have done more if for a while my corporate masters didn't demand Java/Swing or sacrificing goats (MFC).
And then mobile devices finally ruined every chance of ever getting a decent desktop GUI again.
Sounds like you haven't looked at Delphi in a while. It is better than ever in my opinion.
So while I haven't followed the ecosystem since Turbo Pascal for DOS (when I wrote a Battletech simulator over summer in college and had the entire runtime API committed to memory aside from pie graphs)..
My impression of it over the years is that it was closed source for way too long as whoever owned Delphi tried to ride its legacy paying customers as they dwindled to nothingness, and then open sourced it.
I have the same vague impression of smalltalk as well, but I never programmed in it.
I'm not saying Delphi should go full FLOSS. The company seems to be doing well enough and not everyone needs to chase maximum adoption. I just wanted to express the reasons I see for not even considering Delphi for any greenfield projects.
Uh, garbage collector aside, Go has less features as a language than even Delphi 1, let alone Free Pascal which runs circles around it.
I apologize in advance for what will be a salty (but truthful, I hope) statement, and it was invited, so I would like to give it in the hope that it might be heard by someone who can do something about it.
You, Idera, just can't get it into your heads that the success of a programming language is measured in how many people are using it, learning it, messing around with it. Not how many Enterprise customers you have that you have locked into buying upgrades.
There are statements out there (even from veteran Delphi people I really respect) who seriously argue that "we can't put out a free version of Delphi because it will be abused". I can barely respond to that in friendly words, I'll only say that's total madness. Even purveyors of software orders of magnitude more expensive than Delphi (architecture and 3D modelling come to mind, even some movie and music producers) have understood that if you make it available at no charge to students and young people, to groups who just don't have the money, they will be the ones that will buy it at full price as soon as they have the chance.
It happened to me. I think I can admit it here, as many have: My first steps into programming where with a copy of Delphi on an unmarked CD decades ago. It was a rush, a high like I've never experienced again. Truly my first love. And when I later got some job responsibility, I actually got a purchase order through for a Delphi Architect edition (the most expensive SKU). But these times are long gone and are unlikely to repeat because today's students don't have the Delphi community anymore that I had to teach me.
But Delphi's current (and previous) owners just don't get that. To them, Delphi seems to be something "elite", something only people paying thousands of bucks should get access to. Taking free money from a few legacy firms, who's going to say not to that?
No, you will not extract a couple thousand bucks from a small student programmer. No, you will not get programmers in poorer countries to buy your software at these prices. You will especially not stop bigger organizations or people who truly want to abuse it. If they need it, they will pirate it, just like they do with Adobe, Microsoft etc. Don't think you're better and cleverer than those guys. The joke is probably (I suspect) that pirated versions are still easier to install than getting the dated 12-months community edition of Delphi with all its nagging.
One could probably find an argument where it would be fair to pay good money for new Delphi versions every now and then. But you don't put nearly enough effort in improving the IDE (the object inspector is still horrible to use if you're doing UI-heavy work - there is e.g. still no "favorites" tab), you still don't support PNG and JPG across the board or make it possible to play an MP4 file in the mediaplayer component. No transparent TEdit, TMemo, a lot of new component implementations are half-hearted at best. The list of little buggy, annoying things that are unchanged for 20 years is endless. You just don't care.
The only one you hurt with this, Idera, is yourself and the community (and by that, again, yourself). The Delphi community was one of the most vibrant and multi-faceted in the world. Thousands of components for anything you could possibly imagine. Great forums and message boards that put StackExchange to shame. All that was literally choked off because Embarcadero wanted to make an extra buck. It was not because of Python or Java. Those just filled a void you purposefully created.
And now Delphi 10.4 has been out for almost 10 months and you still haven't been able to publish a free community edition for it, still insisting on rubbing it in everybody's face that you consider community edition users to be barely legal freeloaders who can do just well with an old and buggy edition (which e.g. still doesn't support the new Chromium Edge browser component afaik).
So, shame on you Idera/Embarcadero. And, frankly, shame on the old Delphi guys supporting this behavior and not taking a stand for a great language and a great community and for not forcing Idera to do things differently. You guys still have a voice, still have name recognition in the community, use it to talk sense and reason, effect change!
I for one still think, like several others here, that Delphi even today remains unsurpassed in several aspects (especially in the rapid development of UI and Windows-heavy apps). But that's thanks to a lack of great alternatives, not thanks to Idera's innovation, that's for sure. So don't pat yourself on the back.
All is not lost but we'd have to see a major offensive in terms of openness from Delphi's current owners. It sure would be awesome to make Delphi just half as great as it once was. But why not start small: Put the Community Edition on the same release cycle as the paid versions. Update the UI a bit with some irresistible great features. Then fix bugs and innovate, go into schools and invest, invest, invest in community. It might just pay off...
I don't mind paying for software (JetBrains, NCrunch, Wallaby, etc). However given that the "free" edition costs over $1,000 once you generate $5,000 from it (and that's for only a single year of updates and no enterprise database access unless you double that price) it isn't quite as generous a free edition as one might assume from your comment.
I love Pascal (for comparison I also do C#, Node, Go, Python, Ruby, and PHP) but I'll stick with Lazarus/Free Pascal - my Delphi days are long gone at those insane prices.
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.
Lazarus is a good alternative, a bit buggy, but at least I can afford it. Eventually I'll probably implement a Pascal layer on top of Racket.
As far as straight up GUI toolkits go, there's no better tool than Delphi. I doubt I'll ever have something that powerful again.
When TP (or BP) was released i was still love old versions because they can compile to RAM, while new one only can compile to disk.
With the obvious proviso that for most the time of the Desktop computer has passed, so the most powerful GUI framework might be Vue or React at this point.
I get that when it comes to consumers, mobile is king and all that. That might be true. But for businesses, the choice of developing an internal tool web-based rather than cranking it out in Delphi and copying the exe on a network share, is simply down to the availability of developers. Not many decision-makers today still know about Delphi as a viable alternative (even for web and mobile development btw!) and when you can get much more developers at reasonable rates for React projects and don't have to fork over thousands to an unsympathetic company called Idera, well, it's almost a no-brainer.
But I'd still argue that you can get more done in an afternoon with Delphi than with Vue if you start with a blank slate - and at a fraction of keystrokes, too! ;-) ~> change my mind :-)
However I also don't remember there being any way to easily bind a component to a collection so that they would both update when one did, which makes the kind of auto updating stuff that people are used to because of Vue or React much harder to do.
I take your point about desktop/laptops being in use in businesses. I sometimes think I am the only holdout.
At the time I didn't know of an easier way to draw windows and buttons and stuff, and have them do what you expect them to do (Visual Basic? Pfft, edgy, tweenage me scoffed at the idea of compiling pseudocode that had to be interpreted at runtime. And don't tell tweenage me about MFC, past me would never have admitted that using the MS foundation classes in C++ was too difficult for my dumb brain. I also didn't "get" C++ so couldn't get on with Borland's C++ builder. But object pascal... object pascal was structured and easy to understand and compiled to machine code in an eyeblink so was therefore superior to everything else!!! Man, what a butt I was...)
First program I wrote and released was a game editor. Someone had reverse engineered a certain video game's file and data structure and documented the offsets and sizes of all the stats of the entities in the game. I used that information and slapped a shitty GUI with comboboxes and dropdown lists and number fields (with no bounds checking I think), together with some very dodgy file read/write code I part copied from some geocities page and part copied from some reference book code, and I made my first game editor. People actually used it! Man, that felt cool.
Man, what a butt I was, I was the very definition of an "I am a programmer" meme.
Later on that information made its way into a UGE module so my program was no longer relevant.
I remember borrowing Delphi reference books from the library and, not having enough computer time, hand writing my code to learn.
Good times. I didn't know Delphi was still in use, I am obviously not in the development line anymore. 26 years! I feel old!
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)
Lovely typo, although it undeniably feels as if Delphi has been around forever.
At that time, not many of us were interested in programming, probably only the "geeks". Of course, typically high schoolers prefer sports, online games, or music.
I taught myself QB, Turbo Pascal, Turbo C, VB. Well, VB was my 1st exposure to Windows programming. Making Windows apps was very easy. I wrote tiny web browser (using built-in IE component), audio player, a tool to bypass Ctrl-Alt-Del (copied from Planet Source Code), simple Symbian games (with AppForge Mobile VB) etc.
Then I found a book explaining database programming... with Delphi. I believe it was Delphi 6. Unlike MSVC, Delphi was surpisingly easy to learn. Sure, I already had some Pascal knowledge. After that, I ported most of my existing VB codes into Delphi.
1 year before graduation, I found another book about mobile app programming. At that time, smartphones weren't that popular unlike today. Only really rich kids who used Sony P900 or Nokia 9210i. J2ME-enabled mobiles phones were relatively more popular, at least. And that's how I joined the Java world, which until today is still is.
I kinda miss Delphi. Yes, I'm aware there's an open source alternative: Lazarus. Let's see if I still can write something interesting with it :)
But so Delphi really is/was a GUI editor? Something like an ancient Qt Creator? And according to Wikipedia it is not even a language but is using “Object Pascal”. Wild.
I wonder why this never comes up when I read a out cross platform GUI frameworks...
It is still beloved by it's acolytes and there are a handful people out there who learned Delphi 20 years ago and stubbornly refuse to use anything else. It's an uphill struggle though because no-one releases a Delphi SDK for anything anymore.
It's just way, way late to the party, so most guests left :(
I also read the book about Borland vs Microsoft and kind of feeling sorry that Pascal/Delphi didn't make it.
Just a question, say I wanna develop a 2d map editor for Windows 10, does Delphi win over C# in the sense of RAD?
I do think that for small programs and utilities Delphi is hard to beat.
But C# has become a much more capable and feature rich language, the RAD story isn't terrible for smaller projects (no experience on larger), and you'll have a significantly larger community in the .Net camp. This means more libraries, as well as more articles and people to ask.
As for your question, here is a video i made ~5 years ago making a simple 2D tilemap editor under Windows - starts from installing Lazarus (as well as a small image editor i wrote in VB5 :-P) to making the editor:
https://www.youtube.com/watch?v=_3JgeIUo1X0
Also as a bonus here is another video where i make a swapping tile puzzle game (this time under Linux, also includes installing FPC from repository and building Lazarus from source code which IMO is the best way to install it under Linux as to avoid issues common with packaging):
https://www.youtube.com/watch?v=s_01Xhd2EJM
Note these aren't tutorials (they do not even have sound), just screencasts. I thought about buying some mic and making some tutorials but i do not think my voice sounds that good :-P
I would agree some of the early implementations were a little rough around the edges, but the FMX framework is now about 9 years matured into the market. Other frameworks trying to achieve the same are clearly learning a lot from FMX and openly mirroring the architecture and approach, which tells you something about the direction.
https://jugad2.blogspot.com/2010/08/digital-clock-v10-in-3-l...
Link for clock image in above post is broken, sorry. It was a one line digital display that showed time in HH MM SS format, live.
[1] That is a key feature of such 4GL-like RAD tools such as VB and Delphi, and a major reason for their success, coming somewhat close to the concept and holy grail of software reuse, like Software ICs/components, first propounded ages ago by Brad Cox:
https://en.m.wikipedia.org/wiki/Brad_Cox
https://en.m.wikipedia.org/wiki/Software_component
Adding a link for hardware ICs, the parent concept, which is also quite interesting:
https://en.m.wikipedia.org/wiki/Integrated_circuit
[2] Removing database controls was another bad idea, because so many apps, even command-line or GUI utilities (not just line-of-business or enterprise apps, need DB support in the programming tool used to develop them.
So they are restricting the ability to evaluate two very important Delphi features which can swing a buy/no-buy decision.
The language itself is far from being ancient and it supports very practical and modern set of features.
The IDE is expensive but there is a Lazarus (basically open source version of Delphi). It is somewhat less polished but is still very nice.
If you search for this exact phrase "cross platform GUI frameworks" there are more then enough links mentioning Delphi/Lazarus. They're of course only usable within their respective environments. Not universal like QT.
The result of compiling a delphi project was a native windows executable that used the core win32 API's underneath (the VCL was implemented over bare windows api's). Compiling was blazing fast (seconds), and the executables that came out of it were blazing fast as well (C++ level performance). This contrasted heavily with visual basic, whose apps required a slow interpreter library, which made them cumbersome to install and run.
Maybe if Microsoft had bought it instead of "just hiring" Anders Hejlsberg?
They don't have a permanent license?
Back in the 90s, I had the option of taking a BASIC or Pascal course over at the High School next door to my middle school; I opted for the latter, and started studying C shortly thereafter but wrote almost everything in Turbo, later Borland Pascal and ultimately did a few Delphi projects. I think I had to save up for a year to buy a really real license for the development environment (12 years old on a $5/wk allowance with $10/lawn mow ... it took a while). Gotta say, I kind of miss it. Wonder if they ever updated the old `crt` pascal library; I believe it's purpose was to simply allow basic terminal text coloring/features, its name was always a little odd. Folks, today, might not make the connection at all. :)
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
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.
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.
I have background in Javascript, Golang, Typescript and all other modern web technologies but I have to say I enjoy working with it and its very highly productive for me.
Started with Delphi 2, the productivity benefits vs VB were amazing. Plus managing code and having a usable object based language.
I went from nothing to a PLC(programmable logic controller) to database manufacturing floor delivery system in 3 weeks for my first app. Amazing productivity.
Cut to now, I have a custom MES/ERP app written in D7 I still support or for 3 sites. 20 years old.
Every couple of weeks I have to boot up the VM and do a few things.
(via https://news.ycombinator.com/item?id=24705109, but no comments there).
Three years ago, I ported a Delphi application called StoryHarp from back then in my spare time to TypeScript/Mithril+Tachyons. https://github.com/pdfernhout/storyharp-js
Years earlier, I had made a parsing tool I wrote years ago to help with some of that -- which I have not made publicly available because I am not sure about the copyright status of the grammar files I started from. Some random notes on the conversion process which involved a lot of hand conversions: https://github.com/pdfernhout/storyharp-js/blob/master/conve...
Before and after the automated conversion: https://github.com/pdfernhout/storyharp-js/tree/master/conve...
But given the way Delphi type declarations are similar to TypeScript type declarations (designed by the same person), and you need to make some major changes to redo the UI in Mithril, doing the entire thing by hand (and with the help of some regexes to replace stuff) might not have been that much harder?
Still have a couple of other applications from those years I want to covert to TypeScript someday (a garden simulator called Garden With Insight and a 3D botanical plant design tool called PlantStudio).
That said, Delphi is still a great language -- even if I perhaps regret using it overall instead of just sticking with Smalltalk, which was harder then to deliver an application with. We had also been using C++ at one point before that too, and Delphi was a lot easier to work with than C++ in the 1990s -- even if I'd guess dealing with C++ code nowadays might be easier overall with improved standard libraries, memory leak tools, and faster computers? My wife who was working on the projects with me then also knew Pascal well from academic projects, so Delphi was also easier for her than C++. However, same as me, she liked Smalltalk better. If we had know then that something like Squeak would come along eventually, we might have stuck with Smalltalk over Delphi.
I also have a music-related Java Android app I'd like to port to TypeScript, so it is not just Delphi. I just would like having some past major projects in a widely-supported language I'm using now for other things and which runs easily in the browser.
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).
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...