Zonnon Explained

Zonnon
Paradigms:Imperative, structured, modular, object-oriented
Family:Wirth Oberon
Designer:Jürg Gutknecht
Developer:ETH Zurich
Typing:Strong, hybrid (static and dynamic)
Scope:Lexical
File Formats:-->
Influenced By:Oberon, Pascal

Zonnon is a general purpose programming language in the line or family of the preceding languages Pascal, Modula, and Oberon.[1] Jürg Gutknecht is the author.[2]

Its conceptual model is based on objects, definitions, implementations, and modules. Its computing model is concurrent, based on active objects which interact via syntax controlled dialogs. The language is being developed at ETH Zürich Institute for Computer Systems by Professor Jürg Gutknecht. Zonnon introduces the concept of 'active objects' which are used to represent real world concurrent objects within computer programs. The Zonnon Language Report was written by Brian Kirk (director at Robinsons Associates), and David Lightfoot (Oxford Brookes University) working with Gutknecht (ETH, Zürich) and Dr. Eugene Zueff (Евгений Зуев) (Moscow State University).

The first book about Zonnon was published by the N. I. Lobachevsky State University of Nizhny Novgorod (a.k.a., Nizhni Novgorod State University).[3]

Overview

Zonnon is a member of the Pascal family of languages, which has two beneficial consequences: a) it is a general purpose language and b) it is immediately familiar to programmers who have used Pascal, Modula-2, and Oberon. Most Pascal programs from the domain of algorithms and data structures are successfully compiled by the Zonnon compiler after a few minor modifications. However, from the perspective of programming in the large, Zonnon is much more elaborate compared to its predecessors. Zonnon has four different kinds of program units: objects, modules, definitions, and implementations. The first two are instantiated at runtime, the third is a compile time unit of abstraction, and the fourth is a unit of composition. Here is a brief characterization:

Compositional model

Zonnon uses a compositional inheritance model based on aggregation. Typically, an object (or module) is composed of several functional components, each of them presenting itself to clients in the form of an abstract definition. The set of definitions plus the object’s intrinsic interface (that is the set of all public elements of the object) constitutes the interface between the object and its clients.

Concurrency model

Zonnon allows adding behavior to objects (and modules). For this purpose, the notion of active object was imported from the Active Oberon language and generalized towards a unified model of hierarchic activities. Activities are encapsulated threads that come in two flavors: local activities and agent activities.

Local activities

Local activities express intrinsic object dynamics. A typical context is a block of statements representing the “launch logic” for a set of mutually independent activities, with the assumption that the end of the block acts as a barrier that cannot be passed before all activities have terminated.

Agent activities

Agent activities control the interoperability of objects in terms of formal dialogs. Each agent activity within a “callee” object serves as a template of a formal dialog between some caller and the callee. Agent activities typically implement a parser for some predefined syntax that constitutes a kind of contract between the two communication partners. Formal dialogs are a generalization of asynchronous method calls. This is reflected in the form of a syntax that is borrowed from ordinary method calls.

References

Further reading

Independent sources
Sources from author and/or contributors

External links

Notes and References

  1. Gutnecht and Zueff, p. 132.
  2. Web site: 2010 . Zonnon . ETH Zurich . dead . https://web.archive.org/web/20140809032925/http://www.zonnon.ethz.ch/project.html . 9 August 2014 . 18 January 2021.
  3. "Book about Zonnon Language (in Russian)." N. I. Lobachevsky State University of Nizhny Novgorod. Retrieved on May 30, 2013.