The first version of Pascal was released by the prolific [Niklaus Wirth] back in 1970. That’s 55 years ago, an eternity in the world of computing. Does anyone still use Pascal in 2025? Quite a few people as it turns out, and [Huw Collingbourne] makes the case why you might want to be one of them in a video embedded below.
In all fairness, when [Huw] says “Pascal” he isn’t isn’t talking about the tiny language [Wirth] wrote back when the Apollo Program was a going concern. He’s talking about Object Pascal, as either Free Pascal or Delphi– which he points out are regularly the tenth most popular of all programming languages. (Index.dev claims that it has climbed up to number nine this year, just behind Go.) As a professional move, it might not be the most obvious niche but it might not be career suicide either. That’s not his whole argument, but it’s required to address the criticism that “nobody uses Pascal anymore”.
Pascal, quite simply, can make you a better programmer. That, as [Huw] points out, was an explicit goal of the language. Before Python took over the education world, two generations of high school students learned Pascal. Pascal’s strong typing and strict rules for declaration taught those kids good habits that hopefully carried over to other languages. It might help you, too.
For experienced programmers, Pascal is still a reasonable choice for cross-platform development. Free Pascal (and the Lazarus IDE) brings the graphical, drag-and-drop ease that once made Delphi rule the Windows roost to any modern platform. (And Delphi, a commercial Pascal product, is apparently still around.) Free Pascal lets you code on Linux or Mac, and deploy on Windows, or vice-versa. While you could do that on Python, Pascal gets you a lot closer to the metal than Python ever could.
Sure, it’s a modern object-oriented language now, with objects and classes and hierarchies and all that jazz– but you don’t always have to use them. If you want to go low-level and write your Pascal like it’s 1985, you can. It’s like being able to switch into C and manipulate pointers whenever you want.
On some level, perhaps the answer to the question “Why use Pascal in 2025” is simply– why not? It’s likely that the language can do what you want, if you take the time to learn how. You can even use it on an Arduino if you so wish– or go bare metal on the Raspberry Pi.
Thanks to [Stephen Walters] for the tip.
As a long-time Delphi user (from v. 2), I appreciated its strongly-typed variable safety, access to both constructors and destructors, easily read and modified code, ability to modify all source code (since even the compiler was written in Delphi!), ability to use many units without the hassle of C++ order dependency, incredibly fast compilation, and production of directly executable code that runs rapidly, without need of an interpreter or erratic garbage collection.
Though now retired, I spent ~18 years working with that superb language.
Thank you, Borland and Embarcadero!
Same feelings here. Delphi was just awesome. I would still prefer Turbo Pascal/Delphi over C++. Qt has made C++ have the close same experience as Delphi for sure.
I started out with C++ back in school, then almost 20 years ago during my apprenticeship I continued with Delphi 5 / 2007. In between I did a few years of C#, and for the past 5 years I’ve been back with Delphi 2007 / D11.
Delphi will always have a place in my heart. You can do so much without being forced to (like in other languages), and you can do things that simply aren’t possible in others (like inline assembler, as already mentioned). I also always loved the fact that you just get a single exe which simply runs without needing to install anything else. And I like the syntax, it’s pleasant to read and write (even if third-party/component code sometimes has terrible formatting and styles).
I’m still amazed at how many (legacy) Delphi applications and therefore also developers are still around. And also how many (new) professional components exist.
If I had started with C# I probably wouldn’t know a lot of things (at least not in detail): object lifecycles, interfaces, the WinAPI …
It’s really a pity Delphi didn’t get much love in between and that the IDE is still awful. In the past years I’ve been developing/compiling with VSCode and Omnipascal (only using the Delphi IDE for forms and debugging) that worked really well.
My next job will be with C# again because once you get used to its features you really start to miss them (LINQ, lambdas, async, parallelism, generics, extensions …). And yes, Delphi 10 and newer do have generics and a few other things but C# is still 10-15 years ahead and unfortunately, Delphi will never catch up.
I started out with C++ back in school, then almost 20 years ago during my apprenticeship I continued with Delphi 5 / 2007. In between I did a few years of C#, and for the past 5 years I’ve been back with Delphi 2007 / D11.
Delphi will always have a place in my heart. You can do so much without being forced to (like in other languages), and you can do things that simply aren’t possible in others (like inline assembler, as already mentioned). I also always loved the fact that you just get a single exe (bigger than with C++/C#, yes) but it simply runs without needing to install anything else. And I like the syntax—it’s pleasant to read and write (even if third-party/component code sometimes has terrible formatting and styles).
I’m still amazed at how many (legacy) Delphi applications and therefore also developers are still around. And also at how many (new) professional components exist.
If I had started with C#, I probably wouldn’t know a lot of things, at least not in detail: object lifecycles, interfaces, the WinAPI …
It’s really a pity Delphi didn’t get much love in between, and that the IDE is still awful. In the past years I’ve been developing/compiling with VSCode and Omnipascal (only using the Delphi IDE for forms and debugging), and that worked really well.
My next job will be with C# again, because once you get used to its features you really start to miss them (LINQ, lambdas, async, parallelism, generics, extensions …). And yes, Delphi 10 and newer do have generics and a few other things, but C# is still 10–15 years ahead—and unfortunately, Delphi will never catch up.
Structured Text in PLC programming is a lot like Pascal, and is used either heavily or not at all depending on the predictions of your director of controls. It’ll live on in that vein for the foreseeable future. I’m not a dedicated controls engineer, but Structured Text isy only exposure to something Pascal-ish, and it seems sensible enough to me.
I think autocorrect scuppered your use of “predilection”. Ten points for effort though.
Two open source programs I really appreciate and use regularly are still written in Pascal: FreeShip+ (a ship hull modeling/simulating software) and SASGIS (a GIS whose unique strength lies in its scriptable map tile downloaders).
Unfortunately, the language that made them possible is also the main point that prevents new developers from being attracted to the project. Freepascal/Lazarus does not feel as polished as “modern” alternatives and Delphi is a stupid choice as the base for free open source software.
Also the great Castle Game Engine uses Pascal: https://castle-engine.io/
lazarus/object pascal is what they should be teaching in schools, and uni. It’s open source, runs on anything, and actually has a simple to use gui builder. As much as I like C++, I find myself writing more pascal nowadays than I every have since the early turbo pascal…
and I don’t think builder/delphi have been usable since version 6, long ago..
I still support legacy apps in PC-Fand (a DOS based RDBMS). I love it. It is blazing fast, supports both declarative and procedural advanced, has networking built in,… And it is mostly Pascal with Lisp-like extensions.
https://www-root-cz.translate.goog/clanky/pc-fand-historie-slavne-ceske-databaze-z-90-let-ktera-neprezila-nastup-sql/?_x_tr_sl=auto&_x_tr_tl=cs&_x_tr_hl=cs&_x_tr_pto=wapp
In the ’90s I was mostly working on Macintosh, and got introduced to Object Pascal through TML Pascal. It was essentially the same dialect as Apple’s MPW Pascal, making great use of the Memory Manager for allocating objects, including relocatable objects (“handles”), and of course that wonderful linear address space. All this on top of the UCSD dialect of Pascal, which was as usable as “standard” Pascal wasn’t.
Then Turbo Pascal 5.5 came out, and I thought it was awful. It was still a UCSD variant like Apple used, but it was basically Object Pascal done in a C++ way. In my opinion it was like they got a couple of college students to bang something out over their summer vacation. It was a poor imitation of what Apple was using. And that was on top of a horrible Real Mode heap memory library and that caveman segment addressing. 640K should be enough for anybody!
I really don’t know what Borland changed when they made Delphi, what rough edges they fixed if any, but TP 5.5 was just awful, after having used Object Pascal on a Macintosh. I haven’t looked at Free Pascal either. I just don’t have much curiosity about it after having switched over completely to C in the early ’00s.
I remember Pascal being pushed at school a long time ago, but by that time I was already hooked on C. C and C++ has their flaws, but they’re quite good languages, and their wide spread use proves that.
Back then I also dabbled a bit with the Borland C++ builder, while a (back then) “friend” of mine did some programming in Delphi. Those Borland products were quite good back then. It was very easy to click and drag a GUI together and add some code to make it do interesting things. But apart from that, the functions between Delphi and the C++ Builder were very similar.
“Why not” is not a good reason to start with Pascal. I can understand continuing with the language if you have an existing code base, but the low usage of this old language and lack of progress in those many years should be enough info. I have not seen the video, but I guess it’s from a youtuber desperate to create some content and attract some viewers.
heh i basically agree with you. i don’t really see the point of pascal, because C does everything just as well while being much more popular and well-supported. though i wouldn’t be surprised if ‘object pascal’ is much better than C++ (i haven’t used object pascal).
but “lack of progress in those many years” seems irrelevant to me. imo there hasn’t really been any progress in languages in general in decades. ML represents one apex of language development, and C another, and they were both fairly mature 40 years ago. java and rust have some things going for them but don’t seem fundamentally new to me, just reformulations of the ideas established by earlier languages. maybe languages like Go have added some innovations in parallelization, i don’t really know.
compilers have improved some…there are definitely more potent optimizers than there used to be. but it’s my impression they’re deep into the realm of diminishing returns. fairly naive code generators actually do a ‘good enough’ job and for the most part we’re looking at improvements on the order of 10%. nothing ground shaking, especially when CPUs are so fast and software architecture changes account for 100% or 1000% differences.
i really feel like the biggest improvement in compiler development in the past 30 years is that now compiler writers don’t hesitate to call malloc(). that’s it. we use more memory than we used to. haha
Object pascal is C++ with different operators, keywords and (IIRC) no templates.
C++ builder was Delphi for C++.
IIRC they hired the dude away from Borland.
this made me curious about object pascal, because with a few “withouts” or “with different takes on” compared to C++, then you can wind up with really a very good language. (see java)
so i wanted to find out the object pascal ideas on generic programming (if not templates), and multiple inheritance, and exceptions, and pointer-to-object vs object distinction (ampersand reference type, copy / move constructors). so i skimmed wikipedia — no dice. next i found a 2001 Borland manual. presumably there’s documentation for Lazarus too
2001 is as fine a year as any other for documenting a language, but a vendor’s proprietary manual instead of a standard is pretty discouraging. it gives me some appreciation for paulvdh’s claim of no progress!
“Why not?” isn’t a reason to do anything, really. It’s giving yourself permission to do what you want, regardless. If you like C++, use C++. If you like Pascal, use Pascal. They’re all Turing complete languages anyway, so at some point it comes down to personal taste and network effects. Network effects very much favour C/C++ over Pascal, of course.
FYI, [Huw Collingbourne] isn’t a YouTuber out to drum up controversy; he’s just an old hand who wants to see one of the languages he uses stay alive. There’s nothing wrong with that. I’m not sure you can say the man wrote the book on Object Pascal, but he did write a book on Object Pascal.
If I can add something:
Not only you can go with ponters, you can even use inline assembler code
Even with Delphi you can cross compile to macOS an Linux (with GUI) but you don’t have a cross platform IDE as with Lazarus
With Delphi you can develop for Android and iOS too
When you go multiplatform you write native code, no VM like Java
Many moons ago, I took a university course that was supposed to use Pascal. For whatever reason, the university’s MIS (management information systems) guys didn’t get Pascal installed on the mainframe we were supposed to use.
Every week, the instructor told us they’d have it installed soon, but they never did. I didn’t have Pascal at home, none of the other computer systems that I had access to at the university had Pascal on them.
I took to turning in my assignments in “pseudo-Pascal.” The Tandy 1000 that my family had, had a BASIC version on it that didn’t require line numbers. By careful formatting and some program trickery, I could write programs in BASIC that looked like they were in Pascal.
I’m not sure the instructor ever figured out how that worked. I don’t remember what the other students did. For my part, it was an interesting exercise in learning the subject matter. You really had to understand the task to be able to program it in the wrong language.
Years later, I ended up working for a company that used and sold a program that was written in Turbo-Pascal. I got tasked with making some improvements to it.
The program kept a log of recent events. The boss wanted a way to print out the event log. Simple enough, except that this was under DOS, with no threading or multitasking of any kind.
Since the Pascal version we were using was limited to 64k of data, the log was stored in the unused memory of the VGA video adapter. The program ran in text mode, so there was plenty of space available on the graphic card – nearly 1MB.
Printing ought to have been easy. Just read the data, toss it through the LPT port to the attached printer.
It wasn’t that easy. The printer had only a very small data buffer – and various printers had more or less memory. Just throwing data at the printer would cause the program to hang because the printer routines in the PC/Pascal would stop and wait any time the printer said “buffer full.” That little bit of information wasn’t available to the program, though.
What I ended up doing was to throw chunks of data at the printer, while checking how long the call to the print routine took. If it was more than some 10 of milliseconds, that meant the printer buffer was full.
The program had a main loop, so in the loop it would send a chunk of data to the printer. If it took too long, assume the buffer was full and don’t print for X seconds to give the printer time to catch up. Chunk by stuttering chunk, with a wailing 9 pin dot matrix printer screaming along beside the computer.
When I was getting my CS degree 30 years ago, Pascal was the teaching language. Brøderbund Turbo Pascal is one of the few pieces of software I actually paid full price for way back then. I still have that CD laying around.
Dammit, it was Borland, not Brøderbund (who mostly made games back in the day). Been a loooooong time.
Long time Pascal user here. It was the learning language for CS at college. That was also the time that Turbo Pascal came out. Used on my DEC Rainbow for college projects, then upload to VAX. Of course brought to work as well and we used it all the way through the Delphi age, along with C/C++. Pascal worked great for the ‘Windows’ side for our ‘database’/’utilities’ applications. Used C for the control systems. Good mix. Still use a bit of Pascal today although Python and C/C++ handle most of my work needs. Lazarus and fpc work great today also.
One of my (I think) big wins I had with Pascal was developing a DOS GUI application for our SCADA system. Eventually was rewritten when Windows came along… At the time, the company was using an expensive ‘smart’ monitor (built ‘I think’ in Sweden at the time) that had built in graphics that you sent serial data to to display rudimentary graphics with built in graphic symbols fairly quickly. Big clunky things as I recall. At home, I quickly developed in Pascal and an assembler, a prototype GUI application and a screen builder application and brought it in and showed my company what ‘we’ could do ourselves. That was back in the late 80s and PCs were the thing. They went for it big time and the rest is history. I am still using a later version of it (written in Delphi) today running on my current work desktop which is interfacing to our Front End Processor (FEP as we call it) that brings in field RTU information and sends it on to our Energy Management System (EMS) . I am no longer actively developing it (haven’t for years), as the FEP will eventually be phased out when the RTUs in the field get replaced with newer (not better) technology. Some of the RTUs have been running since the early 90s. I’ll be retired long before all of them go away… I digress…
Have a real soft spot for Pascal and Object Pascal (and Borland). A nice language to work with to get the job done at the time. Those were heady days as everything was ‘new’ and ‘exciting’ as technology was moving — quickly. Borland products were the cat’s pajamas (Turbo Pascal, Turbo C, Prolog, etc.) … Java introduced, www was kicking off, etc. Now, not so much…. Most things are a ‘been done’. Even here on hackaday, someone sends an article in and someone says ‘oh, did that years ago with …’ . As the wheel turns. But I now enjoy piddling around with RP2040s, RP2350s and RPIs now for different projects. My ‘new’ and ‘fun’ computing frontier. Ultibo ( https://ultibo.org/ ) has been interesting to work with too. But nothing from them since 2022. Really make your RPIs zing with Pascal.
One more thing… Watched his video. I don’t know why he doesn’t mention you can just use a text editor (notepad++, geany, etc.) to develop apps. You don’t have to use a fancy IDE. A text editor and the compiler, fpc are all the tools you need for console apps. Nice to have the Lazarus IDE for GUI apps though for fast GUI development.
Yes, we used (Turbo) Pascal as the language for our first-semester CS course in 1986. Prior to that I had been essentially self-taught in various flavors of BASIC (mostly C64). I think some of the good habits I picked up in that course have stuck with me through my career. I also think it helped me a lot when I started working professionally with Ada in 1990.
After the Pascal course, we quickly transitioned through Scheme/Lisp, C, and some assembler.
Pascal was definitely a better learning experience than what my kids had in HS, with Java.
BASIC was used in High School CS classes. Still remember doing the o’ bubble sort in BASIC….
For me at College, Pascal was the base language for all CS classes like ‘data structures’, ‘numerical analysis’, etc. As well as the senior product (a team effort). We did have one semester of VAX assembly and Fortran. There was one class called ‘Programming Landscape’ that introduced us to Lisp, Cobol, and several other languages that I have long forgotten. I had to learn ‘C’ on my own at the time which was good as I could put it on my resume. Electronics was back to BASIC with peeks and posts on a C64 to run a light following device (and yes a 555 was involved as well).
Peeks and Pokes …
Where to get a good tutorial for lazarus/free Pascal?
The linked Youtube video’s channel looks like a good place to start, if you’re a video learner. [Huw Collingbourne], who does the videos, wrote a book on object pascal back in the day, so he knows his stuff.
Tutorial on freePascal the Wiki looks like a good start if you don’t mind reading (my preference).
https://wiki.freepascal.org/Lazarus_Documentation
https://wiki.freepascal.org/Basic_Pascal_Tutorial/Chapter_1/Program_Structure
https://www.getlazarus.org/learn/tutorials/
Probably others. There are a few older books out there if you search on Amazon too.
Total Commander, in my (and many other’s) opinion the world’s best file manager, is still maintained by Christian Ghisler and written in Pascal, using Delphi for 32 bit versions and Lazarus for 64 bit versions.
Even I, who is purely a Linux guy, use it regularly via wine, even though my daily driver is Double Commander which is the best TC clone I have yet come across, or Midnight Commander in the terminal. But there are still lots of use cases where I opt for TC.
One of my favorite features of Pascal is the subrange type. It allows one to specify the range of values a variable may use. When used with integer or real types it places the burden on the compiler of allocating the proper size data piece to store and manipulate it. This choice is a compromise between efficiency of processing and efficiency of storage.
Turbo Pascal was great but I used Tospeed Modula-2 much more designing early communication sw. They were both quite similar in many ways.
Some extra history / reading material: https://www.amazon.com/Pioneering-Simplicity-fascinating-history-Delphi/dp/9083440311
who maintains the pascal language?
AI Overview
There isn’t a single entity that “maintains” the original
Pascal language, which is now a historical standard.
However, the Free Pascal project actively maintains
and develops a widely used, modern open-source
implementation of Pascal and its Object Pascal dialect,
while Embarcadero Technologies maintains the
commercial Delphi product, which also uses a
dialect of Object Pascal.
The Free Pascal Project
…
Embarcadero Technologies
…
Niklaus Wirth
Software maintenance cost issues.
is windows 11 a legal and maintenance financial
liability for microsoft?
AI Overview
Windows 11 represents a significant financial and
maintenance obligation for Microsoft, but its legal
liability to consumers is severely limited by its licensing
agreements. For enterprise customers, liability is
governed by specific contracts that may differ.
Financial and maintenance liability
Windows 11 is a long-term financial and maintenance
liability because Microsoft must:
Fund ongoing development:
…
Release regular security patches:
…
…
Provide technical support:
…
Plan for end-of-life:
Legal liability
For the average consumer, Microsoft’s legal liability is
heavily restricted by its End User License Agreement
(EULA) and other service terms.
Standard EULA clauses include:
“AS IS” licensing:
…
Limited damages:
…
Class-action waivers:
Exceptions to liability limits:
ntentional misconduct:
…
Regional laws:
…
Gross negligence:
Enterprise vs. consumer liability
Legal liability for enterprise customers can
differ from that of a consumer:
Enterprise agreements:
…
Third-party providers:
I started programming about 20years ago with Delphi for business application development. i loved the ease to make GUIs and how nice one could change public variables to properties (with getters and setters) without at all changing the interface.
Maybe I should try it again and see if it can do me something well in the robotics world, that is now more my home :D
Or at least put it back on a CV and get some money maintaining legacy stuff…?
“Maybe I should try it again” … Just try Lazarus instead of Delphi. It has the familiar feel, and most of the modules you would have used in Delphi are there to drag and drop. Easy to install on Linux. For me it is ‘apt install lazarus’. And as the article said, it runs natively in Linux, Windoze, or Mac. If you are familiar with RPIs, Ultibo (which uses Lazarus as IDE) was/is a cool project. Run your app natively on the RPIs without any of the Linux OS overhead. Basically treat the RPI like real-fast micro controller for robotics or whatever… It doesn’t support the RPI-5 though. I keep ‘meaning’ to get back to it, but I get distracted. Right now working out the kinks with an Adafruit Fruit Jam board with Circuit Python…