Jump to content

Oberon: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Ak120 (talk | contribs)
mNo edit summary
Line 2: Line 2:
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.
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. 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.  
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.


Note that with the exception of the Oberon compilers developed by Hr. 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-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.
 
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.  


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.
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.
Line 12: Line 14:
'''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.
'''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.


==OS/2 implementations==
==Implementations==
===OS/2 implementations===
*[[Canterbury Modula 2 - Oberon-2|Canterbury Modula 2 & Oberon-2]] - Discontinued  
*[[Canterbury Modula 2 - Oberon-2|Canterbury Modula 2 & Oberon-2]] - Discontinued  
*[[ETH Oberon System]] - Discontinued. Note that this is not just the compiler but the entire Oberon OS as a layer on top of OS/2.
*[[ETH Oberon System]] - Discontinued. Note that this is not just the compiler but the entire Oberon OS as a layer on top of OS/2.
Line 19: Line 22:
*[[XDS-x86 Modula 2]] - Discontinued
*[[XDS-x86 Modula 2]] - Discontinued


===OS/2 text & programmers editors with Oberon support===
====OS/2 text & programmers editors with Oberon support====
* [[Enhanced Editor]] - Has syntax highlighting and some formatting features available as a [[Adding syntax highlighting to EPM|separate download]].
* [[Enhanced Editor]] - Has syntax highlighting and some formatting features available as a [[Adding syntax highlighting to EPM|separate download]].


==DOS implementations==
===DOS implementations===
*[[Gardens Point Oberon-2]] Was available in both Commercial and Open Source variants - Discontinued
*[[Gardens Point Oberon-2]] Was available in both Commercial and Open Source variants - Discontinued
*[[XDS-x86 Modula 2]] - Discontinued
*[[XDS-x86 Modula 2]] - Discontinued


==Implementations that run under WinOS/2==
===Win-OS/2 Implementations===
* BlackBox Oberon - Current Oberon Core version does not work, older versions however do work with Win32s installed.
* 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
* [[Programmers Open Workbench]] - Aka POW!/16 - Open source - Discontinued


==Implementations that run under Java==
===Java===
* [[Canterbury Oberon-2 for Java]] - Commercial - Discontinued
* [[Canterbury Oberon-2 for Java]] - Commercial - Discontinued
* [[Gardens Point Component Pascal]] - Open source - Current
* [[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


==Implementations in JavaScript==
===JavaScript===
*[http://www.ralphsommerer.com/obn.htm OberonScript] - Can be run inside a web browser or by using the JavaScript Desktop Enabler.
*[http://www.ralphsommerer.com/obn.htm OberonScript] - Can be run inside a web browser or by using the JavaScript Desktop Enabler.
*[http://research.microsoft.com/apps/pubs/default.aspx?id=70288 Microsoft Oberon Script] - Older version of the above, code appears to have gone missing.
*[http://research.microsoft.com/apps/pubs/default.aspx?id=70288 Microsoft Oberon Script] - Older version of the above, code appears to have gone missing.
==Articles==
* [[XDS Oberon]] by [[Paul Floyd]] (May 1999)
* [[A Description of the Oberon-2 Language]] by Paul Floyd (Aug 1998)
* [[A Discussion of Oberon]] by Paul Floyd (Aug 1998)
* [[The Oakwood Guidelines for Oberon-2 Compiler Developers]]
==Publications==
* B. Marincek, J.L. Marais, E. Zeller: ''Oberon - Ein Kurzleitfaden für Studenten'' - Vieweg 1999 - ISBN 3-528-05691-6


==Links==
==Links==
Line 61: Line 73:
* 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.
* André Fischer & Hannes Marais:[http://oberon2005.oberoncore.ru/book/af1997.pdf The Oberon Companion: A Guide to Using and Programming Oberon System 3] - 1997 in PDF format
* André Fischer & Hannes Marais:[http://oberon2005.oberoncore.ru/book/af1997.pdf The Oberon Companion: A Guide to Using and Programming Oberon System 3] - 1997 in PDF format
* B Marincek, J.L. Marais, and E.Zeller: Oberon - Ein Kurzleitfaden fuer Studenten - 1999 Vieweg - ISBN 3-528-05691-6
* Günther Sawitzki: [http://www.statlab.uni-heidelberg.de/reports/by.series/report.06.pdf Extensible Statistical Software: On a Voyage to Oberon] - In PDF format.
* Günther Sawitzki: [http://www.statlab.uni-heidelberg.de/reports/by.series/report.06.pdf Extensible Statistical Software: On a Voyage to Oberon] - In PDF format.
* [ftp://ftp.ethoberon.ethz.ch/Oberon/Newsletter/ Archive of old Oberon Newsletter issues]
* [ftp://ftp.ethoberon.ethz.ch/Oberon/Newsletter/ Archive of old Oberon Newsletter issues]
Line 75: Line 86:
* 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 - In PDF format.
* 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 - In PDF format.
* 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' Journal.
* 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' Journal.
* Quanfu Fan & Xiangto Wang: [http://www.cs.arizona.edu/~collberg/Teaching/520/2003/Projects/quanfu.ps.gz Web Languages and An Example: WebL] - In [[PostScript]] fromat.
* Quanfu Fan & Xiangto Wang: [http://www.cs.arizona.edu/~collberg/Teaching/520/2003/Projects/quanfu.ps.gz Web Languages and An Example: WebL] - In [[PostScript]] format.
* 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 and Michael Franz: [http://gaming.jhu.edu/~phf/pub/jmlc-2000.pdf Stand-Alone Messages: A Step Towards Component-Oriented Programming Languages] - In PDF format
* 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] - In PDF format
* 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] - In PDF format.
on Top of Another] - In PDF format.
Line 83: Line 94:


;Mona
;Mona
* Martin Odersky: [ftp://ftp.inf.ethz.ch/doc/tech-reports/1xx/102.pdf Recursive data types and a report on the Mona notation of algorithms.] - 1989 - In PDF format.
* 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]
 
====Classic EDM/2 articles====
* [[XDS Oberon]] by [[Paul Floyd]] (May 1999)
* [[A Description of the Oberon-2 Language]] by [[Paul Floyd]] (August 1998)
* [[A Discussion of Oberon]] by [[Paul Floyd]] (August 1998)
 
====Local articles====
* [[The Oakwood Guidelines for Oberon-2 Compiler Developers]]


====Tutorials and other learning material====
;Tutorial
* [http://www.jlangenau.de/POWpage/index.htm POW Tutorial in German] by Jörg Langenau, uses standard Oberon-2 syntax and is thus usable with other compilers.
* Ryan Kelly: ''Getting Started with Oberon-2'' [http://people.bath.ac.uk/rmk22/msc/Logo.pdf PDF]
* Ryan Kelly: [http://people.bath.ac.uk/rmk22/msc/Logo.pdf Getting Started with Oberon-2] - In PDF format


==Standards==
==Standards==

Revision as of 18:06, 2 October 2017

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.

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.

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.

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.

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 ...

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.

Implementations

OS/2 implementations

OS/2 text & programmers editors with Oberon 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

Publications

  • B. Marincek, J.L. Marais, E. Zeller: Oberon - Ein Kurzleitfaden für Studenten - Vieweg 1999 - ISBN 3-528-05691-6

Links

Publications

Component Pascal
WebL

on Top of Another] - In PDF format.

Mona
  • Martin Odersky: Recursive data types and a report on the Mona notation of algorithms - 1989 PDF
Tutorial
  • Ryan Kelly: Getting Started with Oberon-2 PDF

Standards