[Oberon] Easter eggs in Oberon

August Karlstrom fusionfile at gmail.com
Wed Apr 15 18:59:25 CEST 2020

On 2020-04-13 22:37, Joerg wrote:
> Why is there an INC if you have +

Good question. Though it's nice not having to read the same identifier 
twice; compare

	INC(aRatherLongVariableName, 37)


	aRatherLongVariableName := aRatherLongVariableName + 37

> Why is there an ASR if there is a DIV
> Why is there an LSL if there is a *

Because shift is faster than division and multiplication, and doesn't 
require compiler optimizations. This is in accordance with Wirth's idea 
of separating the task of compilation so that things which are easy for 
the programmer to do is done by the programmer and things which are easy 
for the compiler to do is done by the compiler.

> Why do you have to change THREE things when going from INTEGER to REAL
>     i := i DIV 5;
>     r := FLT(i) / 5.0
It makes

	* the language simpler
	* the compiler simpler
	* it easier to reason about the result without having to remember 
implicit conversion rules.

The obvious drawback of having to use FLT and FLOOR is that it makes 
expressions harder to read.

-- August

More information about the Oberon mailing list