Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Parallel

Exploring Ancient Languages


Exploring Ancient Languages

Introducing Niklaus Wirth's minimalist spawn of Modula-2 and other distinguished forebears.

Niklaus Wirth developed Oberon at the Institut f¼r Informatik in Zurich, Switzerland. Wirth explains its gestation: "Oberon evolved from a project whose goal was the design of a modern, flexible and efficient operating system for a single-user workstation. The OS was initially designed in Modula-2, but Wirth felt that because Modula-2 allowed the use of variant record types, garbage collection would be difficult; consequently, he decided to design a new language that would provide other methods for extending record types.

Wirth also wished to experiment with a minimalist approach to language design that emphasized mathematical purity. As a result, Oberon evolved from Modula-2 chiefly by subtracting features from Modula-2, although some new features were added. Some of the subtracted features include variant records, opaque data types, enumeration types, subrange types, reserved words CARDINAL and WITH, local modules.

Wirth also changed the following Modula-2 features: Pointers must be bound to a record or an array type. An array index must be integers, beginning at 0. Qualification of imported modules is required. The SYSTEM module was dropped in favor of the data types ADDRESS and WORD, and concurrency is not supported.

Finally, Wirth introduced two new features: multidimensional open arrays and extended (extensible) record types.

Although Oberon may not reach the same levels of commercial acceptance as Wirth's Pascal and Modula-2, it has already influenced designers of subsequent languages. Modula-3, a joint project of the Digital Systems Research Center and the Olivetti Research Center, was designed to provide OO extensions to Modula-2 as well as support for threads, exceptions and garbage collection. Modula 3 is based on Modula-2+ and incorporates features of the Mesa and Cedar languages.

The authors freely admit that their intention was not so much to define new concepts as to take the best of Mesa, Modula-2, Cedar and Modula-2+ and incorporate them in a new language. One of their main goals was to provide safety from unchecked runtime errors, such as might occur when a record with pointers referencing it is freed, leaving the pointers pointing to garbage. Another source of runtime errors in Modula-2 that Modula-3 addresses is the use of variant records to circumvent type-checking.

—Warren Keuffel, "Whither Modula-2?, Tools of the Trade

Speaking Softly

Fifteen years ago, Smalltalk made it big.

When programmers begin to learn OO programming, they must first pick a language to learn with. An obvious choice for many established programmers is a hybrid language, such as C++ or Object Pascal, which adds OO facilities to an existing language. A programmer can then begin with a sense of familiarity, moving into OO programming gradually because old language skills can be used while learning new ones.

Is that the best approach? I once thought so, but I've since changed my mind. Hybrid languages suffer from several faults. To begin with, they don't feel completely object-oriented. Built-in types from the base language (int and CHAR, for example) aren't implemented in an OO manner; this often causes frustration when you try to build generic object containers and structures. In addition, none of the hybrid languages provides a significant, well-documented library of classes the programmer can study. I've come to the conclusion that Smalltalk is the best language to use when learning OO programming. Its interactive, graphic environment is an excellent tool for learning easily and enjoyably. In addition, Smalltalk is entirely object-oriented. Every single type in Smalltalk, from numbers to containers, is an object. This "pure approach helps the programmer better understand how complex systems can be built from objects.

—Scott Robert Ladd, "Chatting about Smalltalk, Objectively Speaking


Software Development was known as Computer Language from 1984 to 1993. All selections from December 1989. Compiled by Laurie O'Connell.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.