Awesome Pascal – A curated list of Delphi, FreePascal, and Pascal shiny things
github.com
github.com
I also have fond memories of BBS door games and software, a large portion of which was built with Pascal.
I digress: but it's nice to reminisce about those old days.
And even better with Delphi that additionally had better rapid UI creation possibilities than Visual Basic, and on top of that, differently than Visual Basic, produced a self containing executable, not depending on anything external.
This is actually a (minor) issue i have with Lazarus - the executable files do not depend on anything, but they are too large (~2MB minimum nowadays, if you remove all debug info, etc) so if i want to create several "small" utilities that focus on one thing instead of a multi-tool, i waste a lot of space (and most importantly nowadays, bandwidth).
At least with Delphi you can compile the executable with the runtime library as a separate file to be shared among the programs (my guess is that they wanted to do something the VB shared runtime, but it didn't seem to catch on as nobody used it like that).
Now that you mention and I think about it, as VB was compiled to the p-code and depended on the big common runtime which executed it, it can be seen as one Windows-specific spiritual precursor of... Java.
Both Microsoft's P-Code and Java were really inspired by UCSD Pascal which only emitted P-Code to be executed by a runtime they implemented quickly in a lot of systems (including the original IBM PC).
Yes, and I've actually experimented with UCSD Pascal on a 8-bit machine (Apple II). Turbo Pascal was, of course, much faster on it (using Z-80 card).
The result of assigning an integer > 255 to a byte is unspecified; it's the same with numeric overflow in arithmetic operations.
Yes, the result is unspecified, that is what i'm talking about: it doesn't specify what it happens, meaning that the implementations will have to figure that out themselves, potentially in an incompatible manner (although in general implementations do try to be compatible with each other, but this is by communicating among themselves and trying to fill the holes in the Oberon-07 spec).
Similar question is also about pointers, what happens if you try to use p^ when p is nil? Do you try to access whatever address nil represents? Do you abort?
C has the notion of undefined behavior and it is explicitly mentioned, but Oberon-07 doesn't mention this at all meaning that implementations need to make those decisions.
1. restrict the freedom of compiler writers. On very small systems, for instance, array bound checking may not be implemented,
2. make programmer rely on non-obvious behaviour/results which makes programs harder to understand and maintain,
3. make the language specification more complicated.
On the other hand, I see that Delphi usenet forums have been closed for a year... long time I had not checked.
In the end, it really just depends. Right now electron is the closest we've had to a cross-platform application base with a UI that is easily styled and a single codebase for write once, run anywhere that we've had. Most of the cross-platform UI tooling that's come before has kind of sucked. Even getting build pipelines for multiple platforms (even just Linux, Windows and Mac) has been pretty painful. Electron bridges a lot of gaps at the expense of a more bloated baseline.
I think things will get interesting and we'll see some new/old paradigms show up.
If it can be done just with HTML 5, CSS, JavaScript, then its place is the browser.
Language-wise, UI design-time lets you execute code such as db queries while designing your screens. It is almost completely orthogonal. It has no GC which makes for a faster runtime and writing free in finally is not something that is easy to forget (remember orthogonal) and immediately jumps out as an error when skimming code. Data modules enforce a separation of concerns, visually seeing component properties enables another form of remembering setup parameters.
Tooling-wise, you have runtime stack traces thanks to jedi library. It can show memory leaks on shutdown by enabling a flag. You have package manager baked into the UI, compiler is blazingly fast and generates fast executables.
With all this, for example, you could concoct a db editor easily in a few hours.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Compiler_Ver...
There no reason not to use Delphi for this project - it compiles really fast and natively, it allows me to make nice UI fast without limits, I've got a lot of reusable code.
- very fast compile times
- great backwards compatibility
- non programmers can create simple programs
What does that mean? You can be a non programmer and make simple programs in most general purpose programming languages.
Are you talking about the VCL library? In that case, there are many other languages that include the same like C# for example.
How good was Delphi at hiding MS-DOS quirks? I know C from that platform tended to be nonstandard with near and far pointers to accommodate memory segmentation, but was Delphi any better?
Which meant that as long as you didn't have to call C functions you just had to know and write that "it's a pointer" and nothing more.
Though, iirc, Delphi is really expensive as a product.