Rochus 13 hours ago

Interesting paper, but the assumptions about C++ were no longer valid in 1998. Namespaces are well suited to structure large projects. It was also possible to do decent memory management even in 1998, as e.g. demonstrated by Qt. On the other hand, array bounds checking and garbage collection have significant performance costs. I implemented several compilers for Oberon and its dialects and also did large projects in C++, and I think that the paper is too optimistic when claiming that Oberon can be used instead of C++. Oberon is lacking significant features for this purpose, e.g. generics or RAII. On the other hand, the systems implemented in Oberon depend on several "backdoors" of the language, e.g. memory access and pointer arithmetics via SYSTEM module, with no type checker support. All in all, C++ undoubtedly overdoes it with the number of features, and newer versions don't make it any better; the syntax of C++ is also not exactly a masterpiece of design; (original) Oberon goes too far in the other direction. The challenge is obviously to find the right balance.