International Pascal Congress
pascalcongress.com
pascalcongress.com
In the 90's, I had no Internet. The library (neither school nor public) had no programming books. My high school had no CS/programming classes. The computer class (word processor/spreadsheet usage) teacher did not know anything about programming, but she knew that I liked computers. One day, she gave me a big yellow box and said "I don't know anything about this, but I thought that you might like to play with it."
All that I had was 3.5" diskettes and the manuals. Those manuals were written so well that I taught myself programming by reading them and their examples. I still remember the day that I figured out what a pointer was, simply by their example code.
I am forever grateful to that teacher, as well as the writers of those manuals. Today, I have a PhD in CS, but I have never had a programming class (I have taught them, however). It was the design of the Pascal language that allowed for that.
I'm glad that it is still going.
Another major usability thing was the debugger. One of the best debuggers to this day, it had just the basics, but they were well integrated into the IDE. Alt-F5 to flip the screen from code to output, right? if I remember.
I know this from having read his book and using an early Pascal compiler, and being very frustrated with it.
Pascal did, however, have a very nice feature - nested functions. It's the one feature from Pascal that I incorporated into D, and they're such a nice feature I continue to be surprised they aren't adopted by other languages.
It just makes complex code much more readable without polluting the module's scope.
So I am not sure how common it is, but there are at least some languages that allow this.
Which is one reason I don't like self-conscious "teaching" programming languages: They rarely escape the stench of condescension that pervades such endeavors, which means they lack features some designer or team of designers though were "too advanced" for early learners but which are essential to writing any nontrivial code. See also: BASIC, another language where the standard is honored more in the breach than the observance, to the point that "Basic" is more of a "vibe" than any actual set of syntax and features you can point to. (In fact, modern nice Basic dialects have nearly converged with Object Pascal.)
> Pascal did, however, have a very nice feature - nested functions. It's the one feature from Pascal that I incorporated into D, and they're such a nice feature I continue to be surprised they aren't adopted by other languages.
Not that you don't know this, of course, but GCC has long has nested functions as an extension to the C programming language. Which, again, is an example of a nice quality-of-life feature added to a somewhat lacking language as a nonstandard extension. Oh, well.
I know. Yet, it still hasn't gotten into the C Standard. I've also never seen it used in practice, whereas in D we use it everywhere. I constantly find handy new uses for it.
Besides in practice in the last ~3 decades or so every implementation was based on Borland's dialect (which AFAIK was based on the UCSD dialect).
Also FWIW Free Pascal is both open source and has a mode to compile code in standard Pascal, though it was added relatively recently (version 3.0.0 released in 2015 - i wrote "relatively" because the compiler exists since the mid-90s).
As for the proprietary part, fpc exists.
Also why alongside Turbo Pascal, when I came to learn C via Turbo C 2.0 and a book on RatC, the high school teacher also happened to have a copy of the newly released Turbo C++ 1.0.
So in 1993, it became clear to me that the alternative to Turbo Pascal, as cross platform language could only be C++, C already looked primitive by Turbo Pascal standards in early 1990's, and at least C++ provided the language features to be almost as safe as TP, with similar feature level.
Had fun in recent months installing fpc on all my computers and playing with it and it seems really good. Cross-platform support is amazing, possibly the best I have ever seen.
Microsoft Dynamics 365 Business Central has a built-in development environment with a language called AL. AL is a variant of Pascal.
A bit of background, Pascal was very popular in Denmark in the 80'ties and 90'ties (Turbo Pascal was created by a Dane, Anders Hejlsberg, later Delphi, c# and TypeScript fame). Business Central was a Danish piece of software created for IBM before Microsoft acquired it, so choosing Pascal as the base language was a very natural thing.
I got my first job because IBM needed Pascal developers for this new accounting system they got and I already knew Turbo Pascal.
Today the AL compiler is built on Roslyn (same as the c# compiler) and have a fully capable language server supporting all the fancy intellisence stuff in VS Code, also supported by GitHub CoPilot.
p.s. I even created my own AL compiler, written in AL https://www.hougaard.com/toolbox
The one I use, fpc/Lazarus, is one of those projects where people seem to use it for very significant work to a very high degree of personal satisfaction, but often to very little fanfare.
Like let's say you built the world's fastest JSON viewer with it (already done, I think).
Or you built a pretty amazing orthodox file manager with it (DC).
Or a great little text editor? Cudatext. The author wrote a plugin at my casual mention of the topic of snippets that could run external commands, which I thought was awesome of them.
Lazpaint is also pretty neat and I was able to make a pseudo-3D render with it. Very nice set of tools.
Those are each a pretty big deal in their own ways. But these days there's another public-presence layer to development, where people want to find Mr. Lazarus chocolate bars on the shelf at their local store before they'll trust that it's worth their time, maybe. (I hear creator brands are pretty much everything right now?)
Yet, the fact that it's around, well maintained, and used in very impressive projects, still means a lot to those who are interested in what it can do.
And, I guess it still does some new stuff as needed. Pas2JS, webassembly, etc.
https://www.freepascal.org/~michael/pas2js-demos/wasienv/can...
And that's just thinking about fpc/Laz... There's much more to the Pascal world than this.
Fun fact: Double Command is a clone of Total Commander, itself also written in Pascal (the 32bit version is compiled using Delphi and the 64bit version using Free Pascal / Lazarus).
Also a somewhat popular archiving tool in recent years, peazip, is made in FPC / Lazarus too.
Pascal was my first language, but only because it happened to be used for scripting repetitive tasks for a game I played. I had a blast, even though there were far more modern options.
It is a solid language, but I wouldn't really recommend picking it up today.
Wonder why those languages didn't get industry/FOSS adoption as much as Pascal did?
There are some web frameworks in Pascal like Fano or Brooke. Never personally use it.
Want to write Android apps? There's LAMW. No iOS equivalent in FOSS world, AFAIK. Probably you want to use Delphi for this purpose.
Conclusion: still OK, overall. Considering those implementations are not backup up by giant companies like Google, MS, etc.
While you typed that a C developer could already have written a memory violation bug, think of the productivity increase
C might not have been effectively better (Pascal strings were better) but it had a feeling of increased productivity
Modula-2 came next and it was a huge improvement over Pascal but Ada came out within two years and stole Modula-2's thunder. Oberon came out even later but Ada was pretty big by that time and Oberon didn't get much use. By the mid to late 80's, Ada was the most popular language, even more popular than C and C++, for a couple of years.
But then C++ overtook it. Why? Because computers were slower back then and people didn't want to give up any cycles to safety. After all, no one was online yet so security wasn't a huge concern. I think the verbosity of Ada also hurt it. In those days, most programmers hadn't taken typing courses.
Then the US military relaxed the requirement to use Ada and it declined, but is still in use in applications today requiring high safety such as at NASA and air traffic control systems. NASA is using it in the Artemis programs.
In Pascal, an IF statement looked like this:
IF <cond> THEN BEGIN <true block> END ELSE BEGIN <false block> END END
But Modula-2 and Oberon look like this:
IF <cond> THEN <true block>; ELSE <false block>; END
And Ada looks like:
IF <cond> THEN <true block>; ELSE <false block>; END IF;