Live data from Hacker News

I miss Delphi

news.ycombinator.com

171–180 of 194 posts

Re: I miss Delphi

#171

Earlier quoted context omitted.

What are the advantages of retained mode UI (genuinely curious)? Assuming you have good enough primitives to work with (i.e. you write your render function in terms of HTML elements and other React components - or something similar, not raw lines and rectangles), then I just don't see any.

Rather than repeat, I will just link you to: http://gamedev.stackexchange.com/questions/24103/immediate-g...

That talks about game UIs, which are indeed much more difficult to work with, e.g.

>The GUI library consists of one-shot "RenderButton", "RenderLabel", "RenderTextBox"... functions

>all RenderXXX functions that have user interaction like a buttons or checkbox have return values that indicate whether e.g. the user clicked into the button.

But React is nothing like that.

Writing JSX very much resembles writing HTML, which makes the tree structure easy to read/write, you bind event handlers to elements (`onClick={this.helloClicked}`) just like you could with HTML, passing data (props) to child components is trivially simple etc.

That's why I wrote "assuming you have good enough primitives to work with" in my previous comment. With game UI libraries, you often don't, and often there are limitations in the language itself that prevent the libraries from being good enough.

When you have a nice environment to work with, all that retained mode does is duplicate the state - so you have your application data, plus the internal state of the UI component, or even the larger structure of the components - and it places the additional burden of keeping them in sync on your shoulders.

Re: I miss Delphi

#172
post #115

Earlier quoted context omitted.

Little historical fact, Microsoft nicked Andreas Hejlsberg, the creator of the Borland flavor of Pascal (starting from the Turbo Pascal days), and had him architect C#. So if you trust microsoft, or you're doing boring bussiness software where you don't care about anything but the paycheck, C# may be an improvement.

Yep, Delphi's soul lives a little bit in C#. Also a reason why I was quite disappointed of .NET being NGEN + JIT, instead of pure native compilation like Delphi. At least, WP 8.x brought us MDIL, followed by .NET Native and CoreRT. Also Anders and his team work on Typescript is quite good.

yes, it's the same DNA. my missing Delphi I mean IDE that inherited from it's philosophy.

text editors and command line scripts seem like a backwards step.

Re: I miss Delphi

#174
post #170
post #164

Earlier quoted context omitted.

Here's one guy writing about VA C++ of that time: http://www.tarma.com/articles/1996sep.htm "Let’s not beat around the bush: VisualAge for C++ for Windows is a disaster as far as I am concerned. It is by far the most anti-productive environment I ever came across, C++ compilers or otherwise. " "The wizard-like approach for project configuration takes you through a number of tabbed dialog pages à la OS/2 (with spiral…

Yes that was the one. It was just too advanced for its time, and as I mentioned, Apple and Microsoft are exploring this path for their C++ IDEs.

> It was just too advanced for its time

As in, too advanced to implement the basic functionality before being that advanced. But I think there's enough evidence: only those who were physically forced to use it could have used it then. Which was my initial opinion.

P.S. Have you personally used VisualAge C++ in the nineties? Can you tell a bit about your use too? I see you're linking the other things that weren't and aren't that VisualAge C++ thing. Thanks.

Re: I miss Delphi

#175
post #174
post #170

Earlier quoted context omitted.

Yes that was the one. It was just too advanced for its time, and as I mentioned, Apple and Microsoft are exploring this path for their C++ IDEs.

> It was just too advanced for its time As in, too advanced to implement the basic functionality before being that advanced. But I think there's enough evidence: only those who were physically forced to use it could have used it then. Which was my initial opinion. P.S. Have you personally used VisualAge C++ in the nineties? Can you tell a bit about your use too? I see you're linking the other things that weren't and…

As in, required too much computer resources for what people were willing to pay for, and was full of bugs.

Lucid Energize C++ was way better, but bad management has a tradition to kill awesome products.

https://www.dreamsongs.com/Cadillac.html

Re: I miss Delphi

#176
post #51

Earlier quoted context omitted.

To truly understand and appreciate a language, I believe one must write these features first without a framework (that at least let's someone appreciate the point of a framework more). However, in this case, this is our own implementation. And unfortunately, this is due to a large number of corner cases we need to handle (such as Sybase support, own SQL driver support, because of multiple result sets, etc.), I don't…

> To truly understand and appreciate a language Personally I just want to Get Stuff Done. > I don't believe a framework could replace our implementation. It's pretty easy to use as much or as little of mORMot as you like. I use it for its webserver and websocket implementation but I don't, for example, use its database layer (using FireDAC in preference).

Different goals are allowed to have different execution strategies.

Re: I miss Delphi

#177
post #2

- empty form will have 24+16 lines of code in 2 files - you will have to pay 3000 per seat per 6 months to make a website - it only works on windows - hello world have full access to all user's data - you paid 3000 and it still cannot reliably add main icon to your app (XE6) - you cannot increment build number from command line - no job posting in last 12 months - nobody is using it

> - nobody is using it

There is a lot of legacy Delphi code out there. I make a good living by supporting some companies. And they have no intention at all to replace / rebuild any of it because that will be much more expensive. As is often with legacy code.

Re: I miss Delphi

#178
post #158

If you haven't written apps in Delphi, you can't appreciate how easy it was to write interactive GUIs. It was a freaking miracle, and I wonder how we have managed to lose SO much ground.

We let the kids run the show and turn a platform for interactive documents into some sort of VM.

Well the bigger problem is it's (apparently) what the customer demands. The problem being that we, the old and better developers, didn't come up with a better solution than these kids.

Re: I miss Delphi

#179
post #48
post #33

Earlier quoted context omitted.

And it's not just web. I also used Julia in that project, and while the language itself is really awesome for numerics (especially as I had to migrate a lot of existing Matlab code, which is a pleasure with Julia), good luck trying to package a standalone app (especially if you're using native libraries). Oh, and the startup time? It's funny how some people complain about the JVM in that regard. Every once in a while…

Julia's startup time is the biggest issue holding people to leave Python behind, as I understand from some talks I saw online. Still I am hopeful that they will overcome them, as Julia is an interesting language for those of us that know Dylan.

>Julia is an interesting language for those of us that know Dylan.

Interesting. I had tried out Dylan briefly (in one of my occasional spells of trying out multiple new / different languages), but long ago - and at that time I did not understand it much, maybe due to knowing less about some of the advanced programming language features and their benefits than I do now. Can you elaborate a bit on Dylan's features and the connection with Julia?

Re: I miss Delphi

#180
post #167

I hope that isn't considered too much self-promotion, but it's on topic. You can have what you want with our product, Elevate Web Builder. It creates single-page web applications in a Delphi-like IDE: http://www.elevatesoft.com/products?category=ewb&type=web (examples at the bottom) We're releasing version 2.06 shortly, and it has much-improved designer drawing performance and design-time/run-time layout performance.…

I had a quick look and decided to try the audio player. The volume control isn't draggable. Also, I was a bit baffled at the framework's decision to inline the page font, which is unlikely to change. It looks like you're using your own HTTP server solution which doesn't seem to have caching, so all content is being redownloaded each visit. ETags and Last-Modified are very easy to implement, FWIW. (Note: I say that fr…

Thanks for the feedback, it is always appreciated.

I'll take these one at a time:

1) The "volume control" is a cheat - I created that demo and used a progress bar instead of an actual draggable horizontal gauge (not available).

2) The font is the icon font (a trimmed-down version of Font Awesome) used for the icons in the applications. It's the preferred way of doing vector icons in Elevate Web Builder, at least for now, but you also have the option of turning off both embedding of the icon font and whether the icon font is included at all (both are compiler options). In general, Elevate Web Builder always tries to keep the number of requests required to load the application to a minimum, hence the very aggressive in-lining of everything.

3) The If-Modified problem is a bug, and a really embarrassing one at that (I'm installing a fixed server this afternoon). There's a millisecond file timestamp comparison issue that is causing the If-Modified to never kick in. The web server that we provide is just a "nice to have" thing because it automatically handles the database JSON API for loading datasets and consuming transactions, so that's how it's typically used, with less usage for static resources. Larger customers typically implement their own back-end database handling for IIS, Apache, etc. It's pretty easy to implement and the JSON API is very simple.

4) In terms of interoperability with JS, you can include external JS source with any project and it will get deployed with the project. After that, you also need an external interface to the JS code so that the compiler knows how to resolve any of the JS symbols:

http://www.elevatesoft.com/manual?action=viewtopic&id=ewb2&t...

5) As for issues and how they are resolved: we're pretty responsive regarding support/bugs, but Elevate Web Builder includes source code to the entire run-time and component library, so you're free to modify most of the product and we're able to give immediate hot fixes for most issues (~90% of issues/bugs are in this code and not in the IDE/compiler). In fact, you could take the command-line compiler that we separately provide and use it to create your own Object Pascal JS IDE/product.

6) We've mentioned the product here before and it's received mixed reactions. It is, without a doubt, an odd product for most developers coming from traditional web development. :-) There are a lot of design choices that go against what one would recommend when hand-coding an HTML/JS/CSS application, but work beautifully when you're talking about a compiler doing the work for you. The main point of the product is to capture the productivity that Delphi provided in the desktop arena and bring it to web applications. This means an intense focus on performance, reducing dependencies and deployment issues, and ensuring that one can concentrate on the business task at hand.

Here is a "Hello World" in Elevate Web Builder:

a) Select File/New Project from the main menu. b) Drop a button on the main form. c) Double-click the button and type in:

ShowMessage('Hello World');

d) Hit F9 to run the application.

You've now created a web application that shows a modal dialog with "Hello World" when you click on the button, and it will run on any modern browser (>= IE9), including mobile. Contrast that with the setup/coding involved to get any sort of hand-coded web application up and running. You can see how this works in more detail here:

https://www.youtube.com/watch?v=o1cU0KoJU8Q

If you download a trial version, you can get a feel for the technology in the product by looking at the WebUI unit (WebUI.wbs). It's a ~13k-line UI layer that implements both the design-time external interface and a run-time virtual DOM that allows for very fast performance due to its BeginUpdate..EndUpdate reference-counted update cycle functionality. The run-time avoids interrogating or touching the DOM like it has the plague. ;-) It will also show how the animation primitives work, along with how the control interfaces are implemented. The control interfaces allow you to selectively skin controls on a per-control, per-project basis, with on-demand loading of the customized skins for each project at design-time.

Post reply on HN