Live data from Hacker News

Why I Choose Delphi

csvelocity.wordpress.com

241–250 of 307 posts

Re: Why I Choose Delphi

#241
We also use Object Pascal extensively. We do high-level stuff (Win32, Android, iOS) but also really hardcore low-level embedded stuff.

We use

- Delphi 7 - Delphi 10.2 - CrossKylix (http://crosskylix.untergrund.net) - CrossFPC (http://www.crossfpc.com)

And are able to compile native code to a gigantic amount of platforms, all from within a single IDE. Web stuff we also do, with ExtJS as a front-end.

If anyone is looking for a hardcore Object Pascal job in Germany, let me know :)

Re: Why I Choose Delphi

#242

I still compile a old project in Delphi 7 once every 3 months just to add 5 lines of code, and they pay me monthly for it. It's cheaper than porting the whole system to any other language. It is a project that I've built 8 years ago. Delphi was already a "strange think" on that time, it was declining fast. I think Java killed Delphi - "One codebase for all platforms, even your freezer will have Java!" - this was the…

Delphi and VB4-6 used to be the RAD tools. (RAD = rapid application developed) One could drag and drop controls and create an GUI application in WYSIWYG-style. Then in 1999 when Microsoft abdomen VB for their new dotNet vision, MSFT was about to be split up, etc Web took over and Dreamweaver (and Frontpage) offered a similar IDE experience for HTML4 with a tables and PHP (or ASP, etc). To this day VB6 has the easiest to use RAD IDE, no other newer IDE allows one to create GUIs that fast. Nowadays XCode has a good GUI tool. Traditional Windows applications are out of fashion for many years. Only Win32/64 games are made, everything else is crosspatform electron JS apps or legacy apps that get a yearly minor update. Android and iOS apps thrive, and SaaS web apps too. And on Windows UWP hasn't got traction, it's like a failed experiment - I use zero UWP apps, 1% dotNetFramework4 apps and 99% WinAPI C++ based apps.

Re: Why I Choose Delphi

#243

Earlier quoted context omitted.

In order to do a Delphi-like product for the web, you need to solve these problems: 1) JS isn't discoverable from the perspective of the IDE. There's no static typing and no way for the IDE to hook up code to UI elements, and vice-versa. You need a statically-typed language that can transpile to JS without too much "impedance mismatch". 2) HTML layout functionality isn't really geared for the type of layouts that are…

Smalltalk was able to do #1 in the 70s without static types.

And also #3.1: you program within the environment you are programming.

Re: Why I Choose Delphi

#244

The IDE is just so far behind the competition. Crashing all the time an slow. Theming support ist very limited (to date). Delphi Code Insight ("Intellisense") is slow and sometimes just refuses to work and is generally not on par with other offerings. Error Insight (the wiggly red lines thing) is even worse. Delphi still uses a single pass compiler which makes for great compilation speed but seriously limits the lang…

>SAP IIRC the average SAP deployment is in the region of $10 million. Sure, for enterprise-level things that's justifiable, but most businesses don't have that sort of money to throw around.

And even with $10 million, SAP has a plain ugly UI - ASCII based controls from the 1980s coded with a COBOL inspired script language also from the 1980s.

Re: Why I Choose Delphi

#245

Earlier quoted context omitted.

But if someone saw the opportunity and decided to fill in that niche, I'd be the first to spend my money on it. Make it cost $1000, it doesn't matter - a modern language plus and excellent IDE it's something really worth spending my money on.

You're not going to be able to do it, at least not in the same way as Delphi. Go lacks the complete OO and component functionality that allows Delphi to provide its level of integration between the IDE and the code/components. It's not just a language that was popped into an IDE, rather the IDE and the language were created to work together as one, and it all revolves around proper class support/RTTI. Chuck Jazdzewsk…

OO in Go is quite peculiar, but not impossible. I'd even say you could quite naturally code methods and properties of components, while events would have to be a part of this particular implementation. In any case, I completely agree: whoever decides to do it, they'll have to take Go's peculiarities into account and instead of making an exact copy of Delphi in Go, create a new project leveraging the specific features of Go and reflecting them in the GUI construction in an elegant way.

Re: Why I Choose Delphi

#246
post #198
post #184

Earlier quoted context omitted.

Most companies will ruin any language, specially if you get into the idea that is for sell as in the 90s. No way this could work today. We (the community) have tell Borland and sub-sequent owners exactly what to do, and have been never been heared. To see why it failed, read : https://www.quora.com/Why-did-Borland-fail In the height of the enterprise transformation, I asked Del Yocam, one of many interim CEOs after K…

Because what you were telling them is wrong. Look at every other Delphi competitor from the time period. Microsoft is giving Visual Studio away to casual users and Visual Basic is now VB.Net. Eclipse and IntelliJ come in free versions. There is no longer a market for a million loyal $100 customers for a programming language and ecosystem. There are too many high-quality free languages, compilers and IDEs to make that…

Just because Visual Studio can be free doesn't mean it's not selling for $5000 per license.

Re: Why I Choose Delphi

#247

I've always hated the Delphi ecosystem, awesome IDE, good-enough language, but everything else sucked, specially if you are a young programmer with limited money, you couldn't learn it unless you pirated it, even .NET had a free version. Everything there had a price-tag, from the IDE to the third-party libraries. So yeah, everyone moved on from Delphi, it's currently on palliative care, probably won't die any time so…

http://www.lazarus-ide.org/ has been around since 1999. Not like it's _that_ old, but for technology, it's pretty old.

Lazarus didn't became really usable until around 2007 or so and even then it wasn't until ~6-7 years ago when it became stable. Previously you'd get lots of crashes, weird behavior and other issues in your own programs. Your programs would just crash without you knowing why and the debugger integration was abysmal (it still is subpar, but AFAIK that is a GCC issue and is why they are working towards a new custom debugger).

The project might have started in 1999 (actually the codebase is slightly older according to their history page) but it took a decade for it to be usable.

Of course today things are much better. It is the most stable environment i've worked with (as long as you stick with the official stable releases anyway - note that releases from getlazarus.org are not official and often contain immature code) and even though it isn't as fast as Delphi in terms of compilation speed (and sadly the FPC devs do not care about compilation speed... what is with compiler devs these days giving zero care about compilation speed? Sometimes it feels like only Borland cared about it) it still is faster than most environments (except Borland's) i have used.

Re: Why I Choose Delphi

#248
post #210

Fun Fact: The PortableApps.com Platform's menu is written in Delphi. We're debating whether to stay with it or not, mainly due to the buy-in costs for developers. We can either use no external bits and let people work with Delphi Starter Edition (free, only for use with free/open source, 32-bit only, no add-on support), convert to Lazarus (open source equivalent of much older Delphi version with many newer bits added…

I've tried out PortablApps some time earlier, but only briefly, and did not look into the infrastructure aspects. Are you saying that developers who create portable apps need to use Delphi in order to be part of your platform? And if so, why is that?

I updated my original post to indicate that it's the platform's menu. We refer to the platform meaning the menu, app store/updater, and backup/restore features. Things like the app launcher to make things portable, installer to package, etc are separate from the platform but part of the PortableApps.com ecosystem.

Re: Why I Choose Delphi

#249
post #16

Since Delphi derives from Pascal, it seems appropriate to mention Project Oberon, an awesome OS project that Niklaus Wirth (creator of Pascal) worked on: http://www.projectoberon.com If you want to borrow the book, I have a copy in my office in SoMa (2nd and Bryant).

FWIW modern Free/Object Pascal is miles away from the principles of simplicity found in Oberon. For example in Oberon a string is basically a series of characters whereas in Free Pascal there is a refcounted copy-on-write string type that keeps the string encoding and does automatic conversion (e.g. UTF8 to UTF16 or UTF32 or native codepage where available) where needed.

Re: Why I Choose Delphi

#250
post #204

Earlier quoted context omitted.

Re modernity: is is true that Delphi/Object Pascal has no automatic memory management support, and it is up to the programmer to add lots of "try" blocks and manually code up destructors to release the resources? For example, this tutorial (from 2017) recommends doing "try .. finally: f.Release" block. https://www.thoughtco.com/communicating-between-forms-409254... This tutorial, which is also from 2017, says that th…

Correct. It compiles to binaries without any runtime environment, so you have to manage memory. Apple did something with objective-c (forgot what it was called) that automatically frees your memory based on your code, but it actually inserts the free memory calls. That's the only language that does that AFAIK. Very clever though, memory management can be a pain if you aren't used to it. The good thing about managing…

I know the disadvantages of GC; what I am asking about is "smart pointer", like C++'s std::shared_ptr, or Rust's Rc. It is used like this:

In the class definition:

    std::shared_ptr big_struct;
In the constructor (or anywhere else in the program):

    big_struct = std:::make_shared(arg1, arg2)
and that's it. When there are no more users of the pointer (for example, when the container object disappears), it will get destroyed automatically. There is no magic -- this is a simple reference counting pointer, and the compiler will automatically add the release call to the object destructor, on function exits, or in any other place when the variable is no longer accessible.

I found these things extremely helpful in the modern languages without GC. They are obviously not perfect -- if you have a complex structure with a loop it will never get destroyed -- but they eliminate 99% of all possible memory leaks with a very little effort. And the good news, they have almost no overhead. They are also fully thread-safe, so they become extremely helpful if you have a multi-threaded application and you want to pass the data between the threads.

This is the simplest of things that modern non-GC languages, and this is one of the big reasons why I no longer do C, just C++. There are more advanced features, of course, but I don't think you can call a language "modern" if it does not even have the smart pointers.

Post reply on HN