3 ms·
I've never liked Active Oberon, because it doesn't feel like a Wirthian language anymore. It tries to be simple by adding just one concept, the "object", but it
by i_don_t_know 10y ago
I've never liked Active Oberon, because it doesn't feel like a Wirthian language anymore. It tries to be simple by adding just one concept, the "object", but it's a huge and complicated concept that conflates data, algorithm, concurrency, and synchronization. It's much more complicated than anything else in the language and it duplicates parts of the record and procedure abstractions.
I think the designers of golang followed a more Wirthian approach with goroutines and channels, because those are orthogonal extensions to the rest of the language, and they each have a single well-defined purpose.
- pjmlp 10y agoActually it adds more than just that and that is not really what I find more interesting on it. Rather the support for interfaces, annotations and most importantly untraced references. If you read the papers related to Oberon design, specially EthOS, not having support for untraced references was considered a pain point. It is also something that Cedar, Modula-2+ and Modula-3 also supported. As for the "object" and the duplication between records and objects, I agree with you.
- i_don_t_know 10y agoI wasn't aware of the other improvements. Thanks! I agree that interfaces and untraced pointers / resources are good and useful. I haven't quite decided yet on annotations. I'm assuming you mean things like {ACTIVE} and {EXCLUSIVE}? {EXCLUSIVE} is probably nice to have because you can't forget to release the lock. I'm less convinced of {ACTIVE}.
- pjmlp 10y agoThere were other ones like {CODE} for inline assembly, if I remmeber correctly. In any case feel free to browse the code or play with Blue OS. https://github.com/Ignat99/a2 https://github.com/Ignat99/a2 http://oberoncore.ru/_media/wiki/lang/reali_p.active_oberon_language_report.en.pdf http://oberoncore.ru/_media/wiki/lang/reali_p.active_oberon_...