I have seen great pascal source.
A large part that is was great was due to the great compiler,
I do not consider FREEPASCAL great for many reasons.
The source is a mess.
The compiler does not prove the source code is correct,
There are many, many more.
A good foundation keeps paying back the higher or larger you get.
The better a compiler gets, the better the compiler can get.
If you keep fixing the low level problem areas in the compiler, then all programs using that compiler gain.
Embedded and hardware only need a few extensions for pascal to be great.
Same it true for system programming & threads. As a programmer you just need access to some low level details.
Oberon (programming language) actually has fewer syntax rules then Pascal and yet is more powerful.
So the only reason to use P4 is so you have a compiler that can build the better compiler.
The code generator for the pascal I used back then generated very good 68000 code. An assembly language programmer would be hard pressed to do better it was that good.
When HP used it internally and had the source, little reason existed not to make it better.
Think of the foundation. Code generation is just picking the best of many ways the same code could be written.
One place you want speed, another space or something else.
In addition when you just had to have assembly for some reason very little assembly had to be written.
The big problem for higher level languages is the very poor text editor. As a programmer you need to see many areas of code at same time. The compiler knows how to find the areas but the editor is often guessing if doing that much.
Look at some simple facts.
A compiler can create a better compiler.
Source syntax is just one part of language.
Want to get how many DOT Net compilers can have many languages as source? But this also highlights a problem. If the compiler is not written in the same language it might not gain as foundation improves.
Part of the foundation is the base types.
Part of the foundation is the many ways arrays can be created.
Then you have simple concepts that need added syntax.
Interrupt, Event, ERROR, Threads, Programs, Modules, Classes. Operators.
It you think of foundation these are all just versions of a C function call with a more readable name. And due to that name can have additional rules checking the code.
For the record, C11 introduces thread support.
Shows sad state of hacks and patches being done to C.
This existed in the pascal I used in the 1980's.