3 ms·
One interesting aspect of Wirth's work, which is illustrated by Oberon, is that he always iterated — from Pascal (itself heavily influenced by ALGOL) to Modula,
by lobster_johnson 11y ago
One interesting aspect of Wirth's work, which is illustrated by Oberon, is that he always iterated — from Pascal (itself heavily influenced by ALGOL) to Modula, to Modula-2, to Oberon, then finally Oberon 02. Apple's ObjectPascal is in there somewhere. For example, as I understand it, Oberon was basically bootstrapped with Modula-2.
They're all Pascal-like, and therefore ALGOL-like, sharing a lot of similarities; not just syntax, but also concepts such as ranged types, range-bound arrays, enums, record syntax, etc. You can know Pascal and be able to pick up Modula or Oberon very quickly, since so many keywords and concepts are identical. At the same time, each iteration tried to simplify the language (the BNF for Oberon has only 33 grammar rules).
- nickpsecurity 11y agoThat's a good point. A strength of his improvements in terms of learning curve and re-using prior work. He was always good at that part. However, I like best how he designed the assembly languages (P-code, M-code) and high-level languages (Pascal, Modula-2) to be consistent with one another. Some called it a hack but I think it's brilliant. Imagine how easy it would be to learn inline assembler if its workings matched the language behavior already described to you. It's like explaining stacks, frames, goto and math in C was about all it took to know x86 programming. It would make both ends more effective. He did it for ease of implementation and compilation. Still need that for formal verification of whole systems, securing whole systems, people that like to experiment with them, and so on. So, his principle stands the test of time.