> Oberon-2 had runtime-checking of pointers: It could check the validity of a pointer and immediately panic rather than return garbage or crash with a page fault. Similarly with arrays.
Ah, but this was a property of any sane systems programming language with automatic memory management.
> With the exception of Oberon-2's ....
How well do you know Active Oberon, Zonnon and Component Pascal?
They extend Oberon(-2) with abstract classes, generics, tasks (active objects), type extensions, method definition signatures.
Also many consider his work as influence in Ada and Modula-2 successors, whose type systems are not very far from C++ ones.
Incidentally he became disillusioned with these language variants and went with a minimalist view (Oberon-07) that makes even Go look like a complex type system.
Sure, Active Oberon is pretty advanced, and Modula-3 had all sorts of things, including generics — but to my knowledge Wirth was not directly in those languages (or with Zonnon or Component Pascal), and he was unhappy with their complexity. (He apparently prefers the entire language's grammar to fit on a single screen.)
Ah, but this was a property of any sane systems programming language with automatic memory management.
> With the exception of Oberon-2's ....
How well do you know Active Oberon, Zonnon and Component Pascal?
They extend Oberon(-2) with abstract classes, generics, tasks (active objects), type extensions, method definition signatures.
Also many consider his work as influence in Ada and Modula-2 successors, whose type systems are not very far from C++ ones.
Incidentally he became disillusioned with these language variants and went with a minimalist view (Oberon-07) that makes even Go look like a complex type system.