13 ms·
I come here not to bury Delphi, but to praise it (2019)
- panki27 3y agoBEGIN Delphi was what I had to use in my first apprenticeship/job, over 7 years ago now. Came home after the first day and my dad told me that's what he made his first Windows programs with, too - but 25+ years ago! After learning other languages, I still have to say it's great for quickly putting together GUIs and filling them with life. The community is rather thin these days though. END
- AtlasBarfed 3y agoOne of the OGs of 4GL GUI app development (see also PowerBuilder and the first Visual Basics). Strangely performant on 100 Mhz 486s and the like, I look back at things like Datawindows in Powerbuilder and look at how slow HTML tables are and wonder how the eff they did that with 1/100th the computing power. Now that I'm an old coder, it really seems like pointless churn as GUI toolkits are constantly built and rebuilt, often with little to show for performance improvement. I do think CSS was a legitimate boon because it provides such a deep means for specifying appearance preferences and is known by so many people, but ultimately the toolkits are repackaging buttons/text entry/radios in mostly the same way the old 4GLs did, often with worse UI construction tools and much more complicated code. Powerbuilder and Delphi definitely seemed to have GUI dev figured out, but each language transition needed its own (often worse) GUI toolkit and the GUI builder tools never really came. How long until NetBeans included a somewhat-decent GUI builder? Java had been around like 15 years. NeXT had a great GUI designer too way back in 1990, although you had to write ObjectiveC for the handlers.
- superdisk 3y agoI know he's talking about Delphi here, but FreePascal+Lazarus is still one of my secret weapons. It has some sort of supernatural force field which causes people to ignore it and unfairly denigrate it; meanwhile I whip up desktop applications in hours that would normally take days.
- codr7 3y agoWhipping was never the problem with Delphi, long term maintenance was.
- lockhouse 3y agoI find Pascal based languages to be much more readable than most JavaScript and C++ code bases.
- kwhitefoot 3y ago> long term maintenance was. How so?
- codr7 3y agoBecause it's all proprietary, and continuously deprecated to blend better with the latest hype. I did 13 years with Delphi, full time.
- pjmlp 3y agoIt is still slower than Web fronted "today's framework to take over the world!".
- fuzztester 3y agoWith the emphasis on "today's". As in, new one tomorrow, or in a week. Wish project timelines matched ;-)
- magicalhippo 3y agoWe have a fair bit of code in production that was written over 20 years ago. It just works. It has gone through strings switching from 8-bit to Unicode (16-bit) with hardly any modification. We upgrade every year or so, and in almost all cases it's smooth sailing. Delphi has been quite good so far when it comes to long term maintenance.
- dver 3y agoThe quarterly Delphi posting, "We will not go quietly...."
- pjmlp 3y agoI get a bit of nostalgia when coding in Typescript, Kotlin, Swift. It is a sweet revenge that most modern languages, have decided to go with the Pascal influenced approach (yes some ML as well), even most of the C++ wannabe replacements (with exception of Circle).
- zengid 3y agoMaybe it could be called the 'Hejlsberg effect'. (With no disrespect to Wirth)
- baq 3y agoYeah go is basically Pascal with C/Java syntax and first class coroutines. What could have been.
- pjmlp 3y agoGo has a different path, though, but Niklaus Wirth presence is still there, thanks to Oberon-2 influence, coupled with Limbo.
- mike_hearn 3y agoThe no-circular-dependencies rule was a huge pain though. It allowed the compiler to be very fast (along with it basically not optimizing), but no other language has copied this because combined with weak to non-existent refactoring tools it was just a constant pain to be hitting this limitation whilst developing. Sure, if you're an architecture god who plans out all their internal interfaces in advance on paper it was OK, but I was 15. Delphi could have potentially navigated into the web era quickly enough, but was slow to do so. It was essentially a Windows product at its core. They made a half-hearted attempt to port it to Linux but did so using Wine(lib) which back then was very rough, so Kylix had a poor UX and of course the problem was that the Delphi widget toolkit was the Windows toolkit which Linux didn't have. IIRC it was also quite slow to even get things like an HTTP stack, which had to be produced by a third party company. The focus on visual componentization back then was kinda great though. That's definitely something that went AWOL somewhere along the line. The good database integration is also sorely missing in more modern languages and frameworks.
- kgeist 3y ago>The no-circular-dependencies rule was a huge pain though. It allowed the compiler to be very fast (along with it basically not optimizing), but no other language has copied this Go forbids circular dependencies.
- malkia 3y agoI was just thinking how the ideas behind Turbo/Borland Pascal and Delphi reminded me of Go, I know it should've been Dotnet, but Dotnet got complicated right from the start with it's deployment model (lots of dlls, assemblies, blah, blah blah).
- bleeding 3y agoYes, and I usually find when I run into this that I should be doing something differently in our package/interface design. I think it's overall very helpful though also annoying to detangle if you the cycle is deep enough.
- avg_dev 3y ago
- malkia 3y agoI started with Turbo Pascal 3, Moved to 4, 4.5, 5, 6 then Delphi. Somewhere in there moved to "C" and then "C++". Couple of observations: - Using C (Borland or Microsoft) required two floppy disks - one for the compiler, one for the linker. With most of the Pascal versions you end up just needing one floppy disk, later it didn't matter as we moved to HDD. - First "terrible" experience (by a friend) - he moved from Pascal to C and placed all his code in the .h-eader file, and was wondering why it takes so much to compile (oh, yes nowadays it's fashionable to have header-only libs, lol), but then it was awful. - Pascal Units enforced you (as explained in the article) to figure out cyclic dependencies, unfortunately lots of us thought of this as a limitation, which C/C++ did not had. How wrong we were! - There was barely any use of preprocessor (yes there was), and it was more into the language, than some external pre-processor. - Mark/Release was superior, but also harder to understand the idea than plain old malloc/free * Mark - "Records the state of the heap in a pointer variable". * Release - "Returns the heap to a given state". * So you can quickly release memory in one hop (like nowadays what json parser might need to do). - Turbo Pascal 3.0 was only 30-40kb - Even later Borland could keep up to a single disk. Assembly was approachable from it - Peephole optimization!
- malkia 3y agoMost of the demo coders that I followed (I wanted to become one, but never did anything significant there), and demo docs were done using Pascal. Eastern europeans (like myself) seemed to prefer it more for some reasons. TSR applications while a bit large than pure .asm were possible!
- smokel 3y agoWhen working on demo effects, I found it extremely important to have lightning fast edit-compile-run cycles. Before interactive demo editing tools became a thing, we had to modify code and recompile it to see anything. With Turbo Pascal (or TASM for that matter) you'd have results in under a second. Every now and then your demo would crash, but having set up AUTOEXEC.BAT to start Turbo Pascal, you'd be back in your editor in a few seconds. I just don't understand how people can put up with waiting for compilers, Docker image downloads, and "continuous integration" builds that take upwards of whole minutes. Granted, it takes some effort to get things fast, but it is perfectly possible on modern hardware to have lightning fast compilation, and runtime replacement of modules. For some reason most people just don't care, and it sometimes makes one feel terribly lonely. Also, inline assembly was really nice! asm mov ax, 13h int 10h end;
- sema4hacker 3y agoHaving started with FORTRAN in 1970, then discovering the beauty of IF-THEN-ELSE in PL/I, then using ALGOL W in college, all made Pascal a natural successor for me out of school (first MacPascal on Macintosh then Delphi on Windows). Still using Delphi 6 for projects to this day. What was/is particularly nice about Delphi is the library of GUI objects, single .EXE output with no dependencies, and the ease with which arbitrary-length strings can be used.
- ilyt 3y agoWell, to throw extra praise it ran GUI faster on the triple digit single core CPUs than near-any current JS abominations on quad digit multicore CPUs do nowadays...
- idlemind 3y agoAlso a great teaching language, as used at London Imperial College Electrical and Electronic Engineering dept. in the early 00s. Gave you lots of power but not too much, and enough rules to force you to learn without doing mad things. I have fond memories. And I miss the compilation speeds!
- rileyphone 3y agohttps://web.archive.org/web/20230821150934/https://accu.org/journals/overload/27/153/martin_2703/ https://web.archive.org/web/20230821150934/https://accu.org/...
- dvh 3y ago$4400 per seat (of which $1000 is annual fee) for a windows-only product with zero job postings?
- HumblyTossed 3y agoPascal is objectively verbose. But there's something very aesthetically pleasing about the blockiness of it.
- sph 3y agoAs someone that grew up on C, I always found Pascal positively brutalist with its BEGIN and END blocks, instead of using the more nimble braces. These days I recognise the immense potential it had, and lament the fact that I never had the chance to learn it properly. My path was Borland Turbo C++, VB6, VC++6 then I moved to the Linux world.
- timbit42 3y agoModula-2, Ada and Oberon removed most of the BEGINs except the one between variable declaration and the start of the code.
- fuzztester 3y agoBut they kept the ENDs?
- timbit42 3y agoThe BEGINs were replace by THEN (for IFs) and DO (for WHILEs and FORs). They still need something to denote the ENDs. Instead of saying "THEN BEGIN" or "DO BEGIN", you can drop the BEGIN and just assume it's there.
- fuzztester 3y agoOkay, a bit like Ruby, THEN. IF I had to BEGIN a comment, I would say that FOR a WHILE I thought it was the END. # ;)
- smokel 3y agoHow is it possible that one man was responsible for the creation of Turbo Pascal, Delphi, C#, and TypeScript? [1] I don't look up to many people, but here's one. [1] https://en.wikipedia.org/wiki/Anders_Hejlsberg https://en.wikipedia.org/wiki/Anders_Hejlsberg
- unsubstantiated 3y agoHe didn't spend all his time shitposting BBS/Newsgroups/Slashdot/HN while pretending he knew the one simple trick to obviate global political and economic turmoils?
- unsubstantiated 3y agoPerhaps unknown to the HN community is that C# periodically gets Delphi features reintroduced in it in one way or another. More recently, C# 9 and 10 have returned the concept of `records` (preferably immutable objects) along with the `with` keyword for making copies with some of the properties changed from the source to the dest object. It has been an interesting decade watching HN metaphorically (and sometimes literally i'm sure) shift around uncomfortable in their chair as the all-encompassing-nightmare M$FT creates two languages that are more and more dominating of developer marketshare - C# and TypeScript.
- tracker1 3y agoC# and TypeScript have both been pretty open (in nature and source) for roughly a decade. Which I appreciate. Although, I'm somewhat apprehensive about some of MS's moves with the .Net community, and their holding back on quality of life improvements for C# projects in VS Code. Although, MS hasn't caused me to generally avoid .Net so much as the more "enterprise" nature of most of the projects I've had experience with. I started with .Net (C#) in 2001, and to this day think there is a lot to like there. Of course these days, I'd appreciate the opportunity to work with Rust more than C#.
- rahen 3y agoWell, Anders Hejlsberg, the creator of C#, is also the creator of Delphi.
- fuzztester 3y agoI heard he also worked a lot on .NET, maybe a key role. Google.
- jodrellblank 3y agoAnd of TypeScript
- malbs 3y agoWhen he adds metaclasses and Virtual Class Functions to C#, I'll say his migration of Delphi features is finally complete.
- treprinum 3y agoIf RAD Studio/C++ Builder allowed building Linux desktop apps, I would have likely bought the architect edition. VCL is so much faster to develop than any other framework.
- fmxexpress 3y agoIt does. The FMX framework compiles to Android, iOS, macOS, Linux, and Windows. Single codebase single UI.
- treprinum 3y agoThis is what I see on Embarcadero Linux C++ dev page: "However, for Linux, you cannot create the visual VCL and FireMonkey applications."
- xamomax 3y agoIn the early days of Delphi I considered it to be a huge competitive advantage in terms of productivity and speed against everything out there. As time went on, though, it slowly died, and it became increasingly difficult to find and integrate 3rd party libraries, or find developers to work in the system. The user interface aspects of it also became dated and difficult to make modern. Too bad, as I really liked it, especially the language. I liked the AMIGA as well, which also was ahead of its time and seemed to suffer a similar fate.
- malbs 3y ago> or find developers to work in the system It's an interesting issue, personally I wouldn't look at someones employment history, and working with legacy tools/environments, as a black mark, but it could be indicative of someone who simply refuses to move to new technology. I've also hired some younger people who were actually interested in picking it up because they were keen to learn anything they could, and you can learn plenty from Delphi despite it's warts. Over time I've described myself as suffering a kind Stockholm Syndrome w/ Delphi now, and some of the guys on my team have flat out refused to learn it for maintaining some of our systems.
- deleted 3y ago[deleted]
- codazoda 3y agoI was introduced to Pascal’s Turtle Graphics back in the 90’s. I thought it was cool but never had a real use for it; x,y seemed easier for some reason. I started drawing SVG’s for a laser engraver and suddenly I wish other languages had them. I even started to write my own but I don’t know the math (even though I hear it’s relatively simple). I may get back to that but I figured out that simple scaling gets me there by reducing the cognitive load of pixels. I don’t know if this makes sense but I was feeling nostalgic for turtle graphics.
- fuzztester 3y agoPython has a turtle graphics module.
- goodbyesf 3y agoHackers, programmers, coders, lend me your ears...
- fregonics 3y agoI worked with Delphi in the beginning of my career, and the only thing I find myself really missing is the runtime type information! It worked really well and sometimes I find myself missing it in other compiled languages. But I heavily disagree with the author's positivity about Delphi in general. The UI builder excels on wiring up small utilities, but when you are looking to build applications with more complex UIs, with custom components and/or devices with different screens, the complexity increases exponentially and the UI preview becomes just a small suggestion, I think only in the last release (10.5) in 2022 they addressed this. The component system is clunky, and very prone to breaking. In my entire time working with it I never once had a completely functional development environment, because components installation never had the same result. To work in some parts of the project i had to just ignore the IDE and edit the text files directly. Also, Delphi updates required reinstalling everything, and solving the many problems that would arise, and then all dev environments would have to be reconfigured (and troubleshooted) manually. Talking about editing, the IDE's performance is not very good, and the Intellisense is not asynchronous, the suggestions and error checking took their time to load, and the IDE becomes unresponsive while it processes, and sometimes windows would just kill the application because it was not responding. I had to turn it all off to be able to work. Oh.. And the bugs, the IDE had bugs just everywhere! The above exposes a problem in the language itself, it did not have good asynchronous behavior, and I never understood it completely, the only way to make sure you would not block the main thread in some way was to spawn a new process to run background stuff. The standard components are outdated, the WebView they used was Internet Explorer's one until the 10.4 release, in 2021, they just recently started to adopt WinUI, so you were stuck with 00's user experience, their JSON parser was not very standard (it didn't support the number type, for instance). And when I searched community components to implement things I usually found only something very outdated and unmaintained, or just didn't find anything. I think essentially it had some quite good ideas in the beginning, but this is the important fact, it "had". Delphi stopped improving on itself, and is just trying to convince the same community of people who fell in love with it when it was still good and dedicated their entire careers to it that they are cool now, adding things that sound cool, while nothing important really improves.
- cthalupa 3y agoNitpick, but the title SHOULD be 'I come to bury Delphi, not to praise it' The whole point of Mark Antony's speech is that he was, in fact, praising Caesar, despite the line stating otherwise. Flipping it around removes the entire impact of the speech.
- ivanhoe 3y agoI keep saying this every time Delphi is mentioned, but it definitely deserves the praises: Borland Delphi had the best and the most useful documentation/help system that I ever used - and those were times before Google or even access to Internet for many of us, so reading manuals played a huge role in learning.
- Delphiza 3y agoI remember my Delphi manuals being quite grimy. They were always on hand and I could find something very quickly. It enabled me to get stuff done without any outside help. Windows help files were also good.
- Delphiza 3y agoI started my career using Delphi and was part of the local community. Two of us worked on support for Borland products at the local distributor - I went to do more development and he joined the local Borland sales team. I was often attending product launches, and presented a few times myself. I recall presenting creating ActiveX controls in Deplhi, using a plugin, in front of an applauding crowd, probably about 2 years before VB could do the same. Data binding to client-server databases was a big deal at the time, and data-bound controls such as grids and TreeViews (which we all thought were the future) were pretty cool. It was an exciting and productive time to build data-based (enterprisey) apps that customers and users loved. I remember when Borland launched C++ Builder, which was C++ using the Delphi component library (VCL) and IDE. Everyone was very excited during the demo until build and run (F9?) when compiling started and in the demo, in front of a couple of hundred people, my friend had to talk for a couple of minutes until the app ran - something that would have taken seconds in Delphi. In it's day, Delphi was pretty cool.
- ddmf 3y agoI started using Delphi back in the early 90s because I needed to send a "catalogue on a floppy" to customers of my parents. At the time I'd used VB but the runtime was the size of a floppy on its own, and the catalogue data pushed it over the size. I remember reading that Delphi didn't require a runtime and that was that. I still use Delphi for LOB apps - so very quick to design a user interface and have a working program ready to roll out, for example so transport can update their haulier quickly, or the accounting software has a shoddy smtp implementation that doesn't play well with our spam appliance so we create a tool that fires statements via mapi and let outlook deal with retries.