Jump to content

Oberon: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
Ak120 (talk | contribs)
mNo edit summary
Line 4: Line 4:
It was based on his earlier [[Modula 2]] language but adds limited object-orientation but at the same time removes a lot of the M2 Language features in order to simplify the language and compiler.
It was based on his earlier [[Modula 2]] language but adds limited object-orientation but at the same time removes a lot of the M2 Language features in order to simplify the language and compiler.


Oberon-2 is an extension of Oberon developed in 1992 by Hanspeter Mössenböck that adds stronger object-orientation and brings back a couple of features from Modula-2.  
There are descendant languages that some classify as Oberon and others as members of the Oberon family, we include the few implementations that actually run under OS/2 in some form here just to simplify things, it is not a taxidermy issue.


Note that with the exception of the Oberon compilers developed by Wirth himself that in general only support the original Oberon, most developers support both languages without explicitly mentioning it, this is because Oberon-2 is purely an addition to Oberon and therefore you can program in the earlier variation without any problems. But the literature supplied with the tools does frequently not differentiate correctly between the two.  
'''Oberon/0''' is a simplified version of the language intended to be used in teaching compiler construction, it is therefore as much a descendant of PL/0 (simplified Pascal) as of Oberon proper and you are not meant to download a copy, but rather make one yourself.


There are descendant languages that some classify as Oberon and others as members of the Oberon family, we include the few implementations that actually run under OS/2 in some form here just to simplify things, it is not a taxidermy issue. '''Active Oberon''' is a variant of Oberon-2 that has explicit support for programming multi core processors, '''Oberon/0''' is a simplified version of the language intended to be used in teaching compiler construction, it is therefore as much a descendant of PL/0 (simplified Pascal) as of Oberon proper and you are not meant to download a copy, but rather make one yourself.
''Blackbox Oberon'' runs fine under [[Odin]], older versions actually work in Win-OS/2 with [[Win32s]] installed. Blackbox Oberon used to be called Oberon/F.


Oberon/L is now called '''Component Pascal''' is a variant designed specifically to allow development of software components, there is no native OS/2 implementation but a Java implementation exists and ''Blackbox Oberon'' runs fine under [[Odin]], older versions actually work in WinOS/2 with [[Win32s]] installed, Blackbox Oberon used to be called Oberon/F BTW. '''Zonnon''' is a descendant of Active Oberon that adds safety features and a stronger object system. Oberon07 is simply a name for the latest version of the Oberon standard and does not differ too much from the original, the last update to the Oberon 07 standard was in the summer of 2014. '''Mona''' was a minor variation of Oberon that sported recursive data types, Mona author Martin Odersky went on to write [[Scala]] which sports recursive data types ...
Oberon07 is simply a name for the latest version of the Oberon standard and does not differ too much from the original, the last update to the Oberon 07 standard was in the summer of 2014.


'''WebL''' is an Oberon derivative that was specially designed to process web documents, people usually associate it with [[Modula-3]] since some of the same people worked on both systems at the Digital/Compaq research labs and WebL was sometimes shipped with the M3 system, but the ideas behind and the basis for WebL came from the Oberon group at [[ETH]] although the actual implementation is in [[Java]]. HP later renamed WebL as the not very search engine friendly "Web Language" or "HP Web Language". WebL was mostly notable due to the fact that in its day (around the turn of the century) it managed to outperform similar commercial toolkits and was much more compact as well.
'''Mona''' was a minor variation of Oberon that sported recursive data types, Mona author Martin Odersky went on to write [[Scala]] which sports recursive data types.


==Implementations==
==Implementations==
Line 35: Line 35:
===Java===
===Java===
* [[Canterbury Oberon-2 for Java]] - Commercial - Discontinued
* [[Canterbury Oberon-2 for Java]] - Commercial - Discontinued
* [[Gardens Point Component Pascal]] - Open source - Current
* [http://www.uni-vologda.ac.ru/JOB/ JOB] - Open source - Discontinued
* [http://www.uni-vologda.ac.ru/JOB/ JOB] - Open source - Discontinued


Line 46: Line 45:
* [[A Description of the Oberon-2 Language]] by Paul Floyd (Aug 1998)
* [[A Description of the Oberon-2 Language]] by Paul Floyd (Aug 1998)
* [[A Discussion of Oberon]] by Paul Floyd (Aug 1998)
* [[A Discussion of Oberon]] by Paul Floyd (Aug 1998)
* [[The Oakwood Guidelines for Oberon-2 Compiler Developers]]


==Links==
==Links==
* [http://www.modulaware.com/mdltr_.htm The MODulator] - Modula-2 and Oberon articles from the gents behind the ModulaWare company in Switzerland, used to be a paper newsletter back in the day.
* [http://www.modulaware.com/mdltr_.htm The MODulator] - Modula-2 and Oberon articles from the gents behind the ModulaWare company in Switzerland, used to be a paper newsletter back in the day.
* [http://zx.oberon2.ru Oberon2.ru] - Massive Russian site dedicated to all things Wirthian, forum in particular strong.
* [http://zx.oberon2.ru Oberon2.ru] - Massive Russian site dedicated to all things Wirthian, forum in particular strong.
* [http://web.archive.org/web/20070507043202/http://www.hpl.hp.com/downloads/crl/webl/index.html A copy of the old HP WebL/Web Language site] - From [[Archive.org]]
* [http://www.cfbsoftware.com/gpcp/ Component pascal resources]
* [http://pascal.hansotten.com Pascal for small machines] - Pascal and Oberon related blog
* [http://pascal.hansotten.com Pascal for small machines] - Pascal and Oberon related blog


Line 61: Line 57:
* Jürg Gutknecht & Niklaus Wirth: [http://www.inf.ethz.ch/personal/wirth/ProjectOberon1992.pdf Project Oberon; The Design of an Operating System and Compiler] Updated version from 2005
* Jürg Gutknecht & Niklaus Wirth: [http://www.inf.ethz.ch/personal/wirth/ProjectOberon1992.pdf Project Oberon; The Design of an Operating System and Compiler] Updated version from 2005
* Jürg Gutknecht & Niklaus Wirth: [http://www-oldurls.inf.ethz.ch/personal/wirth/ProjectOberon/ Project Oberon; The Design of an Operating System and Compiler] Updated version from 2013 (Not as well formatted as the earlier version)
* Jürg Gutknecht & Niklaus Wirth: [http://www-oldurls.inf.ethz.ch/personal/wirth/ProjectOberon/ Project Oberon; The Design of an Operating System and Compiler] Updated version from 2013 (Not as well formatted as the earlier version)
* Hanspeter Mössenböck [http://ssw.jku.at/Research/Books/Oberon2.pdf Object-Oriented Programming in Oberon-2]
* Hanspeter Mössenböck [https://www.cs.helsinki.fi/njc/njc1_papers/number1/inv_paper4.pdf Extensibility in the Oberon system]
* Hanspeter Mössenböck & Christof Steindl: [http://www.ssw.uni-linz.ac.at/Research/Projects/Reflection/Reflection99/paper.ps The Oberon-2 Reflection Model and its Applications]
* Niklaus Wirth: [http://members.home.nl/jmr272/Oberon/ModToOberon.pdf From Modula to Oberon]
* Niklaus Wirth: [http://members.home.nl/jmr272/Oberon/ModToOberon.pdf From Modula to Oberon]
* Niklaus Wirth: [http://www.inr.ac.ru/~info21/pdf/Modula-Oberon-June-2007.pdf Modula-2 and Oberon] - Historical overview
* Niklaus Wirth: [http://www.inr.ac.ru/~info21/pdf/Modula-Oberon-June-2007.pdf Modula-2 and Oberon] - Historical overview
* Jürg Gutknecht & Mihael Franz: [https://web.archive.org/web/20050915000000*/http://www.ics.uci.edu/~franz/publications/OberonWithGadgetsPrepub.pdf Oberon with Gadgets - A Simple Component Framework]
* Jürg Gutknecht & Michael Franz: [https://web.archive.org/web/20050915000000*/http://www.ics.uci.edu/~franz/publications/OberonWithGadgetsPrepub.pdf Oberon with Gadgets - A Simple Component Framework]
* Jürg Gutknecht: [ftp://ftp2.de.freebsd.org/pub/languages/oberon/ftp.inf.ethz.ch/System3/Papers/jcsi0.ps Oberon, Gadgets and Some Archetypal Aspects of Persistent Objects]
* Jürg Gutknecht: [ftp://ftp2.de.freebsd.org/pub/languages/oberon/ftp.inf.ethz.ch/System3/Papers/jcsi0.ps Oberon, Gadgets and Some Archetypal Aspects of Persistent Objects]
* J. Marais: [ftp://ftp.inf.ethz.ch/pub/publications/dissertations/th11697.ps.gz Design and Implementation of a Component Architecture for Oberon] ETH Zürich 1996.
* J. Marais: [ftp://ftp.inf.ethz.ch/pub/publications/dissertations/th11697.ps.gz Design and Implementation of a Component Architecture for Oberon] ETH Zürich 1996.
Line 74: Line 67:
* [http://www.cilsv.com/oberon.html Oberon] - An introduction to Oberon in Japanese.
* [http://www.cilsv.com/oberon.html Oberon] - An introduction to Oberon in Japanese.


;Component Pascal
* Cuno Pfister & Clemens Szyperski: [http://diyhpl.us/~bryan/papers2/Why%20objects%20are%20not%20enough.pdf Why Objects Are Not Enough]
* J. Marais: Extensible Software Systems in Oberon - Journal of Computational and Graphical Statistics, Vol 5 (1996)
* Michael Franz: [http://www.benno.id.au/refs/ec_for_component.pdf Toward an Execution Model for Component Software]
;WebL
* Hannes Marais: [https://web.archive.org/web/20050212234457/http://www.research.compaq.com/SRC/WebL/WebL.pdf Compaq’s Web Language: A Programming Language for the Web] - User manual.
* Thomas Kistler and Hannes Marais: [http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-TN-1997-029.pdf WebL – A Programming Language for the Web] - 1997
* Hannes Marais and Tom Rodeheffer: [http://www.drdobbs.com/web-development/automating-the-web-with-webl/184410817 Automating the web with WebL] - From Dr Dobb's Journal
* Quanfu Fan & Xiangto Wang: [http://www.cs.arizona.edu/~collberg/Teaching/520/2003/Projects/quanfu.ps.gz Web Languages and An Example: WebL]
* Josef Templ: [http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/1994/9415/9415i/9415i.htm The Oberon Programming Language: The new Pascal] - Introductionary article.
* Josef Templ: [http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/1994/9415/9415i/9415i.htm The Oberon Programming Language: The new Pascal] - Introductionary article.
* Peter H. Fröhlich, Michael Franz: [http://gaming.jhu.edu/~phf/pub/jmlc-2000.pdf Stand-Alone Messages: A Step Towards Component-Oriented Programming Languages]
* Peter H. Fröhlich, Michael Franz: [http://gaming.jhu.edu/~phf/pub/jmlc-2000.pdf Stand-Alone Messages: A Step Towards Component-Oriented Programming Languages]
* Michael Franz: [https://pdfs.semanticscholar.org/68c3/9912294de44359c1affeb5fcc8b71247dc32.pdf Emulating an Operating System
* Michael Franz: [https://pdfs.semanticscholar.org/68c3/9912294de44359c1affeb5fcc8b71247dc32.pdf Emulating an Operating System
on Top of Another]
on Top of Another]
* Cuno Pfister: [http://www.nt.ntnu.no/users/haugwarb/Programming/Oberon/oberon_vs_java.html Brief comparison of Component Pascal and Java] - CP is a component variation of Oberon BTW.
* Cuno Pfister: [http://www.nt.ntnu.no/users/haugwarb/Programming/Oberon/oberon_vs_java.html Brief comparison of Component Pascal and Java]


;Mona
;Mona
* Martin Odersky: ''Recursive data types and a report on the Mona notation of algorithms'' - 1989 [ftp://ftp.inf.ethz.ch/doc/tech-reports/1xx/102.pdf PDF]
* Martin Odersky: ''Recursive data types and a report on the Mona notation of algorithms'' - 1989 [ftp://ftp.inf.ethz.ch/doc/tech-reports/1xx/102.pdf PDF]
;Tutorial
* Ryan Kelly: ''Getting Started with Oberon-2'' [http://people.bath.ac.uk/rmk22/msc/Logo.pdf PDF]


==Standards==
==Standards==

Revision as of 02:24, 14 March 2018

Oberon is a structured object oriented and procedural language in the Algol family that was introduced by Niklaus Wirth in 1988 alongside an operating system with the same name.

It was based on his earlier Modula 2 language but adds limited object-orientation but at the same time removes a lot of the M2 Language features in order to simplify the language and compiler.

There are descendant languages that some classify as Oberon and others as members of the Oberon family, we include the few implementations that actually run under OS/2 in some form here just to simplify things, it is not a taxidermy issue.

Oberon/0 is a simplified version of the language intended to be used in teaching compiler construction, it is therefore as much a descendant of PL/0 (simplified Pascal) as of Oberon proper and you are not meant to download a copy, but rather make one yourself.

Blackbox Oberon runs fine under Odin, older versions actually work in Win-OS/2 with Win32s installed. Blackbox Oberon used to be called Oberon/F.

Oberon07 is simply a name for the latest version of the Oberon standard and does not differ too much from the original, the last update to the Oberon 07 standard was in the summer of 2014.

Mona was a minor variation of Oberon that sported recursive data types, Mona author Martin Odersky went on to write Scala which sports recursive data types.

Implementations

OS/2 implementations

Editor support

DOS implementations

Win-OS/2 Implementations

  • BlackBox Oberon - Current Oberon Core version does not work, older versions however do work with Win32s installed.
  • Programmers Open Workbench - Aka POW!/16 - Open source - Discontinued

Java

JavaScript

  • OberonScript - Can be run inside a web browser or by using the JavaScript Desktop Enabler.
  • Microsoft Oberon Script - Older version of the above, code appears to have gone missing.

Articles

Links

  • The MODulator - Modula-2 and Oberon articles from the gents behind the ModulaWare company in Switzerland, used to be a paper newsletter back in the day.
  • Oberon2.ru - Massive Russian site dedicated to all things Wirthian, forum in particular strong.
  • Pascal for small machines - Pascal and Oberon related blog

Publications

on Top of Another]

Mona
  • Martin Odersky: Recursive data types and a report on the Mona notation of algorithms - 1989 PDF

Standards