Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Awesome Pascal – A curated list of Delphi, FreePascal, and Pascal shiny things (github.com/fr0st-brutal)
150 points by rsecora on March 24, 2022 | hide | past | favorite | 57 comments


Just because it had a cool name, I downloaded Lazarus from my OS's package repos. I was kind of excited that the language it uses was freepascal. That weekend, for fun, I refactored a few of the apps I had built recently to try other methodologies, and it was a blast from the past. As a kid, pascal was a very different experience, and by the time I mowed enough lawns to afford Delphi, everyone had moved to C++.

It hasn't been completely smooth. Doing more modern tasks like HTTP requests are not included, and adding the plugin for it is a little fiddly, but for your basic GUI tasks, it is actually pretty fun, and simple on a level reminiscent of Visual Basic.

I encourage everyone to give it a try, and though you might not make your name writing pascal software in 2022, its fun like driving a car with a stickshift, or using hand tools to build a table. It is an experience worth enduring to experience the appreciation and perspective it provides.

Try it!


> and though you might not make your name writing pascal software in 2022

You can certainly make money with it. People still pay for native-code software after all.

Pretend you want to write a ... oh, I dunno, let's say Task tracker, collaboration tool, or order-entry, or some other office productivity tool, consisting of only a few forms.

Sure, you can make a web-based UI, and there's many advantages to doing so, or you could make it a native application, and there's many advantages there too.

I've used the Lazarus IDE to make a small productivity application, and it was by far much easier than to make a web-based GUI.

It was also instant startup, never used more than around 30MB of RAM and ran insanely fast compared to the web-based "native" applications we have now.


> I've used the Lazarus IDE to make a small productivity application, and it was by far much easier than to make a web-based GUI.

> It was also instant startup, never used more than around 30MB of RAM and ran insanely fast compared to the web-based "native" applications we have now.

Silly things like ease of development, lower resource usage, and responsiveness/execution speed are unimportant to real Electron developers.

There are only three things that matter:

1. Sharing code between the web app and desktop "app"

2. Easy integration with web-based backend services

3. Being able to tell management that you use Electron

Microsoft Teams is a perfect example. The backend is so slow, buggy, and frequently down that any time spent improving or optimizing the client app is not going to provide any meaningful benefit. In fact it might have the perverse effect of raising user expectations and decreasing overall satisfaction with the product.


Sharing code between the web app and desktop "app"

So, we need an Object Pascal to JavaScript compiler?


I think there is one, already? https://wiki.freepascal.org/pas2js


Also the wasm backend was recently merged in.


If you want a really strong Object-Pascal -> JavaScript transpiler, you want TMS WebCore: https://www.tmssoftware.com/site/tmswebcorevsc.asp


If you wanted something similar (cross-platform native code, "traditional" controls, low hardware requirements, fairly rapid development), you could also use Ultimate++ (https://www.ultimatepp.org).


Ultimate++ is nice, but one of the benefits of Delphi / Lazarus is the use of the Pascal language instead of C++. This can be a point of contention, but I know once I moved from C++ to Object-Pascal, I didn't want to go back.


You are not the only one. A lot of people who experienced using both and could freely choose, have gone with Object Pascal. Lots of people think C++ is too "messy" (among other things that could be said).

The key point though is that many have to or feel compelled to use C++ because of their job or possible job opportunities. There are jobs for Delphi/Object Pascal, just not as much. Though sometimes being a more limited commodity can be beneficial to various individuals. Additionally, for independents, freelancers, small businesses, or mavericks Object Pascal can be wonderful.


> and though you might not make your name writing pascal software in 2022

If you look at TIOBE Index, you will see that Delphi/Object Pascal (presently #12) is often ranked above such notables as Go (Golang), Swift, Ruby, Rust, and Lua. A list of languages many would argue a person could make a name for themselves with.

Not saying that TIOBE is the "be all, end all", but it's not like nobody knows Delphi/Pascal or that there aren't companies that have lots of code written in it. To include that Delphi/Pascal is still being taught in many school systems throughout the world (https://www.youtube.com/watch?v=FHcqZEtWBy0&list=PLxAS51iVMj...).

We also have to be mindful to separate from the propaganda and hit jobs by corporate backed competing programming languages that would prefer people not know how competitive, powerful, and useful that Object Pascal is.


> Doing more modern tasks like HTTP requests are not included, and adding the plugin for it is a little fiddly

FWIW a package can provide components but it should be possible to do HTTP requests out of the box without installing anything using the FPHttpClient unit (there is also a server one too if you need it), which is part of FCL (which is available by default on Lazarus projects):

    {$mode objfpc}
    uses FPHttpClient;
    begin
      with TFPHttpClient.Create(nil) do
        try
          Writeln(Get('http://example.org'))
        finally
          Free
        end
    end.
Sadly the documentation[0] is not that great - in fact it doesn't exist aside from the autogenerated stubs - but it should be possible to understand what is going on by the method names and arguments.

[0] https://www.freepascal.org/daily/packages/fcl-web/fphttpclie...


>"its fun like driving a car with a stickshift"

Not at all. Lazarus being community project is rough in edges but Delphi runs on "automatic" just fine.

>"and simple on a level reminiscent of Visual Basic"

It runs circles around it and the language has all modern doodads.


>Doing more modern tasks like HTTP requests are not included

That is included now

Although I maintain my own functions for that


Any Delphi experts know of openings for remote devs from Ukraine (now in Germany)? Sorry if inappropriate to ask here, hope it's understood given the circumstances.


It is good, I have a tip for you. Doing a DM.


Thanks, appreciate it. Asking for a friend with 10+ years Delphi and MS SQL. Focus on warehouse management software for supermarkets, business analytics.


I want delphi to die. Not that I don't like the language or the IDE, quite on the contrary: it is pleasing to use. I want it to die because it remained "too closed" for "too long". Updating from one version to a future version was nightmare, depending on a single vendor is dangerous, the way they ignored multi-platform for decades was bad, historic prices left many hobbyists out of the game, no consensus, no committee, no public consultancy on how the tools and language should evolve, the complete ignorance of how FLOSS tools evolved along around the same period and now most languages and used IDE's are at least partially FLOSS makes me want to see delphi die.

Make the effort to use or promote lazarus.


The problem appears to be that the health and popularity of Object Pascal is intertwined with Delphi/Embarcadero. The better of a job that Embarcadero does at promoting their Delphi product, the more likely people are to find out about Object Pascal being still viable and open-source projects like Lazarus/Free Pascal. And it works in reverse too, where those that use Lazarus/Free Pascal will get more professional opportunities because of companies that use Delphi.


Well, I can’t say the total opposite of Swift isn’t great either they make some weird language decisions. I am convinced some of them won’t have happened without the public proposals


I'm grateful that Pascal was the first language I learned, for an unexpected reason:

I was a natural fan boy. We just assume that the thing we happened to land on is for some reason the best. Pascal is the best, Windows is the best, my country is the best, etc, etc. I know people who lived like that their entire (up to this point) life.

If I happened to start with c++ or java, I could stay ignorant forever. I was lucky that Pascal's ecosystem was so limited that I needed to learn c++ and from there I went to java, c#, python, and a little bit of others.

Now, when looking back at Pascal, I have the deep nostalgic emotion, but I know that for most things I can do with it, there are much better tools out there.


I've used a lot of languages both in hobby projects and professionally. I learned pascal in high school when I took the majority of what a lot of computer science departments teach in their first/second year of college. This is after learning C in middle school (this was late 80's early 90's) under the direction of my math teacher who thought I should learn something besides BASIC/assembly.

So, that said, looking back and trying to teach the current generation basic programming concepts beyond variables/loops/etc, aka data structures. I repeatedly think that my high school data structures/etc teachers did a far better job than the current crop trying to wedge more advanced computer science topics into languages like Java, python, C++ or even C. The replacements (Rust) are bad or worse for teaching these concepts because the language just simply gets in the way to much. C is maybe the best of the allowed choices because its possible to write say linked lists, or linked tree structures fairly easy but its got so many foot guns that Pascal manages to avoid. Languages like C++ might be reasonable, until some prof dictates that the class should be using std::unique_ptr() or whatever, which just adds confusion to something that should at its heart be fairly simple.

So in the end, I think Niklaus Wirth actually has a bit of an masterpiece in Pascal when it comes to creating a language for teaching computer science topics.

The fact that I also convinced the place I worked to use Delphi on a couple of greenfield projects in the mid 1990's and that was probably some of the most productive work I've ever done shows that pascal also works just fine in a commercial setting.


FWIW Oxford has some courses and they use Oberon because the entire language is 20 pages. so while pascal is great. it has been somewhat superseded.


You should try going back and taking all you have learned and applying it to modern pascal. You may find it a much more productive language than you remember.


Pascal has always been the most productive language (at least for native code without GC).

But it is lacking good libraries. Then I write everything myself, and then it does not even work, because it is lacking a good oss compiler.


I can identify with this comment a lot. It wasn't that it was great or any type of special technology, it's the memories of all the fun, struggles, and improvement it helped us find along the way.


My senior year in high school was the first year they had a programming class and it was Pascal. The very next year they instead started teaching C++.

As a consequence out of necessity a couple of years later I ended up self teaching myself PHP then Ruby then JS. These days I'm pretty proficient with it.

I had an easier time doing it because of those early concepts I learned with Pascal.

I often wonder what would have happened if I had learned C++ instead.


> I was a natural fan boy. We just assume that the thing we happened to land on is for some reason the best. Pascal is the best, Windows is the best, my country is the best, etc, etc.

Although I've had previous contacts with computers, my first personal computer was a windows box in the beginning of the second half of the 90's. Never had in my mind "windows is best".


HeidiSQL is one of the most prominent real world applications in Delphi I know of. It's been hard to find many others. Most likely they exist at many companies in private.


https://jonlennartaasenden.wordpress.com/2014/11/06/famous-s...

A couple more well known titles are:

  - BeyondCompare  
  - InnoSetup  
  - Nero Burning ROM  
  - Macromedia Dreamweaver!



FL Studio and CheatEngine as well.


Delphi also had a place in video game dev at the time. I remember a thick thick thick book at Border's all about Delphi game dev, and once they stopped ordering new O'Reilly books I eventually read that too.


Also Macromedia HomeSite and first release of Skype.


I’ve been trying to reverse engineer the app described in this article: https://www.inputmag.com/features/tropetrainer-thomas-buchle... , which happens to have been originally written in Delphi, I believe


Plenty of enterprise software as well. I used to work on this product, the windows desktop part of which is 3 million lines of delphi.

https://spacewell.com/brands/mcs-iwms/


Total Commander!


Nice list but i think that some of those entries should use [Lazarus] instead of [FPC] since unlike Delphi (which is a single product), Lazarus and FPC are two different projects and not everything that would work on Lazarus would also work on FPC by itself. As an example, a project that uses FPGUI instead of Lazarus would not be able to use any of the GUI controls marked as "FPC".


I would advise against anyone learning Pascal, any more.

I wish I had instead learned C and C++.

The tooling around Pascal was phenomenal, with Turbo Pascal, Borland Pascal, and Delphi. But the tooling around C++ is just as good or better now, in my opinion.


I would advise against anyone learning C/C++, any more.

I wish I had instead learned Go and Rust.

The tooling around C++ was phenomenal, with Turbo C++, Borland C++, and C++ Builder. But the tooling around Rust is just as good or better now, in my opinion.


The tooling around Go and Rust is just as good or better? Really? That's a claim you're making?

Walk me through which AAA games are developed in Go and Rust, just as a conversation starter.


Development of AAA games != good tooling.


You can have a look at what Embark Studios is doing, Go and Rust are their tools of trade.

https://www.embark-studios.com/

Now if you consider them AAA class is another matter.


> I wish I had instead learned Go and Rust.

>

> The tooling around C++ was phenomenal, with Turbo C++, Borland C++, and C++ Builder. But the tooling around Rust is just as good or better now, in my opinion.

I know you say it's just your opinion, but that's an extraordinary claim, don't you think?


I know and use both. I use Delphi for desktop GUI applications and C++ for backend servers. Works like a charm. I use other languages / frameworks as well. Trying to stick to a single tool / tech is possible but not very wise.


Learning languages is awesome, and I highly advise it. But there's just no point in learning Pascal, as a first language, not any more.


I learn languages for practical things, not because those are in vogue / out of it. Delphi/Lazarus allows the most painless GUI applications.


Great list!

Also, don't forget some of the better (IMHO), but lesser known open-source self-compiling Pascal compilers:

BeRoTinyPascal: https://github.com/BeRo1985/berotinypascal

XD Pascal for MS-DOS: https://github.com/vtereshkov/xdp

XD Pascal for Windows: https://github.com/vtereshkov/xdpw


Makes me wonder if Torry’s Delphi Pages still exists :)


I looked up http://www.delphiforfun.org which I visited regularly in my teens and early 20s and I noticed that it stopped updating in 2018. After a bit of googling I sadly found the obituary for Gary Darby, the site’s creator. He maintained that site until he was 79! I hope it will be preserved. RIP and thanks for the code.


I look in on it every year or so (maybe every other, recently), whenever I get curious. A mere shadow of its former self when it comes to number of uploads per week, but still there and fighting on.


I just searched for it, and it appears to be quite active. Walk down memory lane.


Active? Has looked like a patient with lots of hoses and sensor wires in every orifice -- i.e, on terminal life support -- for the last decade or so to me.


Among Pascal projects I'd recommend, check out Hedgewars:

https://hedgewars.org/

It's a Worms clone that actually gave me as much joy as the original. What's quite interesting is that the game is written in many languages - I heard that e.g. AI is written in Haskell.


I've been writing professional software for 30 years.

A Delphi app that I released in the mid-90's is still the longest-running, most entrenched, still in-use application of anything else I did in that era. It amazes me that people are still using this little application and I still get heaps of praise for having written it, almost 30 years ago. People are still using it .. a testimony to just how well Delphi works and how powerfully useful apps can be made with it.

I only wish I still had the sources for the app so I could try a Lazarus build an maybe fix a few bugs ..


How come that the word "awesome" hasn't been autoremoved from the title? It was an awesome bug that showed up in many previous "awesome x" submissions.


Sad how classical languages like Pascal family, Lua, and Fortran aren't often used anymore.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: