Content deleted Content added
mNo edit summary |
Rescuing 2 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(36 intermediate revisions by 27 users not shown) | |||
Line 1:
{{Short description|General-purpose programming language}}
{{External links|date=November 2024}}
{{Use dmy dates|date=January 2021}}
{{Other uses|Oberon (disambiguation)}}
{{Infobox programming language
| name = Oberon
Line 5 ⟶ 8:
| paradigms = [[Imperative programming|Imperative]], [[Structured programming|structured]], [[Modular programming|modular]], [[Object-oriented programming|object-oriented]]
| family = [[Niklaus Wirth|Wirth]] Oberon
| designer =
| developer =
| released = {{Start date and age|
| latest release version = Oberon-07
| latest release date = {{Start date and age|2020|03|06|df=yes}}
Line 14 ⟶ 17:
| programming language =
| platform = [[ARM architecture|ARM]], [[StrongARM]]; [[IA-32]], [[x86-64]]; [[SPARC]], [[Ceres (workstation)|Ceres]] ([[NS32000|NS32032]])
| operating system = [[Microsoft Windows|Windows]], [[Linux]], [[Oracle Solaris
| license =
| file ext =
| file format = <!-- or: | file formats = -->
| website = {{URL|
| implementations =
| dialects =
| influenced by = [[Modula-2]]
| influenced = [[Oberon-2]], [[#Oberon-07|Oberon-07]], [[Active Oberon]], [[Component Pascal]], [[Zonnon]], [[
}}
'''Oberon''' is a general-purpose [[programming language]] first published in 1987 by [[Niklaus Wirth]] and the latest member of the Wirthian family of [[ALGOL]]-like languages ([[Euler (programming language)|Euler]], [[ALGOL W]], [[Pascal (programming language)|Pascal]], [[Modula]], and [[Modula-2]]).<ref name=ETH>{{Cite report |last=Wirth |first=Niklaus |title=From Modula to Oberon and the programming language Oberon |series=ETH Technical Reports D-INFK |year=1987 |volume=Band 82 |publisher=Wiley |doi=10.3929/ethz-a-005363226 |url=https://doi.org/10.3929/ethz-a-005363226}}</ref><ref name=PLO>{{Cite journal |last=Wirth |first=Niklaus |date=July 1988 |title=The Programming Language Oberon |journal=Software: Practice and Experience |volume=18 |issue=7 |pages=661–670|doi=10.1002/spe.4380180707}}</ref><ref name=M2O>{{Cite
Oberon
==Design==
Oberon is designed with a motto attributed to [[Albert Einstein]] in mind:
The intent of this strategy was to produce a language that is easier to learn, simpler to implement, and very efficient. Oberon compilers have been viewed as compact and fast, while providing code quality comparable to commercial compilers.<ref>{{
==Characteristics==
Features characterizing the Oberon language include:<ref>{{Cite web |last1=Wirth |first1=Niklaus |last2=Gutknecht |first2=Jürg |author-link=Jürg Gutknecht |date=1987–2021 |url=
* Case sensitive syntax with uppercase keywords
* Type-extension with type test
Line 206 ⟶ 209:
===Oberon-2===
{{Main|Oberon-2}}
A few changes were made to the first released specification. For example, [[object-oriented programming]] (OOP) features were added, the <code>FOR</code> loop was reinstated. The result was ''[[Oberon-2]]''. One release, named ''[[Native Oberon]]'' which includes an operating system, and can directly boot on [[IBM PC compatible]] class hardware. A [[.NET Framework|.NET]] implementation of Oberon with
Oberon-2 compilers developed by ETH include versions for [[Microsoft Windows]], [[Linux]], [[Oracle Solaris
There is an Oberon-2 [[Lex (software)|Lex]] scanner and [[Yacc]] [[parser]] by Stephen J Bevan of Manchester University, UK, based on the one in the [[Hanspeter Mössenböck|Mössenböck]] and Wirth reference. It is at version 1.4.
Other compilers include Oxford Oberon-2,<ref>{{Cite web |last=Spivey |date=8 April 2019 |url=http://spivey.oriel.ox.ac.uk/corner/Oxford_Oberon-2_compiler |title=Oxford Oberon-2 compiler |access-date=17 January 2021}}</ref> which also understands Oberon-07, and Vishap Oberon.<ref>{{Cite web |author=dcwbrown |date=16 June 2020 |url=https://github.com/vishaps/voc/ |title=Vishap Oberon Compiler |website=GitHub |access-date=17 January 2021}}</ref> The latter is based on Josef Templ's Oberon to [[C (programming language)|C]] language [[source-to-source compiler]] (transpiler) named Ofront,<ref>{{Cite web |author=jtempl |date=2 January 2020 |url=https://github.com/jtempl/ofront/ |title=Ofront |website=GitHub |access-date=17 January 2021}}</ref> which in turn is based on the OP2 Compiler developed by Regis Crelier at ETHZ.
===Oberon-07===
Oberon-07, defined by Niklaus Wirth in 2007 and revised in 2008, 2011, 2013, 2014, 2015, and 2016 is based on the original version of Oberon rather than Oberon-2. The main changes are: explicit numeric conversion functions (e.g., <code>FLOOR</code> and <code>FLT</code>) must be used
Oberon-07 compilers have been developed for use with many different computer systems. Wirth's compiler targets a [[reduced instruction set computer]] (RISC) processor of his own design that was used to implement the 2013 version of the [[Project Oberon]] operating system on a Xilinx [[field-programmable gate array]] (FPGA) Spartan-3 board. Ports of the RISC processor to FPGA Spartan-6, Spartan-7, Artix-7 and a RISC emulator for Windows (compilable on Linux and [[macOS]], and binaries available for Windows) also exist. [https://miasap.se/obnc/ OBNC] compiles via C and can be used on any Portable Operating System Interface ([[POSIX]]) compatible operating system. The commercial [http://www.astrobe.com Astrobe] implementation targets
===Active Oberon===
[[Active Oberon]] is yet another variant of Oberon, which adds objects (with object-centered access protection and local activity control), system-guarded assertions, preemptive priority scheduling and a changed syntax for methods (named ''[[Oberon-2#Type-bound procedures|type-bound procedures]]'' in Oberon vocabulary). Objects may be active, which means that they may be threads or processes. Further, Active Oberon has a way to implement operators (including overloading), an advanced syntax for using arrays (see [http://www.ethoberon.ethz.ch/native/compiler/x.index.html OberonX language extensions] {{Webarchive|url=https://web.archive.org/web/20160304043022/http://www.ethoberon.ethz.ch/native/compiler/x.index.html |date=4 March 2016 }} and Proceedings<ref>{{cite encyclopedia |last1=Friedrich |first1=Felix |last2=Gutknecht |first2=Jürg |author-link=Jürg Gutknecht |editor1-last=Lightfoot |editor1-first=David E. |editor2-last=Szyperski |editor2-first=Clemens |date=2006 |chapter=Array-Structured Object Types for Mathematical Programming
ETHZ has released [[Active Oberon]] which supports active objects, and the operating systems based thereon (Active Object System (AOS), Bluebottle, A2), and environment (JDK, HTTP, FTP, etc.) for the language. As with many prior designs from ETHZ, versions of both are available for download on the Internet. As of 2003, supported [[central processing unit]]s (CPUs) include single and dual core [[x86]], and [[StrongARM]].
===Related languages===
Development continued on languages in this family. A further extension of Oberon-2 was originally named Oberon/L but later renamed to [[Component Pascal]] (CP). CP was developed for Windows and [[classic Mac OS]] by Oberon microsystems, a commercial spin-off company from ETHZ, and for .NET by [[Queensland University of Technology]]. Further, the languages ''Lagoona''<ref>{{Cite report |last1=Fröhlich |first1=Peter H. |last2=Franz |first2=Michael |date=<!-- Undated 2002? --> |title=On Certain Basic Properties of Component-Oriented Programming Languages |url=http://oberon2005.oberoncore.ru/paper/ph2001.pdf |publisher=University of California, Irvine |access-date=18 January 2021}}</ref><ref>{{Cite journal |last1=Fröhlich |first1=Peter H. |last2=Gal |first2=Andreas |last3=Franz |first3=Michael |date=April 2005 |title=Supporting software composition at the programming language level |journal=Science of Computer Programming |volume=56 |issue=1–2 |pages=41–57 |publisher=Elsevier B.V. |doi=10.1016/j.scico.2004.11.004|doi-access=free }} Retrieved 18 January 2021.</ref><ref>{{Cite book |last1=Franz |first1=Michael |last2=Fröhlich |first2=Peter H. |last3=Kistler |first3=Thomas |date=20 November 1999 |chapter=Towards language support for component-oriented real-time programming |title=Proceedings: Fifth International Workshop on Object-Oriented Real-Time Dependable Systems |pages=125–129 |publisher=[[Institute of Electrical and Electronics Engineers]] (IEEE) |doi=10.1109/WORDSF.1999.842343 |isbn=0-7695-0616-X|s2cid=6891092 }} Retrieved 21 January 2021.</ref> and ''[[Obliq]]'' carry Oberon methods into specialized areas.
Later .NET development efforts at ETHZ focused on a new language named [[Zonnon]]. This includes the features of Oberon and restores some from Pascal (enumerated types, built-in IO) but has some syntactic differences. Other features include support for active objects, operator overloading, and exception handling.
Line 239 ⟶ 242:
===General===
* ''[https://web.archive.org/web/20191219125640/http://www.ethoberon.ethz.ch/ Official website (latest available copy at archive org)]'' at ETH-Zürich
* ''[
* ''[
* ''[
* ''[http://people.inf.ethz.ch/wirth/ProjectOberon1992.pdf Project Oberon, The Design of an Operating System and a Compiler]'', book in PDF by Niklaus Wirth and Jürg Gutknecht, 2005 Edition
* ''[https://web.archive.org/web/20130529020132/http://www.ethoberon.ethz.ch/genealogy.html Oberon Language Genealogy]''
* ''[
* ''[
* ''[
* ''[
* ''[https://github.com/rochus-keller/Oberon Free Oberon-07 IDE]'' Free Oberon-07 IDE for Windows, Macintosh, and Linux with syntax colouring, semantic navigation and source code debugger
* ''[https://www.drdobbs.com/architecture-and-design/the-oberon-programming-language/184409405 Oberon article by Joseph Templ]'' in the January 1994 issue of Dr.Dobbs
===Evolution of Oberon===
* ''[
* ''[
* ''[
* ''[
* ''[
* ''[
* ''[https://web.archive.org/web/20110515111149/http://www.oberon.ch/pdf/CP-New.pdf What's New in Component Pascal]'' (Changes from Oberon-2 to CP), Pfister (2001)
|