Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Programming in Oberon
Reiser M., Wirth N., ACM Press, New York, NY, 1992. Type: Book (9780201565430)
Date Reviewed: Mar 1 1993

Oberon is a successor to Modula-2, itself a successor to the well-known language Pascal. Oberon differs from  Modula-2  in two ways: some gratuitous complexities are removed, and it is extended for object-oriented programming.

Oberon is not currently a popular language, and a few words about the language itself may be appropriate. The language is small, extending Modula-2 by single inheritance, polymorphic message dispatch, and runtime type identification. There are minor syntactic differences, and array variables with flexible bounds are a welcome addition. The language environment supports garbage collection. No provision is made for generic types or exception handling. The part of the syntax that is inherited from Modula-2 is clean, but some new features suffer from the write-only syndrome. For example, exported features are denoted by an asterisk, and inheritance is denoted by parentheses. Explicit keywords EXPORT and INHERIT would have been a less surprising choice, well within the spirit of Modula-2, which favors legibility over the convenience of the keyboard operator. Using polymorphic variables requires an uncomfortable degree of understanding of pointers: only pointers and VAR procedure arguments are polymorphic. This forces the programmer to use VAR both for arguments that are changed in the body of the procedure and for polymorphic arguments.

In my view, Oberon is not as compelling a language as Pascal was at its inception. Eiffel has a clean design and an excellent integration of advanced features. If low-cost implementations were available on the usual teaching platforms, it would make a better language for instruction. On the other hand, C++, with all its faults, is a capable and efficient language for systems programming.

This book is an introduction to all the features of Oberon. Part 1 covers identifiers, built-in types, declarations, expressions, assignments, flow control structures, procedures, modules, and input/output. Part 2 treats data structuring: arrays, records, pointers, and encapsulation. Part 3 covers the object-oriented features. A terse language report, with a formal summary of the grammar and an informal summary of the semantics, is contained in an appendix. The preface explains how one can freely obtain the Oberon system through internet file transfer.

The first two parts are easy to follow for anyone familiar with Pascal or Modula-2. The exposition is terse but clear. New concepts are introduced with well-chosen examples. Some examples, such as the fractal fern, are particularly appealing. The presentation of the third section, on object orientation, seems less satisfying. Inheritance is presented nicely, but polymorphic method invocation is introduced using the cumbersome mechanism of the original Oberon language. (That mechanism requires the user to manually encode the method lookup.) Only the last section introduces the Oberon-2 extension of record-bound procedures, the equivalent of Smalltalk messages or C++ member functions. The end of each chapter contains many good student exercises and a list of references.

The book offers an easy and complete introduction to Oberon for readers who are familiar with one of its ancestors and want to learn about Wirth’s vision of a small systems programming language with object-oriented features. Naturally, for these readers, the first parts are overly detailed. The book would be accessible to third-year college students and could be used as a supplement to a course using Oberon for systems or object-oriented programming. Particularly on the strength of the exercises, one could teach an introductory programming course from this book to an audience of very motivated first-year students, such as an honors section.

Unfortunately, this book is not well suited as an introduction to object-oriented programming. The exposition follows the traditional procedural approach, relegating data structuring to the second part of the book. An object-centered point of view would introduce records and record-bound procedures immediately as natural vehicles of programming rather than as advanced features.

Reviewer:  C. S. Horstmann Review #: CR116919
Bookmark and Share
 
Oberon (D.3.2 ... )
 
 
Language Constructs and Features (D.3.3 )
 
 
Object-Oriented Programming (D.1.5 )
 
 
Reference (A.2 )
 
Would you recommend this review?
yes
no
Other reviews under "Oberon": Date
The Oberon system: user guide and programmer’s manual
Reiser M., ACM Press, New York, NY, 1991.  350, Type: Book (9780201544220), Reviews: (1 of 4)
Sep 1 1991
The Oberon system: user guide and programmer’s manual
Reiser M., ACM Press, New York, NY, 1991.  350, Type: Book (9780201544220), Reviews: (2 of 4)
Jul 1 1992
The Oberon system: user guide and programmer’s manual
Reiser M., ACM Press, New York, NY, 1991.  350, Type: Book (9780201544220), Reviews: (3 of 4)
Sep 1 1992
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy