The Case For Pascal, 55 Years On

Screenshot of Lazarus IDE on MacOS Ventura

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.

26 thoughts on “The Case For Pascal, 55 Years On

  1. 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!

  2. 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.

  3. 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.

  4. 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…

  5. 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.

  6. 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.

    1. 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

    2. “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.

  7. 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

  8. 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.

  9. 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.

  10. 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.

    1. 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.

    2. 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.

    3. 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.

    1. 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.

    2. 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.

  11. 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.

  12. 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.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.