Hi, (eek, this got longer than I wanted)
On 7/30/10, Frank Heckenbach ih8mj@fjf.gnu.de wrote:
Rugxulo wrote:
relying on semi-outdated GCC versions (so?),
... so much effort is required which there's noone there to do. :-(
In other words, bugs that you yourself can't fix? I don't have any huge complaints with GCC 3.4.4, that's why I'm wondering why it deathly matters to have latest and greatest GCC support (besides the obligatory "it would be nice", e.g. Atom support or plugins in 4.5.0).
big runtimes and thus big .EXEs (so?),
Not a problem for most cases, sometimes a problem for embedded systems etc. and for people with a 1980s mindset ("oh shock, a few megabytes executable"). ;-)
It's more of when you write a very simple tool that takes 300 KiB. It just feels wrong, esp. from an "assembly" mindset or if you're spoiled by smartlinkers in other Pascal compilers. I'll admit, Frank, to be frank, ;-) in real life it doesn't matter in 99% of cases, but I do think libgpc.a could be modularized a bit better. (No, I haven't looked closely yet, my bad! And BTW, I strongly suspect GNU ld's --gc-sections doesn't work with COFF, blech.) I mean, no offense, but when a combined DOS 8086 (TP55) + Win32 .EXE (VP21) takes 24 KiB uncompressed .... ;-)
I don't want to get too philosophical, but I think a reason for its decline was that in several ways it just was too strict. E.g., while I dislike "goto" as much as Dijkstra did, I'm not so much opposed to "Exit" (which some dismiss as a disguised goto, and ISO Pascal doesn't have).
"Exit" as in "break" out of loop? I don't even think TP had it until v6 or (more likely) v7. Also note that some languages (Oberon, Java) don't support goto at all !! And FPC only handles local gotos.
(In fact, it might have been better to leave I/O completely out of the language, like C did, and let library authors develop it
Didn't Modula-2 do that, much to many people's chagrin??
Same with the lack of an official, and therefore standardized way, to interface with foreign-language libraries, a common necessity in real-world programs. (Sure, you can reinvent every wheel, i.e. reimplement every library in Pascal, but that's not productive.)
Ada has Interface (or whatever it's called). Doesn't matter anyways as there are so many competing formats (ELF, COFF, Mach-o) and linkers that work in varying degrees and different ABIs. (Agner's ObjConv potentially helps here, but I've never heavily used it.)
So that's perhaps why BP was popular under Dos, because it was one fixed dialect (so diverging extensions, though massively present, and their long-time consequences, were not known to the majority of programmers),
Except it also extended itself several times! So code that works for TP55 (objects, units) won't work in TP3, nor code in TP6 (inline asm). Plus bugs and heavy 16-bitisms. Doesn't mean lots of good stuff wasn't written in TP/BP (e.g. Chasm: The Rift), but most of that old code is pretty unmaintainable without the exact same compiler version (ahem, TPU incompatibilities).
I/O was extended to be at least suitable for Dos (though it maps less well to other systems which were ignored by most Dos programmers)
Since TP didn't run on anything else (CP/M dropped after v3 and only two TPW releases), that's no surprise, esp. since they never fully supported ISO 7185 or 10206. It's hard to be portable when you ignore standards. And yet most compilers nowadays (even on "modern" OSes, heh) try to emulate BP-style, oddly enough.
and supported modules (units) which allowed some other needed facilities (such as CRT) to be supplied. But all of this was too short-sighted:
Everything in computers is short-sighted. We're constantly being bit by it.
We now have a mess of dialects;
No worse than all those silly Romance languages. ;-)
Dos-style I/O is too limited on modern systems; even CRT (one of the least bad designed BP units IMHO) wasn't as lasting as its C roughly-counterpart curses).
C didn't have curses built-in anyways. In fact, it left a lot out, hence POSIX (which I guess has its own dialects, e.g. 2008). Nobody bothers with pure ANSI C anymore (sadly), which is more painful when using non-GCC compilers (like OpenWatcom).
So it's no surprise that BP's popularity sharply declines with Dos's.
Don't forget that they "dropped" DOS support! BP7 was the last one (1992?). That's the whole (initial) reason for FPC's existence! Even Delphi 1 (Win3x, 1995) was the only 16-bit Windows version. I don't know if their latest (14?) is 64-bit capable yet.
And under Windows, I'm not an expert, but ISTM that Delphi's decline is largely due to MS's pushing their own languages -- which is, of course, always a natural risk for anyone targeting Windows exclusively).
Borland spun off Code Gear a few years ago, and that was later bought by (current owner) Embarcadero (who, uncoincidentally, killed the "free" Turbo Explorer 2006 line, which C++ version never installed correctly for me under Vista anyways [.NET? *spit*], MarcoV says Turbo Delphi worked though).
Targeting Windows exclusively? Ick, yeah, people do that. Not that huge a deal (big install base) but kinda a hassle (too many .NET frameworks, 64-bit borg assimilation looming, lots of bugs). People love their C#, though.
I agree that Windows isn't the best platform to target. Heck, I know I'm on unsympathetic ears here, but I often think even Linux is too much of a moving target sometimes. (Don't get me started on Mac OS X, they deprecate everything too fast. *shudder*)
the current GPC users seem to be rather diverse (WRT dialects, platforms and features used etc.), which also doesn't bode well for a new project.
Like I said, your favorite dialect seems to be ISO 10206. (I saw you praising it in some old mail in list archive.) So you should probably just use that as a testbed for your C++ idea. It seems to have a fair bit in common with a few TP extensions, even, and (I think) it's a strict superset of ISO 7185 anyways. So everybody should be happy (famous last words)! ;-)
Don't get me wrong: I don't regret the time I spent with GPC, even if it was to die now.
Even DOS (FreeDOS), BeOS (Haiku), and OS/2 (eCS) aren't dead yet! Keep hope alive! ;-)
It was an interesting experience, learning a lot not only about the various Pascal dialects, but also about compiler construction in general (which has benefitted me in other projects since then), and since I did professional work with it, it was even paid. :-) And while it was at it, it was only natural to write my hobby projects in it as well. But as with many things, their time comes and it goes, and it may be its time has gone now and maintaining a compiler only for my hobby projects is just not efficient.
Yeah, computers can suck a lot of time out of you. Oddly enough, we spend so much time just to save more time later. But yeah, it's fun, so we (or at least I) don't mind much. ;-)