If you have developed in Pascal or Delphi in the past decades, you’re probably familiar with the Lazarus IDE that provides an interface to the Free Pascal Compiler (FPC), much like Delphi’s IDE. For users of Lazarus IDE there’s now an exciting new development, with the announcement that FPC and Lazarus now support dynamic packages.
The upshot of this is that you no longer need to rebuild the IDE if you want to add components, controls and Lazarus extensions. In addition you can use this same dynamic package feature in your own Pascal applications this way.
Naturally this is a great improvement, and it’s good to see more improvements to such a venerable programming language. Not only is it still being used today for just about anything, including web development, but there is a good case to be made for using Pascal today as it’s no longer the language it was half a decade ago.
We’d also be remiss to not mention the legacy of [Niklaus Wirth], who not only created Pascal, but was also instrumental in the development of Object Pascal together with Apple. This effort ultimately led to everything from Turbo Pascal to Delphi, FPC and so much more, making it a heartening sight to see this legacy being kept alive today.

Oh, Lazarus! I remember Lazarus! That not-quite Delphi alternative!
Just like Gambas was (not quite) for VB6 programers!
I’ve used Lazarus to write little programs with it for Mac OS X Tiger!
But I remember it was a bit tricky to find the right FPC version that matches the IDE.
Back then I wished that Kylix had a BSD port with Carbon/Cocoa application support (Mac OS X was built on Darwin).
Being able to compile existing Delphi projects (using VCL or old OWL) on Mac OS X (or Mac OS 9.x) would have been cool!
I’m thinking of late 2000s, btw, when Tiger and Classic Environment still mattered in daily use.
True, that’s a common complain. Package managers usually solve the problem, however, but you can also skip them and install an independent version with all the bells and whistles using fpcupdeluxe.
https://github.com/LongDirtyAnimAlf/fpcupdeluxe
Free Pascal is free as long as your time is worthless.
Time is relative.
Lunchtime doubly so.
Noo! Not my lunchtime! 😭
(Wait, didn’t Ford or Albert say something like this? 🤔)
Yes. Ford Prefect talking to Arthur Dent in “The Hitchhiker’s Guide to the Galaxy”:
https://www.goodreads.com/quotes/7079481-three-pints-said-arthur-at-lunchtime-the-man-next-to
FPC is my go to for little projects because I can whip up something and cross compile it easily. Some of the advantages of Rust tools without the complexity.
I had a lot of success getting fpc to target my ColdFire emulator. Making little sandbox programs easy to write.
Of course most things are free when your time is worthless. Even a free lunch of your own leftovers costs you time to prepare.
The one and only time I’ve touched fpc is trying to build DoomRL (https://github.com/chaosforgeorg/drl) and I just could. not. get. it. to. work. The github repo even talks about lazarus!
A current-day x86_64 Linux distribution (either Mint or OpenSuse, I don’t recall) is hardly an exotic platform.
Can’t say that was a good impression.
The last time I had any need for Pascal was Apple’s Object Pascal on a Mac II in the ’90s–that was the development environment. As for today, “Why not?” is just the wrong question. The right question is “Why?” Cross platform? Pascal doesn’t hold a candle to C or Python. Programming hygiene? Good programming can be practiced in (well, nearly) any language. To be sure, you’re welcome to use whatever language you want, but, if anybody else is ever going to work on it, don’t be a knucklehead.
MikroTik RouterOS script language is not one of them 🤮
C++ is an exception, I think. It’s an oversized makro assembler, a “super assembler”.
Or akin to a large collection of DOS batch files that use CALL on each others. :D
I rather think that Turbo Pascal or, say, Modula is a real high-level language that teaches good programming practices.
C++ is for the crazy, wild fighter jet pilots among the programmers. ;)
namely those jet pilots who die in a fiery crashs. -I’m kidding, just kidding
Fiery crashes eh? Maciej “Slab” Krakowian comes to mind.
Went full throttle + afterburner in his F16 into a concrete slab at the Radom Airport.
Working on an old open source project written to be compiled with Free Pascal, I’ve seen lots of ugly constructs. To me it feels like you can translate everything 1:1 to C++ (well, except maybe these interfaces with their GUID). Saying that it teaches good programming practices is then just another way of saying it lacks features. There is a reason why every current Pascal compiler does not limit pointers to the operators allowed in ISO 7185.
The answer I was looking for.
Although I would ask, will Pascal teach you anything other languages won’t if you learn it?
It’ll teach you how useless Pascal is.
It’s like a hybrid between C and BASIC. It’s about as useful as BASIC and about as complex as C. You need lots of semicolons, colons, periods, braces, and parenthesis, but they don’t seem to accomplish much. Back then people made the languages complex so they could make the compilers simple.
This is a humorous description, of course.
I remember another one about different programmers (1980s?):
I vaguelly remember that BASIC was being for middle school programmers, C being used by high-school programmers, while Pascal was being used by college programmers.
Or something along these lines..
There’s also a cultural component, I think.
Pascal is more civilized than the others. :)
Let me use some analogies here, please.
Assembler.. eating with bare hands
Makro assembler.. eating with hands (gloves on)
C.. eating with a swiss army knife
C++.. eating with a big hunting knife
BASIC.. eating with plastic spoon, knife and fork
Pascal.. eating with metal spoon, knife and fork
Turbo Pascal.. eating with sticks
Modula, Oberon etc.. artificial nutrition
I think freePascal and Lazarus are meanwhile reliable tools. It’s not the same unstable shit it was 20 years ago. Installation and matching correct versions are trivial now, because the process is automated. I used it for many small programs and also for machine interfaces via Modbus or raw TCP. What I love most are the small, fast and self sustained executables without further depencies. That’s something a lot of other compilers won’t deliver (except C of course).
I learned Pascal after modula 2, and then realized asm and hex ,binary could all be done with very little Pascal.
” then realized asm and hex ,binary could all be done with very little Pascal.” Sincere question: what does that mean?
Another sincere question: back in the 1980s, WordPerfect 5.5 for DOS had “Welcome to Delphi!” and some other stuff I no longer remember embedded in its code. I’ve researched this and found only dead ends, asking Google was useless as expected:
https://www.google.com/search?q=why+does+wordperfect+5.5+have+%22welcome+to+delphi%22+encoded+in+its+code%3F&rlz=1C1GCEO_enUS1019US1019&oq=why+does+wordperfect+5.5+have+%22welcome+to+delphi%22+encoded+in+its+code%3F&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQIRiPAjIHCAIQIRiPAtIBCTI1NDE1ajBqN6gCALACAA&sourceid=chrome&source=chrome.ob&ie=UTF-8
I never fell under either of the two possibilities by the reply (not “answer”!) and in those days it was possible to know every file on your computer. And internet wasn ‘t a thing (yes I know just STOP) so no one else was writing to my hard drive.
Lazarus is a superb development environment, and it is regrettable that it is so tightly bound to Pascal.
Pascal deserves respect for being decades ahead of its time when considering the importance of block-structured programming, strong typing and so on which underlie now-dominant languages such as C++, Java, Rust and Python: Hell, even BASIC learned stuff from it.
Regrettably, too many in the Pascal community hold the view that “everything Wirth did is perfect!” until somebody suggests that some part of Pascal be upgraded to be compatible with one of his later languages. As a specific example, Modula-2 was far more detailed in its description of integer type compatibility than Pascal, but there is a certain type of language maintainer who at this point shrugs and questions Wirth’s competence.
The FPC compiler (as distinct from the Lazarus IDE) has not had a bugfix release for five years, with the core developers apparently being more interested in adding “computer science crap” like generics to the language: stuff which is of minimal interest to most traditional Pascal programmers who by now are “of a certain age”. The quality of the library documentation is marginal, and anybody who questions either the compiler or documentation is told to try the bleeding-edge development version: advice which to most is unhelpful at best.
Meanwhile there have been at least two AI-driven forks, and with the best will in the World it’s unreasonable to expect Lazarus to track these where their syntax deviates from mainstream Object Pascal as implemented by Delphi and FPC.
There’s some very smart people on the periphery of the projects, and by their efforts it is possible to use Lazarus for jobs like programming- and debugging- an embedded RP2040, there’s also reasonable support for targeting an Android device. However in both these cases one has to question the wisdom of using a development environment which is alien to the majority of people using- and trying to offer support for- that type of platform.
I’ve been using Pascal (with a Modula-2 interlude) since the early ’80s, and from that POV can say that I’ve seen worse compilers than FPC and /much/ worse development environments than Lazarus. But on the balance, now that Pascal is about as dead as dBase and other “4GLs”, I’m left questioning the wisdom of my focus.
My Modula-2 years were the happiest of my programming life. Something about the language, especially compared to its 1985 contemporaries, really spoke to me. Occasionally I consider looking into whoever’s still maintaining an implementation but as others have noted, who has the time. Warm memories though.
Using FreePascal wouldn’t be my first choice for most projects, but I like Pascal and I like what they’re doing and simply the fact that they keep doing it.
The amount of hate towards it here in the comments is surprising. Do people get physically hurt when someone quietly does a thing they love? A rhetorical question, obviously HaD comments attract this specific kind of people.
Regrettably, there are those in the core Pascal community who hate other languages with even more vehemence than people criticise Pascal. Whether or not the parties on either side of the divide are well-informed is barely relevant, but I really don’t like seeing “we can’t do /that/, it’s how C does it”.
I’d single out for particular criticism the broodmother of a Pascal-oriented IRC channel, who some years ago gained the reputation of grilling newcomers to evaluate their purity and banning people who zhe considered to be “haters”.
I’d also criticise the adherents of many other languages, who insist that their favoured tools “have got” such-and-such a desirable feature when in fact it was grafted on as a “mid-lfe extension”. Hence FORTRAN (1957) is object-oriented due to facilities added around 2003, C (1972) has type-checking due to facilities added around 1995… I’m not saying that Pascal has not erred in that sense, but for people to criticise it because something wasn’t in the language until ten years after the publication of Jensen&Wirth is quite simply not reasonable.
But Lazarus, irrespective of language, remains a good way of Getting Things Done.
I know real well about angry Pascal zealots too. Regrettable indeed.