Why I use Object Pascal
dubst3pp4.github.io
dubst3pp4.github.io
Put another way, the thought patterns programmers fall into when using it seem to result in code which is easier to understand than most other languages which seem to encourage "perlism" (creating a single unreadable line), "forthism" (creating a billion two line words that combine to solve all the problems in one word), or a few other things which become completely unmaintainable when the project grows beyond what can be written by a over-energetic student in a semester at school.
Then I just had fun showing to disbelivers how to do in TP stuff that apparently only C was capable of.
Good point. Even vi (before vim) had/has the abbr(eviation) command which can be used for things like expanding say bg into begin and so on. Plus, typing time is not the biggest part of programming time, not by a long chalk, though of course improving typing productivity can help some with overall programming productivity. Also, others have said in maybe this thread as well as other places, that Pascal's unambiguous syntax is one reason for the high compilation speed of Pascal compilers - which again aids overall productivity. [Used both Turbo Pascal and C a lot.]
and it's not too different from Ruby, to boot.
I prefer begin/end so this is a feature to me.
Somewhat surprisingly, I think Perl's syntax is one of the reasons that Python became popular. Perl can do pretty much everything Python can, and it came significantly earlier. Yet people gravitated toward Python.
I wouldn't call Python "strongly restrictive", but I would call it "just right". It's terse without being unreadable.
JavaScript syntax is also pretty sane (but there are many horrible parts to the semantics.)
Ruby seems to be pretty nice in the common cases, but there are apparently gremlins lurking in corner cases. Python has only 1 or 2 syntactic gremlins I can think of (trailing comma, etc.)
I don't think syntax is the main culprit here, and Perl is only four years older than Python. For about 15 years Python tried, unsuccessfully, to compete with Perl as the premier language for shell scripting and sysadmin tasks. It wasn't until around 2005 that Python finally caught on, its rise coinciding with Ruby. While I do personally find Python more readable than Perl, I attribute its ascent more to the combination of the Web 2.0 gold rush demanding dynamically-typed languages for quick prototyping, Perl's apparent mid-2000s limbo due to Perl 5 vs Perl 6, the then-declining reputation of PHP and the shared hosting services which first popularized it, and the quality of Python's standard library (which made up for CPAN).
perl -pi -e 's/somestring/newstring/g' $(ag -l --python Foo)
Does Python have an equivalent?
I think the fabulous Python libraries for data science have really propelled the language to the top of the list, in terms of users.
I mean, yes, they're both Turing-complete languages, so one can be used to do anything the other can. I guess the actual question is whether it makes those things easier to do, and I think the same properties that make Perl great for one-liners make it harder for long-lived, large projects.
It's more culture than syntax; Python culture tends to favour adhering to a common style, while Perl culture tends to valorise clever or even poetic implementation.
Surely the ugliness of OO Perl and having to deal with references/dereferences/data structure flattening by default is the biggest reason. Otherwise, why would Ruby have become popular around the same time despite not necessarily being very readable?
e: Also the Perl 6 debacle like the other guy said.
I was happy to realize that most of the criticism in that essay no longer applies to relatively recent versions of the language/IDE (Delphi 7 in my case).
One huge advantage if Pascal is that it is very easy to read; the code does not look or feel pretty, but it is so easy to read I could get an idea of what was going on without any prior knowledge of Pascal within a few hours.
Keywords not being case-sensitive felt weird at first, but one gets used to it very quickly.
Anyway, my point was that 15 years old tool can't be dismissed as "ancient" when the critical write-up itself is 36 years old.
1. "I was happy to realize that most of the criticism in that essay no longer applies to relatively recent versions of the language/IDE (Delphi 7 in my case)."
2. "Delphi 7 was released in August 2002 (at least according to the Wikipedia page), over 15 years ago. It's hard to think of this as relatively recent."
3. "It's 21 years newer than the critical article he mentioned.."
4. "But that article was not 21 years newer than the first version of TP that was released in 1983."
5. "The first version of Turbo Pascal didn't have object system or modules."
Now, you can make your version of what we had in mind when we wrote each comment, but I'm very sure that others would agree that 2 was trying to say that criticism was invalid much earlier than 2002.
So when you say that the original article was much older in 3, it seems obvious that you're trying to say that criticism was valid because the article was about a much older version.
And then I point in 4 that criticism was no longer valid much earlier than 2002.
And then you point in 5 that TP didn't have object system or modules that's a complete non sequitur because the original criticism hardly could criticize lack of object system when its author had not made one for his own language. Actually there's a lot to say against the original article, but that's another story.
The point was raised that Delphi isn't "relatively recent", and if that's true, from points 1&2 it then follows that the original Kernighan criticism still applies to it. I pointed out that the criticism is much older than Delphi, giving enough grounds to think an improvement is possible in the timespan of two decades.
Then you come with Turbo Pascal 1.0 out of left field, which bears no relation to any of the points. Noone was stating Turbo Pascal 1.0 is a "relatively recent" language, nor that the K's criticism wasn't a good summary of TP1.0 era state of the art.
I had a notion that Pascal was a "toy teaching language" too, but for what I was doing that didn't really matter.
The main advantage of Pascal is super fast compilation, but C++ modules should close that gap once they make it into the standard.
This really means it doesn’t permit variably-sized arrays without a hassle on pure language level, so you can’t fall from a bike because it’s wheels are buried in the basement. Manually-specialized Containers like TStringList still use GetMem() and align a pointer to an “infinite” array to that block, shy trick pretending to be safe until reinvented by mere mortal. Iirc, you had to destroy ^properties in destructor by hand too.
Pascal only seemed easier because of three things: a) explicit pointers are hard, b) strings have explicit length of 8 or 16 or 32 bit, and that was also a mess, especially in C interfacing, where PChar worked as intended only half of the time, c) no CS-hard tasks were solved in Pascal by RAD-programmers.
Don’t let your fond memories trick you too much. You can get the same/better behavior and speed by using glib, apr, objc, etc and not using pure C arrays at all.
Quite a few parallel programming research papers were done in Concurrent Pascal during the 70s.
Besides UCSD Pascal, there were a few other OS CS research done in Pascal variants.
Variable legth arrays were available.
C string manipulation is a joke as well, given that in 2017 still doesn't have a way to handle unicode in spite of wchar_t.
The whole point of unsafe code being hard to reach for, is to force people to think instead of producing yet another artifact to hang on the CVE list.
Finally, if we are no longer discussing pure C then Pascal also has libraries and extensions, nothing special about C here.
In any case, there is no need for C when we have C++, other than keeping UNIX kernel devs happy, and legacy code.
I still skim Slashdot too.
Most of the time I'm working on ancient versions of RHEL that are never connected to the internet so I don't exactly get to use "stacks" or anything that wants to pull code from Github. If it doesn't come on the RHEL 5.5 disk it's not available. You might be surprised how much you can do with a modest CGI script, a touch of JS, and some basic styling CSS.
What is Slashdot's strength from your POV?
But surely you've heard of Red Hat itself? In the early 2000s, Red Hat Linux broke into a couple directions: "Fedora Linux" as the community version of the OS, and "Red Hat Enterprise Linux" as the supported, enterprise-level version of the OS (and CentOS as the community-supported version of RHEL).
Slashdot picks up stories that Ars and HN miss sometimes. It just adds some breadth to my tech news sources.
The place had literally piles of OReilly books and that was it. Those were gold.
When I got home I ran NetBSD on salvaged sun4c and sun4m kit.
I was taught Pascal first, then C++. Pascal really helped with learning the basics. I think jumping right into C++ or Java would have been confusing.
As far as stacks go, I use whatever suits the application I want to write. I use: - PL/SQL (mandated by my employer) for generating large batch files in an ETL process - Python for validating the files mentioned above - I'm evaluating the OCaml compiler set for a language I'd like to create - I'm interested in Elixir for back end processes - R for ML - Prolog for prototyping a rules engine that may become the seed for a product - I'd like to get familiar with a JS-based web framework like Angular 2 or React or one of the other ones I've been reading about - I'm looking at Flash to develop a game with my daughter, who seems interested in coding.
I think it's important for older developers to assure younger ones that you remain interested in trying new tools and technologies as you get older. The curiosity and passion for creating don't abate. But, after you stay with an employer for a while and develop critical applications for it, then you get caught in maintaining it in that technology. Essentially, you get frozen in time in a technology stack due to the success of the app you wrote.
You also begin spending more time on ops and support.
But, you pick and choose times to introduce newer technologies, which you largely have to evaluate on your own time.
You don't have to leave the field or slink into irrelevance just because you're older.
Currently working in python in fintech environment.
JavaScript when doing web development, TrasactSQL, PL/SQL and pgSQL for database manipulation.
Plus lots of other languages and tech, keeping an eye on what might be interesting to focus or advocate to customers.
Admittedly I didn't start with Pascal, but rather with BASIC and several assembly languages (1802, Z80, & 6809 were among the first I used). I learned Pascal after C, actually. I like things about both, but often wish that Wirthian languages would have won out.
FWIW, these days I primarily use Java, C, C++ (when I must), and a smattering of other languages, with libraries and such chosen to match the problem at hand and the environment in which it must be solved.
My stack now is... diverse. Python, Spark, Java, React, Node, PyTorch, Scikit and occasionally R.
I almost laughed at a friend who decided to implement C in a compiler course. Having a preference for programming in a language is one thing. Trying to implement it is quite another. He should have realized that. We both had two page grammar that defined Pascal from our high school days.
I was taught turbo Pascal in highschool and it was so bad that even C felt less annoying.
https://mdhughes.tech/2017/09/02/pascal/
and a couple of followup posts
No idea how I'll test Android, I'm a Mac and iOS guy, and years ago when I tried the Android IDE the emulator was appalling.
Delphi? Some big mobile apps are written in it already. WPS Office for Android and/iOS, if you ever heard, was written in Delphi. At least the last time I decompile their APK it confirms a Delphi runtime existence. Disadvantage would be the framework that's not native, thus you may end up in jumbo size APK even for a form + label containing hello world.
I mean, I certainly buy that $VINTAGE_LANGUAGE could still be great to develop in, but I'm curious the practicalities of working on modern systems without re-inventing every single wheel.
But FreePascal has many native libraries for all kinds of stuff...
1) C and Pascal are not too different as languages go (in some respects, both being sort of Algol-family languages), and:
2) I remember from earlier Windows API/SDK days that many Windows APIs had signatures/prototypes that went something like "long far pascal", and remember reading in computer magazines and source code listings about Pascal vs. C calling conventions (it may have been something like the order in which function parameters are pushed onto the stack before the call is executed, who cleans up the stack - caller or callee, etc.).
https://en.wikipedia.org/wiki/X86_calling_conventions
e.g. see the cdecl vs pascal conventions.
> But beside this historical excursion, what are the reasons that I use Free Pascal in my personal projects?
To the contrary, in some areas (like GUI tooling) it is far far beyond newer alternatives like Go.
Also, I think the higher level of the language than C/C++ etc can make it easier to develop your own solution, should you have to.
See:
It is hard to get the boss to allow you to write a mvp in non mainstream language.
So I had a quick swing at the libs and wondered about so/dll dependancies compiled against my exe; and just went for a bundled exe, yum and apt curl install script... under a day native win and ubuntu support?!:D I'm sure there is a TODO tag above my command for the junior that is going to hate me because he now needs to code in lazarus... ;)
I’ve found PHP to be trickier actually, because if there’s no extension to connect to the system you want, you don’t have a real fallback plan except writing your own extension in C.
In my case I do not need anything beyond what is supplied by the environment. The UI library is part of the environment, so is the database interface, ... basically, that is all the application needs.
Generally speaking, applications that basically are a UI on top of a relational database probably don't need any external libraries. And those are, uh, abundant.
Also, calling libraries written in C/C++ is possible, too.
There is a bit of a definition wrapping, and then the C library looks like a pascal one, and unlike most interpreted/JIT/GC/etc languages where the programmer or wrapper has to jump through hoops to transform the data structures to match an in memory C structure, pascal just goes ahead and uses the same datastructure. This yields a far more transparent/efficient interface. Even pascal strings degrade to C strings by skipping the size header, and assuring they are null terminated before calling the C libraries.
With another C++ compiler on Windows, COM is a better approach.
Anywhere else than the usual plain C like APIs.
At least in the past, the interoperability between languages was taken very seriously, because the industry used to abhor the idea of having to rewrite things just because of the need to use a different language (e.g. PL/I instead of Fortran); the object module format was designed to be language-independent.
As computers became faster much of software development switched to interpreted and VM-based languages, and language interoperability became a problem.
Delphi is now $1,200 to $4,400 a user!!! WOW more then the $75 in 1983
https://www.embarcadero.com/app-development-tools-store/delp...
Over the past couple of years I've written, and thrown away, several implementations of Forth in C, C++, and Perl. I've even had it running, embedded, on ESP8266 devices.
It continues to be something I enjoy toying with, but equally something I can't find a perfect use for.
Not to say these are not valid reasons, or expectations one may have from a language, but - what exactly is Pascal being compared to? I mean, it's 2017.
Scheme & LISP have no built-in classes, and one can argue that CLOS isn't what we normally describe as OOP. Both normally have a global namespace.
Inheritance in JavaScript is possible but very hard to implement correctly before ES6. Node has namespaces (sort of) but client-side JavaScript generally doesn't.
PHP in theory has namespaces, but the standard libraries are just dumped in global.
Well, yes, though I consider it far superior to most other object systems out there.
Still, the selection of languages that do is so vast that such reasons hardly answer the question "why Pascal, of all the options".
I care about performance (ruling out any GC language), multi-platform native binaries, language readability, dev community, and a bundle of other factors. Pascal turns out to hit most of my needs and not annoy me too much.
Of the thousands of more obscure languages, I'm sure there's one that'd be perfect, except I'd have a worse time with libraries.
[Citation needed]
Modern PHP development almost exclusively uses Composer libraries rather than the standard libraries, which overwhelmingly use namespaces in Vendor\Project format.
There's going to be a push to clean up the standard library in the coming years. The plan is to introduce a namespaced alternative to the standard library in the global namespace which also cleans up a lot of nits (e.g. phpsadness.com posts). Maybe in PHP 8? Then when the ecosystem catches up, we can discuss deprecating/removing the "just dumped in global" way of doing things in PHP 9.
Source: I'm very likely going to be the main person driving this push.
Just because "most others use . or :" doesn't mean it's the only correct syntax in the realm of possibility.
Nonsense. Lisp has a plethora of standard classes: T, NUMBER, PATHNAME, SYMBOL, SIMPLE-ARRAY, BASE-STRING &c. &c. &c. In fact, I just ran this on a pristine SBCL (no user or :
(let ((ch (make-hash-table :test 'eq)))
(labels ((pc (class)
(loop for subclass in (sb-mop:class-direct-subclasses class)
unless (gethash subclass ch)
do (progn
(setf (gethash subclass ch) t)
(pc subclass)))))
(pc (find-class t)))
(length (loop for class being each hash-key of ch collect class)))
→ 659
Yes, a basic running SBCL has six hundred and fifty-nine classes built into it. It all works remarkably well.> one can argue that CLOS isn't what we normally describe as OOP
Probably not, but it's better.
> Both normally have a global namespace.
CLOS classes are themselves instances, identified by a symbol which lives in a package — i.e., within a namespace. E.g:
(defclass foo () ())
→ #<STANDARD-CLASS COMMON-LISP-USER::FOO>
(defclass swank::foo () ())
→ #<STANDARD-CLASS SWANK::FOO>
(make-instance 'foo)
→ #<FOO {1003ED8AA3}>
(make-instance 'swank::foo)
→ #<SWANK::FOO {1003EDEC03}>
Those are two different classes, both name FOO, but their names live in different packages.CLOS is built-in.
> CLOS isn't what we normally describe as OOP
There is no 'normal' description of OOP. Smalltalk, C++, Java, Self, Javascript, ... are all object-oriented programming languages and are widely different. If you look at the OOP literature you will find dozens of definitions of OOP.
CLOS has classes, instances, inheritance, dispatch, and other features of OOP.
> Both normally have a global namespace.
Namespaces for symbols in Common Lisp are called 'packages'.
OOP just means "functions are associated with data in a syntaxic construct of the language". Namespaces are irrelevant.
I have been searching for it for 15 min now, but last month or so on hn there was a article comparing programming languages and compilers. fpc performance was comparable to c.
Also a mvp production exe will be 2.5 MB, no stdlib/.net/qt needed.
This is a pro of Pascal then :)
I was also looking for the pros of Pascal in contrast to what we've come to expect of languages while skimming the article.
Something else to mention about lazarus is you can hot compile the ide too add in components, fix issues; While using lazarus. It takes a couple of minutes to recompile and there a fail safe cli method to restore. But rather amazing if you wonder how long it takes to compile visual studio professional or qt.
http://wiki.freepascal.org/IDE_Window:_Configure_Build_Lazar...
And a hello world Free Pascal EXE can be as small as 57KB:
$ dir fpc_hello.exe
07/26/2016 09:43 PM 57,402 fpc_hello.exe
Source and output:
$ type fpc_hello.pas
program hello_1;
{ uses ; }
var i: integer;
BEGIN for i := 1 to 10 do
begin
writeln(i:4, ' Hello from Free Pascal');
end;
END.$ fpc_hello
1 Hello from Free Pascal
2 Hello from Free Pascal
3 Hello from Free Pascal
4 Hello from Free Pascal
5 Hello from Free Pascal
6 Hello from Free Pascal
7 Hello from Free Pascal
8 Hello from Free Pascal
9 Hello from Free Pascal
10 Hello from Free Pascal
I also checked the size of similar programs in C and D. C was about 22KB, IIRC. D was something more, don't exactly remember, but not a lot more, probably.There are a few reasons that programs stop working and most of them are related to hardcoded directories that got perm. restrictions over the years.
> Oberon-inspired visibility markers
> Pascal-inspired type sections for leaner definitions
While Oberon isn't Pascal, they're both Wirth languages that share many commonalities.
{$DEFINE (:=ab}
{$DEFINE ):=ba}
...etc...
Code becomes pretty ridiculous: WriteLn ab ab a + b ba * c ba
If you define WriteLn, +, and * as other things too you can get horrific looking code. All keywords like program, if, then, and end can be redefined. I wrote a script that would take a regular source file and output a functionally identical file which looked like: {$DEFINE program:=a}
... many more defines ...
{$DEFINE [:=zd}
{$DEFINE ]:=ze}
a b c d e f g h (* ... the entire program on one obfuscated line *)I am actually thankful its not that well known. Pascal is still readable where as #defines in C libraries give me terrible headaches decoding.
LL(1) grammars are of great practical interest, as parsers for these grammars are easy to construct, and many computer languages are designed to be LL(1) for this reason.
Many computers just had something like Small-C available.
Fortunately, we were at least all ANSI.
A while back, I ended up following a link on HN and reading a bunch of old computer magazines. I came across an article by Peter Norton (in PC Magazine) from around 1986 or 87. In it, he discussed why C was rapidly displacing Pascal among DOS programmers.
Not that Unix didn't have an effect, but as DOS and then windows exploded in popularity in the 80s, C displacing Pascal there played a big role in Pascal's overall decline vs C.
edit: I think this is the article I'm thinking of:
https://books.google.ca/books?id=NZrPkWywRXgC&pg=PA75&lpg=PA...
On my area in Portugal, using C was mostly for university projects.
For anything else we were using Turbo Pascal and Assembly, with Clipper for business applications.
Actually many MS-DOS systems programming books had code listings in C, Pascal and Assembly.
Think of JavaScript and the browser.
Back in those days anything that wasn't the standard compilers sold by the OS vendor, meant spent a few extra thousands, so most people didn't.
On the PC world, Borland management trying to play with big boys, destroyed the indie culture around Turbo Pascal/Delphi and many moved into Java and .NET.
Pascal was my primary language from about 1980 to 1990, then I transitioned to C and from there to C++. I missed the whole Delphi train.
Anything more heavy required anyway Assembly, regardless of the high level language being used, C was no different here.
- Internet rapidly became increasingly ubiquitous. And it was largely aligned with the Unix philosophy of plaintext formats.
- Computers became fast enough and powerful enough to make interpreted languages (and VM-based languages) usable.
- Open source took off.
- This produced explosion of new, free scripting languages that were really good at working with strings, dynamic data structures, and plaintext formats.
- Visual Studio and Delphi both still cost thousands of dollars. Not something you could download and evaluate or try out. Not something you'd decide to learn on a whim. And not something with a big community of open-source developers sharing things for free. Delphi made the business decision to price out the small shops and individuals that were its customers in hopes of going after an enterprise market.
- Except in some areas (games, embedded, etc.) the industry shifted toward making things with open-source scripting languages or java for the business stuff. Those who remained in desktop and didn't switch to java switched to visual studio.
- The creator of Delphi left and went to Microsoft and created C# to compete with java.
The static languages were also somewhat slow to adapt to plaintext data formats. They typically used proprietary binary formats and those were easy to work with (they could basically directly load and dump to/from RAM/disk). But serializing and unserializing and marshaling and unmarshaling to/from plaintext formats was a pain. Eventually they got generics and templates and macros and things to make it less painful, but it's still nowhere near as simple as in the typical interpreted dynamic language. (I recently modified an old 80s-90s era C program to output JSON and did some work on getting a Pascal program to read it.)
Instead, one is forced to deliver the VM with the application or buy a third party AOT compiler like Excelsior JET, while depending on another language for implementation.
This made everyone that cared about writing native executables focus on C and C++, with the respective increase in unsafe code.
This is finally changing thanks to D, Go, Swift, Rust, but slowly.
So we have .NET Native on UWP, Xamarin on iOS and Android and IL2CPP on Unity.
Java now started a long road that will take several years until Project Metropolis will finally deliver some kind of results.
This whole thread has me imagining what it would be like if all the energy that went into Go/D/etc had gone into Free Pascal instead.
Imagine if Free Pascal had a swanky website, and an army of people blogging about this hip, powerful language, all the kids are getting on board, I heard Netflix are re-writing their routing layer in Object Pascal, have you seen the benchmarks for this awesome new non-blocking Pascal web server...
Its spirit leaves on in languages like Rust, Swift, Kotlin and similar.
It is easier to drive adoption to those languages, than try to convince younger devs to use Pascal, even with a swanky site.
I like your idea, though.
This to me is a critical piece of adopting a language, especially a non-mainstream one. Pascal has the benefit of being older but access to clean modern libraries is critical.
Pascal looks like an excellent option for building cross-platform desktop apps, given the excellent GUI libraries. But I doubt I'm sold enough on it for any web stuff, given the great other options. I'd likely use OCaml if I was going to gamble on a non-mainstream language.
But I don’t think that it is comparable to gem/npm or whatever yet...
A better question might be "why use Object Pascal over Language X"?
I could see a niche in cross-platform desktop development, assuming you didn't want to go the Electron route (and there's valid reasons for doing so). I've worked in Qt quite a bit in my desktop days and Qt/C++ is quite complex.
Object Pascal still has manual memory management though, IIRC, which is a large portion of that complexity.
Today, I write most things in C++ (or C# if I can).
It's deliberately built in the Delphi/Visual Basic tradition, and trying to carry those virtues onto the modern web.
They are quite good.
There are a shocking number of these systems still in use today.
I've come to have a grudging admiration for these clunky old things and a special respect for pascal in its many forms.
1st year -> pascal only
2nd year -> c only
3d year -> java only
That was a very nice learning curve for the core course of programming.
This is exactly how IT classes went in my high school.
Uni was really scattered though: Java, C++, C, Prolog, Python.
Later, in high school, I learned Delphi and we did Java at Monash University.
I would have picked Ruby if it could compiled into a single executable file, and if the Dev environment actually work on Windows.
P.S: It does work on Windows, but not as simple and easy as it should be. Compared to every other alternative on the market.
What makes it easier?
Distributing an executable from C seems easy. And using package managers from others also seems easy.
1. Imperative programming with Pascal
2. Object-oriented programming with Java
3. Functional and logic programming with Prolog and Scheme
4. Advanced functional programming with ML
All the software engineering & project management courses basically assumed Java-brand OOP and related practices, though.
Before that I was enrolled at a different university that did three things at the same time in no obvious order:
A. HTML/CSS/JavaScript and PHP for web development (yes, like in the 2000 era)
B. Java for linguistics programming and software engineering (but the professor wouldn't shut up about how much he likes Oberon-2)
C. C++ for interactive graphics programming (and maybe other things to)
Basically all the advanced "computer sciencey" stuff was in C++, all the more "software engineeringy" stuff was in Java and everybody pretended web development wasn't really a thing.
If you are coming from C, it should be like moving from Python to Ruby, or Java to C# or viceversa... same paradigms for the most part.
>This is maybe the fact, that most developers are annoyed about: the absence of braces and the very verbose syntax of the language. As an example, instead of opening and closing braces, Pascal uses the begin and end keywords for blocks. The if keyword is complemented by the word then. As you can see, the whole syntax is readable like plain English. If you start to cry now, you should consider one important question by yourself: What is more important? The ability to have a short syntax to write code fast or the possibility to read and understand code that was written by other developers or even by you a year ago? I’m in favour of the second fact and I really enjoy that verboseness.
You don't make code more readable by adding more noise.
BEGIN and END is just plain noise
BEGIN And how exactly does this make code "readable like plain English?" END
You get used to the syntax, and after a while it becomes invisible.
What's the advantage of using Pascal over C# or Java? Is it that Pascal outputs true compiled programs instead of requiring a VM?
Another advantadge is that it compiles very fast (several orders of magnitude faster than C# (or C++)), so it's convenient.
But I don't think there are any notable borrowings from core Pascal.
Although i think Free Pascal does have a Mac Pascal mode so that it can understand Apple's Object Pascal dialect.
As for Pascal vs Object Pascal, Procedural vs OOP, Think C vs C++(not that I'm saying c++ is better).
"Borland used the name Object Pascal for the programming language in the first versions of Delphi, but later renamed it to the Delphi programming language. However, compilers that claim to be compatible with Object Pascal are often trying to be compatible with Delphi source code.[citation needed] Because Delphi is trademarked, compatible compilers continued using the name Object Pascal"
You're still right that Object Pascal can encompass more than just Delphi.
When I got to university they (the university, not the high school, no idea about them) dropped it from the curriculum so my Pascal skill makes me quite unique in that sense.
I only used it once or so during university to troll one doctor leading a class, an old homework grading system still had Pascal available in it in addition to C and C++ so I submitted a Pascal program. In a twist of irony the next class after that assignment was led by another person, a really smart professor who usually teaches in Warsaw who also happened to be quite a good sport about jokes and such, who quickly sarcastically remarked to my Pascal program: we've got a connaisseur in here.
And this whole joke was actually in response to story the person usually leading that class told, about how once during a competitive coding competition (allowing C, C++ and Pascal) where everyone was using C or C++ he was first to submit a correct program and it was in Pascal to which the live judges commented that Pascal is making a grand return, since even back then it was on its way out.
Recently I picked it up again when I needed to do something quite graphical for statistics class on a short notice that would be dealing with graphs and I didn't want to fight Qt, GTK+, HTML5 or whatever into submission and having recently discovered Lazarus I knew it can do it. I quickly whipped up the program, the graphing components were great with API and all but were poorly documented (or not at all). Sadly there were no funny comments from the doctor on that one.
Part of using Pascal for anything at all or even knowing it is actually the funny comments and reactions of others. Some people seem to think Pascal is properly dead, as in - no longer usable, no longer worked on, no longer coded in, at all. Like COBOL or something but with no 'old bank software' and such to save it. When looking for a job I actually even forgot to put Pascal on my CV as being one of my 'very weak' skills but I imagine it didn't hurt my chances... I even share the first name with Blaise Pascal (the French mathematician the language was named for) so that makes my use of Pascal even more appropriate and allows for even more jokes.
After that I also did few UVA[0] tasks but sadly Pascal seems to be broken for many tasks so I gave up (I get an error saying 'mv failed: program.pas and program.pas are the same file').
Later, to not waste and forget what I relearned for the graph program homework and since GUI in Lazarus is so easy to do, I also (shameless plug) wrote a notes program[1] for myself and it was a breeze thanks to Lazarus and the LCL components. Now I use that program daily for my various notes, todos, etc.
However I can see how one would prefer Object Pascal over C++.
Any Pascal compiler for production code supported some kind of modules/units.