Notes
Slide Show
Outline
1
Make it as simple as possible, but not simpler:
The Programming Language Oberon
  • Niklaus Wirth
  • Oberon Day
  • CERN, 10.3.2004
2
Part 1: Historical perspective
3
Design of Pascal, 1968-70
  • Algol-like phrase structure (syntax)
  • Generality of expressions
  • Conditions and the type Boolean
  • Procedures and functions, recursion
  • The concept of locality (block structure)
  • Data structures: Array, Record, Set, File, Pointer
4
Pascal designed with three primary goals:
- A tool for decent teaching
- A tool for designing system software
    (compilers, operating systems)
- Compactness and efficiency
5
Design of Modula-2  1977-1979
  • Pascal as basis
  • Additional standard data types
  • Modules, interfaces, information hiding, separate compilation
  • Elements for parallel programming
6
 
7
 
8
Design of Oberon   1986-1988
  • Modula-2 as basis
  • Discarding several inessential features
  • Adding type extensibility  (inheritance)
  • Simplify syntax
9
Complexity of syntax of programming languages
10
Part 2: The benefits of simplicity, or the curse of complexity
  • Economy of design
  • Simpler to define and document
  • Easier to learn and understand
  • Less difficult to implement, more efficient compilation
  • Fewer misunderstandings, more efficient programs
  • Disciplined programming, fewer mistakes
11
Conclusions and questions
  • All together increases efficiency of program development, program maintenance, and program execution.
  • The more complex the task, the more perspicuous and reliable must be the tools
  • If problem is complex, do not add further, home-made complexity through tools
  • Can a simple language be powerful?
  • Can flexibility be achieved without sacrificing efficiency (or vice versa)?
12
Part 3: Oberon for embedded systems
  • System engineers want to have close control over program and code
  • No hidden mechanisms tolerated
  • Oberon compiler generates “straight” code
  • Predictable behavior, no surprises
  • Ideal for light-weight systems with or without underlying “operating system”
  • Modules with separate compilation
13
"Oberon allows to program device..."
  • Oberon allows to program device drivers through its “low-level features”, which are encapsulated within specific modules.
  • Directs access to device interface registers.
  • No overhead through crossing of module boundaries.
  • Watertight type checking, also across module boundaries, at compile time! Very fast loading and linking.
  • Fast, dynamic loading of modules upon demand at run-time.
  • Compiler was designed/ported for Strong-ARM within a month.
14
Simplicity and Complexity
  • Ñàìûé âåðíûé ïðèçíàê èñòèíû -- ýòî ïðîñòîòà è ÿñíîñòü. Ëîæü âñåãäà áûâàåò ñëîæíà, âû÷óðíà è ìíîãîñëîâíà.
  • Ëåâ Íèêîëàåâè÷ Òîëñòîé


  • The most reliable sign of truth is simplicity and clarity. Lie is invariably complicated, gaudy and verbose.