The language was designed by an interaction-based group and then was described in a book. The biggest problem with that is the book just described the language. It never said anything about the programming environment or its tools. In fact, its more of a reference on LISP than a book on OOP because its just an abstract of the LISP language and how it works.

You have to define in advance what language features are to be used. One feature (and the one I picked for Oberon) is to define non-dynamic types like numbers or strings (same as base-64 in Python), which is the same as describing a compilation unit. Then the compiler will detect you declare types in the code, use the pre-declarations in other code units, and will use the correct type in the final code. For a language like Python, where you use strings and such, its not very useful. But for a language like Oberon, where the compiler would use a base-64 string when there was an integer in the code, its a killer feature. It makes for a very clean language and its one of the things I love about Oberon. The other thing I really like about it is the use of the REPL for interactive programming. I could program with Oberon in any environment and never have to write a single file. The compiler would generate a file that could run on real hardware. The Oberon website has some great examples.

For Python, the games example is an absurdity because Python programs by default are compiled into bytecode, which are then interpreted at runtime. You have to define the bytecode with the keyword, then it becomes part of the language specification.

And like many other well designed things that have happened in the last 100 odd years it only works properly when properly implemented. And that happens to be what we do with other things. So when we say its a CPU architecture, we mean the whole thing from bookkeeper up to the point where you need a machine language for performance.
I could say: you try it, and I probably wont because its a PITA to implement and maintain, while your mostly-working, but wont reach your goals, system is so much better, etc, etc, but I’m short on time and I need help. Needing to track your hashtable makes it difficult for the programmer to manage in a debugger like Smalltalk, but its a choice. You can give up the self-documenting aspect of the language for the PITA.
Oberon is a language that doesnt write itself, It needs people. To build anything, the first step is to learn it. For that, you need more than a compiler and tools. The compiler is a piece of code, like any other. Its lack of generics makes it useless for larger scale projects (if you have 16 units all with custom parts, you have to implement those also as unique functions. If you had generics, you could write one generic piece, and use it for each unit). The other thing is that its very poor for standard library usage, the home is 6 boring.o files. So, someone would have to write about 150 lines of code to get a more functional, but basic home needs. Yours is your home, you get to decide what you do with it.
Its in many ways analogous to the object/class-based data models that C++ and Java offer. Its a fully object-oriented language, with persistence, distributed communication and every feature you could want. What I love about the book is all the advanced tools. In fact, its feature set is almost more than what Ive covered in the Python book (which is a long book in itself). And thats one reason I think Python is more complex than the Oberon report. Wirths Oberon report is just too \”this language is too simple for the real world\”, it does what it was designed to do and thats it. With the advanced tools, python can do almost anything.

Leave a Reply