proj-plbook-plChPascalOberonLang

Table of Contents for Programming Languages: a survey

Pascal and Oberon

Because of its historical popularity, its importance as an exemplar of a style of computer language, its readability, Pascal gets its own chapter. Because it is a successor to Pascal, and because of its minimalism, that chapter is also about Oberon.

The designer, Wirth, is known for an emphasis on simplicity [1] [2] [3] [4] [5].

Oberon

Goals: "...The language Oberon was born out of the ambition to simplify language to the essentials....Tempted to design a version of Modula stripped down to essentials, we also wanted to identify those features that were indispensable to encompass object-orientation" (cite http://www.swissdelphicenter.ch/en/niklauswirth.php )

Pros:

The minimal extensions present in Oberon for OOP are:

Oberon already has first-class functions, so 'methods' may be implemented manually by assigning function values to fields of a record.

People: Niklaus Wirth

Types: Basic types (boolean, char, integer, real, byte, set), arrays, records, pointers, procedures

Retrospectives:

Misc notes: "its successors Modula and Oberon are much more mature and refined designs than Pascal. They form a family, and each descendant profited from experiences with its ancestors....Why, then, did Pascal capture all the attention, and Modula and Oberon got so little? Again I quote Franz: "This was, of course, partially of Wirth's own making". He continues: "He refrained from ... names such as Pascal-2, Pascal+, Pascal 2000, but instead opted for Modula and Oberon". Again Franz is right. To my defense I can plead that Pascal-2 and Pascal+ had already been taken by others for their own extensions of Pascal, and that I felt that these names would have been misleading for languages that were, although similar, syntactically distinct from Pascal. I emphasized progress rather than continuity, evidently a poor marketing strategy. ... But of course the naming is by far not the whole story. For one thing, we were not sufficiently active -- today we would say aggressive -- in making our developments widely known." -- http://www.swissdelphicenter.ch/en/niklauswirth.php

As of this writing, the latest in Wirth's Pascal/Modula/Oberon family of languages. Latest version as of this writing: Oberon-7

Links:

Oberon the language is part of an entire computer system, Project Oberon:

Oberon-07 is also used in the Astrobe system for programming Cortex M boards [7] [8].

Pascal

Goals: "The general idea dominating the design of Pascal was to provide a language appealing to systematic thinking, mirroring conventional mathematical notation, satisfying the needs of practical programming, and encouraging a structured approach" (cite http://www.swissdelphicenter.ch/en/niklauswirth.php)

Criteria:

Historically important innovations:

Attributes:

Cons:

Features:

Influences: Algol, Fortran, Cobol ( http://www.swissdelphicenter.ch/en/niklauswirth.php )

People: Niklaus Wirth

Retrospectives:

Opinions:

Pascal Variants

Tiny Pascal

http://www.trs-80.org/tiny-pascal/

" Tiny Pascal was a subset of the programming language Pascal. It contained most of the features of Pascal but was small enough to run well on a cassette-based TRS‑80. "

" The first version of Tiny Pascal appeared in a three-part series of articles in BYTE titled “A ‘Tiny’ Pascal Compiler.” They were written by Kin-Man Chung and Herbert Yuen and appeared in the September, October, and November 1978 issues. Those articles were also later published in The BYTE Book of Pascal that was published in 1980.

This version of Tiny Pascal was written in North Star BASIC. According to the articles, it implemented most of Pascal with some limitations:

    the GOTO statement was missing
    only integers and one-dimensional integer arrays were allowed for variable types
    there was no “structured data type, pointer type, user defined type, and file type”
    parameters were passed by value only

On the other hand, Tiny Pascal did add some extensions to standard Pascal, such as else clauses in case statements. "

Implementations

Pascal Links