> Hash maps don't need to be built-ins, as proven in many languages.
Except Oberon doesn't have generics.
From the very beginning, Go included very practical "magic" generic functions: append, len, cap, delete. Along with slices, they allowed Go to flourish without generics.
Oberon only has LENGTH.
> re-use Oberon-2 (yet another version you ignored) method syntax
Here's Go: "func (c Type) DoSomething(hello, world string) (int, error)". Here's Oberon: "PROCEDURE (c: Type) DoSomething(hello, world: STRING): INTEGER;" (error handling is for wimps).
It is similar, but not the same. Go also has structural polymorphism, which Oberon lacks.
> Screaming keywords, only an issue when someone doesn't use an editor with automatic capitalization, only an issue for Notepad-like users.
IT LOOKS UGLY, AND IT MATTERS A LOT, WHEN YOU MOSTLY READ THE CODE.
So yep, I maintain that Oberon is a shitty language. It might be useful as a starting point for new language design, but that's it.
It has never been practical, and on its own it only ever "succeeded" in the ETH where professors just forced students to use it.