[Oberon] Block objects for Oberon

rochus.keller at bluewin.ch rochus.keller at bluewin.ch
Thu Apr 9 00:18:35 CEST 2020

@ Richard Hable

I answered primarily because Prof. Mössenböck refers to Smalltalk as a reference for (dynamic) blocks in his paper. Unfortunately, against better knowledge, Smalltalk is still regarded as the source of all wisdom when it comes to object orientation. This ignores the fact that Kay introduced the term, but meant something different than what we understand by object orientation today. Various ideas that have been implemented in Smalltalk over the years had been published long before by the Simula authors and others. 
In the application mentioned in the paper, the blocks are actually closures, not just (static) statement sequences, and indeed these already existed in Lisp.


On Wed Apr 8 20:01:36 CEST 2020 Richard Hable wrote:

The idea of passing blocks of statements as parameters is, of course,
not new at all. The paper actually cites Wirth’s rather obscure “A
Generalization of Algol” proposal from 1963 as an ancestor:


And probably LISP had such a feature even earlier.

However, the proposed solution is a lot simpler than that: it works
without dynamic memory allocation, higher-order functions, captured
variables etc.

The passed blocks are executed in the frame of the calling procedure,
and share their variables with the iterator procedure via
call-by-reference (“var”) parameters. Hardly any extensions are needed
to the programming language and compiler.


More information about the Oberon mailing list