[Oberon] Easter eggs in Oberon
chris at cfbsoftware.com
Mon Apr 13 23:59:18 CEST 2020
> -----Original Message-----
> From: Joerg [mailto:joerg.straube at iaeth.ch]
> Sent: Tuesday, 14 April 2020 6:08 AM
> To: chris at cfbsoftware.com; ETH Oberon and related systems
> Subject: Re: [Oberon] Easter eggs in Oberon
> Why is there an INC if you have +
This is now a questionable feature. One possible justification I can think of is for backwards compatibility. It was intended to be a hint for the compiler to generate more efficient code for the special case where a and b are the same variable in the statement a := b + 1
Similar, but not equivalent to, the use of i++ instead of i = i + 1 in other languages.
> Why is there an ASR if there is a DIV
The use of ASR helps the programmer to indicate to the reader that the data that is being operated on represents a bit pattern with a specific / peculiar meaning rather than a numeric quantity where the concept of remainder / modulus has to be defined.
> Why is there an LSL if there is a *
The use of LSL helps the programmer to indicate to the reader that the data that is being operated on represents a bit pattern with a specific / peculiar meaning rather than a numeric quantity where the concept of sign is relevant.
> Why do you have to change THREE things when going from INTEGER to REAL
> i := i DIV 5;
> r := FLT(i) / 5.0
To help inexperienced / incompetent programmers from shooting themselves in the foot.
> J rg
> > Am 13.04.2020 um 22:25 schrieb Chris Burrows <chris at cfbsoftware.com>:
> > ?Nobody forbids you state that equivalence but as it is not stated in the
> report it is an assumption you have made. Such an equivalence would make no
> practical sense to me. Why would it be necessary to have a separate DIV
> operator if it were true?
> >> -----Original Message-----
> >> From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of
> >> Joerg
> >> Sent: Tuesday, 14 April 2020 4:50 AM
> >> To: ETH Oberon and related systems
> >> Subject: Re: [Oberon] Easter eggs in Oberon
> >> August
> >> Where is defined what the operator / shall do?
> >> I mean who does forbid me to state / is equal to DIV if both operands
> >> are INTEGER.
> >> br
> >> J rg
> > --
> > Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> > systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
More information about the Oberon