As a different datapoint Pascal is still taught here in Romania in sevondary school just as it was the case 20 years ago.
Bigger problem is that they teach the fundamentals with the abandonware that is turbo pascal instead of using something like the modern Free Pascal Compiler. Which means knowledge of what is possible outside curricula is limited.
Last year I almost was tasked with porting some Pascal codebase to a modern language. Problem was the project had a bus factor of 1, legacy overengineered and would only compile on windows with some proprietary compiler.
Maybe that company would use Claude/Codez or something like that to port the project.
> Bigger problem is that they teach the fundamentals with the abandonware that is turbo pascal instead of using something like the modern Free Pascal Compiler. Which means knowledge of what is possible outside curricula is limited.
FreePascal can compile TP programs with no changes except for the MS-DOS graphics. A student can swap FP for TP and the code will keep running. But yes, I would switch to FP from the start if I were in charge.
What do you mean by “not optimized enough“?
Binaries created with Free Pascal Compiler are very small, compilation time is super fast and runtime performance was never an issue for the typical system/userland programs. I think in many ways on par or ahead of other mainstream system programming languages.
It's amazing how underestimated the Object Pascal language is. Certain people or rivals want to write it off or declare it's "dead", yet the language (including various dialects) are still going strong.
IMO it is not entirely dead, but not really "alive" either. TIOBE even has Object Pascal mentioned right now in TOP 20. Now, TIOBE has tons of issues, but it also means that there exists some tangible interest.
Still, I don't feel many people want to use Object Pascal these days. If you have the choice between Python and Object Pascal, most people will undoubtedly use Python. It's just how it is right now, and I also don't see how that can change in favour of Object Pascal. Programming languages nowadays have so much more competition, and people are less tolerant of flaws. Strangely enough, people barely seem to work on these flaws; this is one of my pet peeve with ruby, the documentation should be much better but it is not. I no longer find that acceptable in 2026, with AI spam slop lowering the quality and google search being terrible and almost totally useless nowadays. You'd assume that a counter-move to this slop-degradation would be to massively improve documentation, but you still find core projects in ruby or at the least important add-ons, to have low-quality documentation. And barely anybody wants to improve on that either.
To me it's less the verbose syntax but more the weirdness and inconsistency of it. Like making a distinction between a procedure and a function, or returning data from a function by assigning it to a magical variable. It feels like a cobbled-together language rather than a properly designed one.
I wasn't able to find a definitive account of why they're separated in Ada, but I believe the idea is this: functions are for where code behaves in a roughly functionally pure way and yields a value that should not be discarded by the caller, whereas procs are for functionality with 'deep' side-effects.
The SPARK subset of Ada comes pretty close to enforcing purity of Ada functions, although it still permits them to read globals. [0]
It's not just an oversight. The core of the Ada language was designed deliberately. [1]
People hate verbose syntax until it's about a language they like. Then suddenly "the IDE takes care of that so I don't care" or some such. With Ada in particular, if you gave up safer programming for 40 years because "ew nasty I have to type begin...end..." then I don't want to hear about your pet safe language.
If someone has an example graphical project which compiles to an HTML page w/ JavaScript using the above, I'd love to see it and a detailed set of build instructions and notes on installing the needed toolchain and deployment. (as a note, I'm currently working in flet.dev using Python which allowed me to get a small prototype up-and-running, but I'm still looking into self-hosting and doing something more complex)
I think I last used Pascal, TurboPascal if I remember correctly,
in school - perhaps at age 17 or something like that. I recall
that we used to define some things from geometry, e. g. a triangle,
calculating sides, angles, surface area and so forth, and then
of some more objects from geometry.
I have not used Pascal since then but it was not the most terrible
programming language of all times either. These days I would not
know why I'd want to use it, compared to IMO better languages. Nonetheless
I found it ok for teaching in school back then.
> > 5.1. Remember to free the class instances
> > The class instances have to be manually freed, otherwise you get memory leaks.
> manual memory management in 2026?
This takes me back, my first adventure in programming was as a 12 year old creating a Pong clone using Turbo Pascal on DOS. It came in handy later as a 20 year old when I was doing freelance as a Delphi dev. Amazing to see Pascal on HN.
At around the same age I learned a version/imitation of Object Pascal for scripting the PIRCH IRC client on windows 95. It was neet when a friends dad who was a professional programmer showed me the latest version of Delphi, which he was pretty excited about, and I could actually understand most of what he was showing me.
I was introduced to ucsd pascal on apple 2 but switched to Ada by the time turbo pascal came out.
This intro is nice but I feel Ada is the way to go if one is into wirthian languages.
I loved writing Pascal and Modula-2 at the time, and using both for a while sure made me a better programmer. Pascal was an excellent educational tool, but for a decade had enormous business impact, too.
I used to have object pascal as my main language, and it has a lot in its favour. But when I go back to it I find two things drag it down.
Pre definition of variables. I would like to be able to define variables on first assignment and scoped to the begin/end in which that happens, I don't think there is a good remaining argument to keep them above the statements.
The namespace is cluttered with legacy usage, making the many years of advancement require odd. Combinations of prefixes.
I still think there is a scope for a light fork that changes the name to distinguish it and starts the RTL afresh using the decades of hindsight and improvements.
When I was first learning to program, I started using the free Borland Turbo C++ compiler [1]. I had managed to get subscribed to their newsletter that seemed very insistent that Delphi was going to be the future for desktop software. Awhile later, I found out that "Spybot – Search & Destroy" was written in Delphi, so I figured it might be fun to play with.
So play with it I did. I hadn't used Visual Basic at the time, so the entire idea of "drag and drop" GUIs was kind of amazing, and I even kind of ended up liking the language.
I wasn't able to get any kind of OpenGL stuff working with it, so I ended up going back to C and I really haven't touched the language since, but I kind of feel like I should at some point just to finish off that loose thread in my education.
[1] I actually don't remember if that was proper freeware or if I had gotten it cough unofficially free...
32 comments
[ 1.2 ms ] story [ 11.8 ms ] thread1) The code isn't as "optimized" as it could be.
2) The talent pool is limited --- chicken or egg issue.
It has been this way for a very long time so I don't see it changing.
Bigger problem is that they teach the fundamentals with the abandonware that is turbo pascal instead of using something like the modern Free Pascal Compiler. Which means knowledge of what is possible outside curricula is limited.
Last year I almost was tasked with porting some Pascal codebase to a modern language. Problem was the project had a bus factor of 1, legacy overengineered and would only compile on windows with some proprietary compiler.
Maybe that company would use Claude/Codez or something like that to port the project.
FreePascal can compile TP programs with no changes except for the MS-DOS graphics. A student can swap FP for TP and the code will keep running. But yes, I would switch to FP from the start if I were in charge.
https://github.com/rochus-keller/Are-we-fast-yet/blob/main/F...
Still, I don't feel many people want to use Object Pascal these days. If you have the choice between Python and Object Pascal, most people will undoubtedly use Python. It's just how it is right now, and I also don't see how that can change in favour of Object Pascal. Programming languages nowadays have so much more competition, and people are less tolerant of flaws. Strangely enough, people barely seem to work on these flaws; this is one of my pet peeve with ruby, the documentation should be much better but it is not. I no longer find that acceptable in 2026, with AI spam slop lowering the quality and google search being terrible and almost totally useless nowadays. You'd assume that a counter-move to this slop-degradation would be to massively improve documentation, but you still find core projects in ruby or at the least important add-ons, to have low-quality documentation. And barely anybody wants to improve on that either.
Personally, in that family of languages I prefer Ada, but I gave up with programming and programming languages.
The SPARK subset of Ada comes pretty close to enforcing purity of Ada functions, although it still permits them to read globals. [0]
It's not just an oversight. The core of the Ada language was designed deliberately. [1]
[0] https://learn.adacore.com/courses/intro-to-spark/chapters/01...
[1] https://en.wikipedia.org/wiki/Ada_(programming_language)#His...
People hate verbose syntax until it's about a language they like. Then suddenly "the IDE takes care of that so I don't care" or some such. With Ada in particular, if you gave up safer programming for 40 years because "ew nasty I have to type begin...end..." then I don't want to hear about your pet safe language.
I'd love to be able to take it up again, and this document looks very promising for that, esp. paired with:
https://wiki.freepascal.org/pas2js
which I now see is supported in Lazarus.
If someone has an example graphical project which compiles to an HTML page w/ JavaScript using the above, I'd love to see it and a detailed set of build instructions and notes on installing the needed toolchain and deployment. (as a note, I'm currently working in flet.dev using Python which allowed me to get a small prototype up-and-running, but I'm still looking into self-hosting and doing something more complex)
I have not used Pascal since then but it was not the most terrible programming language of all times either. These days I would not know why I'd want to use it, compared to IMO better languages. Nonetheless I found it ok for teaching in school back then.
Depends on compiler & runtime. If you pick Oxygene, for example, you get GC etc. https://www.remobjects.com/elements/oxygene/language
https://computerhistory.org/blog/adobe-photoshop-source-code...
Most criticized things regarding Pascal e.g. https://www.cs.virginia.edu/~evans/cs655/readings/bwk-on-pas... were already fixed by extension or coukd be fixed easily.
Its slight verbosity - somewhere between C and COBOL - arguably was a pro rather than a con.
Today, Ada and Julia seem to be the langages alive that resemble Pascal the most.
Pre definition of variables. I would like to be able to define variables on first assignment and scoped to the begin/end in which that happens, I don't think there is a good remaining argument to keep them above the statements.
The namespace is cluttered with legacy usage, making the many years of advancement require odd. Combinations of prefixes.
I still think there is a scope for a light fork that changes the name to distinguish it and starts the RTL afresh using the decades of hindsight and improvements.
Good news! Object Pascal has inline variable declaration with type inference:
https://docwiki.embarcadero.com/RADStudio/Florence/en/Delphi...
https://blogs.embarcadero.com/introducing-inline-variables-i...
Type inference is my preference but I thought that would have been a step too far for some.
So play with it I did. I hadn't used Visual Basic at the time, so the entire idea of "drag and drop" GUIs was kind of amazing, and I even kind of ended up liking the language.
I wasn't able to get any kind of OpenGL stuff working with it, so I ended up going back to C and I really haven't touched the language since, but I kind of feel like I should at some point just to finish off that loose thread in my education.
[1] I actually don't remember if that was proper freeware or if I had gotten it cough unofficially free...