[Oberon] Porting S3 / V4 Oberon (was: File transfer)
andreas_pirklbauer at yahoo.com
Sun Jan 3 03:59:16 CET 2021
> It is ironic that some of us discuss the past achievements with nostalgia,
> while the others are breaking past achievements. In my view both S3
> and V4 are monumental programming achievements. No less monumental
> than Ceres and the original system. Why are we thinking of preserving
> the latter, while discarding the former? I see no sense whatsoever.
We have exchanged roughly similar messages on this in the past,
both in the forum and privately. But to say it again:
When adding back type-bound procedures to the RISC5 Oberon-07
compiler, the ability to port either e.g. Linz V4 to RISC5 was NOT (!) a
goal at all (!). You seem to think this *is* or, perhaps, even “should be*
a worthwhile goal. I accept that this may well be the case (for you), but
it certainly wasn’t a goal when extending the Oberon-07 compiler with
type-bound procedures, etc. So there is no such thing as a “surprise”
that it is not not used for efforts like "porting V4" or for "bringing other
Oberon-2 legacy code to RISC5". It just wasn’t a goal. And never
will be (for me at least). But implementing a strict superset
of Oberon-07 was.. this one was actually non-trivial.
Adding back EXIT, RETURN, LOOP, etc, to the modified compiler
would certainly be doable. But if someone wants to embark on
such an effort, e.g. to "make porting V4 to RISC5" easier, I would
only suggest that "that someone” also clearly separates the two
variants of the language. I would not mix and match!! Or - as
Chris has said - I would not try to eat anchovies and chocolate
at the same time!! They just’s don’t mix well!
Using a compiler switch to select one or (!) the other variant or
at least issuing some warning messages, as you had suggested
in the past, would be a way to do it. But one would really need a
clear motivation for doing it all this work. If "porting V4" is one for
you or that "someone else", you or that someone else can do it.
But be warned: Even though it seams “easy” or at least “doable”
to add back things like EXIT, RETURN, LOOP, etc, one can still
(sorry again, Chris, for borrowing your expression) "die a death
by a thousand cuts”.
.. just too many small, subtle differences (INTEGER/REAL, standard
procedures, etc etc) and just too much headache for all those little
things that can get still in the way! Even when adding back type-
bound procedures, I bumped into quite a few such hurdles. You
might think that it’s straightforward, but it wasn’t, at least not in
a single-pass compiler (need for fixups for method tables, etc).
More information about the Oberon