ओबेरॉन (प्रोग्रामिंग भाषा)

From Vigyanwiki
ओबेरॉन
File:ओबेरॉन प्रोग्रामिंग भाषा लोगो.एसवीजी
Paradigmsअनिवार्य, संरचित, मॉड्यूलर, वस्तु-उन्मुख
परिवारविर्थ ओबेरॉन
द्वारा डिज़ाइन किया गयानिकलॉस विर्थ
Developerईटीएच ज्यूरिख
पहली प्रस्तुति1987; 37 years ago (1987)
Stable release
ओबेरॉन-07 / 6 March 2020; 4 years ago (2020-03-06)
टाइपिंग अनुशासनप्रबल, हाइब्रिड (स्थिर और गतिशील)
स्कोपलेक्सिकल
प्लेटफॉर्मएआरएम, स्ट्रांगएआरएम; आईए-32, एक्स86-64; स्पार्क, सेरेस (एनएस32032)
ओएसविंडोज़, लिनक्स, सोलारिस, उत्कृष्ट मैक ओएस, अटारी टीओएस, अमीगाओएस
वेबसाइटwww.projectoberon.com
Influenced by
मॉड्यूला-2
Influenced
Oberon-2, Oberon-07, Active Oberon, Component Pascal, Zonnon, Go, Nim

ओबेरॉन एक सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है जिसे पहली बार निकलॉस विर्थ द्वारा 1987 में प्रकाशित किया गया था और एल्गोरिदम भाषा जैसी भाषाओं (यूलर, एल्गोरिदम भाषा डब्ल्यू, पास्कल, मोडुला और मोडुला-2) के विर्थियन परिवार के नवीनतम सदस्य हैं।[1][2][3][4] ओबेरॉन पास्कल (प्रोग्रामिंग लैंग्वेज) के प्रत्यक्ष आनुक्रमिक मोडुला -2 की शक्ति को बढ़ाने और साथ ही साथ इसकी जटिलता को कम करने के लिए एक केंद्रित प्रयास का परिणाम था। इसकी प्रमुख नई विशेषता रिकॉर्ड प्रकार के प्रकार के विस्तार की अवधारणा है।[5] यह सम्मिलित लोगों के आधार पर नए डेटा प्रकारों के निर्माण की स्वीकृति देता है और डेटा के दृढ़ता से स्थिर टाइपिंग के प्रमाण से विचलित होकर उन्हें संबंधित करता है। प्रारूप का विस्तार विर्थ की इन्हेरिटेन्स का तरीका है जो मूल साइट के दृष्टिकोण को दर्शाता है। ओबेरॉन को एक ऑपरेटिंग सिस्टम के कार्यान्वयन के भाग के रूप में विकसित किया गया था, जिसे स्विट्ज़रलैंड के ईटीएच ज्यूरिख में ओबेरॉन (ऑपरेटिंग सिस्टम) भी कहा जाता है। यह नाम अरुण ग्रह ग्रह के चंद्रमा से लिया गया है, जिसका नाम ओबेरॉन (चंद्रमा) रखा गया है।

ओबेरॉन अभी भी विर्थ द्वारा बनाए रखा गया है और नवीनतम परियोजना ओबेरॉन कंपाइलर अपडेट दिनांक 6 मार्च 2020 है।[6]


डिजाइन

ओबेरॉन को अल्बर्ट आइंस्टीन को ध्यान में रखते हुए एक आदर्श वाक्य के साथ डिजाइन किया गया है: "वस्तु को जितना संभव हो उतना साधारण बनाएं, लेकिन सरल नहीं।" मुख्य दिशानिर्देश उन सुविधाओं पर ध्यान केंद्रित करना था जो मूल और आवश्यक हैं और अल्पकालिक समस्याओ को छोड़ देना है। एक अन्य कारक C++ और एडीए (प्रोग्रामिंग भाषा) जैसी भाषाओं में जटिलता के विकास की मान्यता थी। इनके विपरीत, ओबेरॉन भाषा का विस्तार करने के लिए लाइब्रेरी (कम्प्यूटिंग) अवधारणा के उपयोग पर जोर देता है। गणना और उपश्रेणी प्रकार, जो मोडुला -2 में सम्मिलित थे, और विलोपित थे, और समुच्चय प्रकार पूर्णांकों के समुच्चय तक सीमित हैं। सभी आयातित वस्तुओं को मॉड्यूल के नाम से योग्य होना चाहिए जहां उन्हें घोषित किया गया है। निम्न-स्तरीय सुविधाओं को सिर्फ एक मॉड्यूल में उपयोग करने की स्वीकृति देकर हाइलाइट किया जाता है जिसमें इसकी इम्पोर्ट सूची में पहचानकर्ता प्रणाली सम्मिलित होती है। कठिन प्रारूप की जाँच, यहाँ तक कि मॉड्यूल में भी, और रनटाइम (कार्यक्रम जीवनचक्र चरण) पर सूचकांक जाँच, शून्य पॉइंटर जाँच, और सुरक्षित प्रकार की विस्तार अवधारणा सामान्य रूप से प्रोग्रामिंग को सिर्फ भाषा के नियमों पर निर्भर करने की स्वीकृति देती है।

इस योजना का उद्देश्य एक ऐसी भाषा का निर्माण करना था जो सीखना आसान हो, प्रयुक्त करने में सामान्य हो और बहुत कुशल हो। ओबेरोन कंपाइलर्स को कॉम्पैक्ट और तीव्रता के रूप में देखा गया है, जबकि व्यवसायिक कंपाइलर्स के लिए तुलनीय कोड गुणवत्ता प्रदान करते हैं।[7]


विशेषताएं

ओबेरॉन भाषा की विशेषताओं में सम्मिलित हैं:[8]

  • अपरकेस कीवर्ड के साथ संवेदनशील स्थिति सिंटैक्स
  • टाइप परीक्षण के साथ टाइप-एक्सटेंशन
  • मॉड्यूल और अलग संकलन
  • स्ट्रिंग संचालन
  • असुरक्षित कोड को अलग करना
  • सिस्टम प्रोग्रामिंग के लिए समर्थन

वस्तु-उन्मुख

ओबेरॉन अमूर्त और विषम संरचनाओं के निर्माण के लिए रिकॉर्ड प्रकारों के विस्तार का समर्थन करता है। बाद की भाषाओ, ओबेरॉन -2 और सक्रिय ओबेरॉन के विपरीत, मूल ओबेरॉन में एक भाषा सुविधा के रूप में प्रेषण तंत्र का अभाव है, लेकिन यह एक प्रोग्रामिंग तकनीक या डिज़ाइन पैटर्न के रूप में है। यह वस्तु-उन्मुख प्रोग्रामिंग में बहुत नम्यता देता है। ओबेरॉन ऑपरेटिंग सिस्टम में, डिस्पैच कॉल के लिए दो प्रोग्रामिंग तकनीकों का एक साथ उपयोग किया जाता है: मेथड सूट और मैसेज हैंडलर।

विधि (मेथड) सूट

इस तकनीक में, सबरूटीन वेरिएबल (कंप्यूटर विज्ञान) की एक तालिका परिभाषित की जाती है और इस प्रकार का एक वैश्विक चर विस्तारित मॉड्यूल में घोषित किया जाता है और सामान्य मॉड्यूल में वापस सौंपा जाता है:

MODULE Figures; (* Abstract module *)

TYPE
 Figure* = POINTER TO FigureDesc;
 Interface* = POINTER TO InterfaceDesc;

 InterfaceDesc* = RECORD
      draw*  : PROCEDURE (f : Figure);
      clear* : PROCEDURE (f : Figure);
      mark*  : PROCEDURE (f : Figure);
      move*  : PROCEDURE (f : Figure; dx, dy : INTEGER);
 END;

 FigureDesc* = RECORD
      if : Interface;
 END;

PROCEDURE Init* (f : Figure; if : Interface);
BEGIN
 f.if := if
END Init;

PROCEDURE Draw* (f : Figure);
BEGIN
 f.if.draw(f)
END Draw;

(* Other procedures here *)

END Figures.

हम सामान्य प्रकार के चित्र को एक विशिष्ट आकार में विस्तारित करते हैं:

MODULE Rectangles;

IMPORT Figures;

TYPE
 Rectangle* = POINTER TO RectangleDesc;

 RectangleDesc* = RECORD
      (Figures.FigureDesc)
      x, y, w, h : INTEGER;
 END;

VAR
 if : Figures.Interface;

PROCEDURE New* (VAR r : Rectangle);
BEGIN
 NEW(r);
 Figures.Init(r, if)
END New;

PROCEDURE Draw* (f : Figure);
 VAR
      r : Rectangle;
BEGIN
 r := f(Rectangle); (* f AS Rectangle *)
 (* ... *)
END Draw;

(* Other procedures here *)

BEGIN (* Module initialisation *)
 NEW(if);
 if.draw  := Draw;
 if.clear := Clear;
 if.mark  := Mark;
 if.move  := Move
END Rectangles.

गतिशील प्रेषण केवल आंकड़े मॉड्यूल में प्रक्रियाओं के माध्यम से किया जाता है जो सामान्य मॉड्यूल है।

संदेश (मैसेज) हैंडलर

इस तकनीक में विधियों के समुच्चय को एक प्रक्रिया से परिवर्तित करना सम्मिलित है, जो विभिन्न विधियों में पहचान करता है:

MODULE Figures; (* Abstract module *)

TYPE
 Figure* = POINTER TO FigureDesc;

 Message* = RECORD END;
 DrawMsg* = RECORD (Message) END;
 ClearMsg* = RECORD (Message) END;
 MarkMsg* = RECORD (Message) END;
 MoveMsg* = RECORD (Message) dx*, dy* : INTEGER END;

 Handler* = PROCEDURE (f : Figure; VAR msg : Message);

 FigureDesc* = RECORD
      (* Abstract *)
      handle : Handler;
 END;

PROCEDURE Handle* (f : Figure; VAR msg : Message);
BEGIN
 f.handle(f, msg)
END Handle;

PROCEDURE Init* (f : Figure; handle : Handler);
BEGIN
 f.handle := handle
END Init;

END Figures.

हम सामान्य प्रकार के चित्र को एक विशिष्ट आकार में विस्तारित करते हैं:

MODULE Rectangles;

IMPORT Figures;

TYPE
 Rectangle* = POINTER TO RectangleDesc;

 RectangleDesc* = RECORD
      (Figures.FigureDesc)
      x, y, w, h : INTEGER;
 END;

PROCEDURE Draw* (r : Rectangle);
BEGIN
 (* ... *)
END Draw;

(* Other procedures here *)

PROCEDURE Handle* (f: Figure; VAR msg: Figures.Message);
 VAR
      r : Rectangle;
BEGIN
 r := f(Rectangle);
 IF msg IS Figures.DrawMsg THEN Draw(r)
 ELSIF msg IS Figures.MarkMsg THEN Mark(r)
 ELSIF msg IS Figures.MoveMsg THEN Move(r, msg(Figures.MoveMsg).dx, msg(Figures.MoveMsg).dy)
 ELSE (* ignore *)
 END
END Handle;

PROCEDURE New* (VAR r : Rectangle);
BEGIN
 NEW(r);
 Figures.Init(r, Handle)
END New;

END Rectangles.

ओबेरॉन ऑपरेटिंग सिस्टम में इन दोनों तकनीकों का उपयोग गतिशील प्रेषण के लिए किया जाता है। पहले वाले का उपयोग विधियों के ज्ञात समुच्चय के लिए किया जाता है; दूसरे का उपयोग एक्सटेंशन मॉड्यूल में घोषित किसी भी नए तरीके के लिए किया जाता है। उदाहरण के लिए, यदि विस्तार मॉड्यूल आयत एक नई घूर्णन () प्रक्रिया को प्रयुक्त करने के लिए थे, तो आंकड़े मॉड्यूल के अंदर इसे सिर्फ एक संदेश हैंडलर के माध्यम से ही संबोधित किया जा सकता था।

कार्यान्वयन और प्रकार

ओबेरॉन

ओबेरॉन (भाषा) और ओबेरॉन (ऑपरेटिंग सिस्टम) का बिना कीमत वाला कार्यान्वयन इंटरनेट पर पाया जा सकता है (कई ईटीएचजेड से ही हैं)।

ओबेरॉन -2

पहले जारी किए गए विनिर्देशन में कुछ बदलाव किए गए थे। उदाहरण के लिए, वस्तु-उन्मुख प्रोग्रामिंग (ओओपी) सुविधाएँ जोड़ी गईं FOR लूप पुनर्नियुक्त किया गया। परिणाम ओबेरॉन -2 था। एक प्रकाशन, मूल ओबेरॉन नाम से जिसमें एक ऑपरेटिंग सिस्टम सम्मिलित है, और अंतर्राष्ट्रीय व्यापार मशीन पर्सनल कंप्यूटर संगत क्लास हार्डवेयर पर प्रत्यक्ष रूप से बूट कर सकता है। ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख (ईटीएचजेड) में कुछ सामान्य नेटवर्क समर्थित तकनीक-संबंधित एक्सटेंशन को जोड़ने के साथ ओबेरॉन का नेटवर्क समर्थित तकनीक कार्यान्वयन भी विकसित किया गया था। 1993 में, एक ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख स्पिन-ऑफ़ कंपनी ने ओबेरोन -2 की एक भाषा ओबेरॉन-एल नाम से विक्रय में लाई। 1997 में इसका नाम बदलकर कंपोनेंट पास्कल कर दिया गया।

ईटीएच द्वारा विकसित ओबेरॉन -2 कंपाइलर्स में माइक्रोसॉफ़्ट विंडोज़, लिनक्स, सोलारिस (ऑपरेटिंग सिस्टम) और उत्कृष्ट मैकिंटोश ऑपरेटिंग सिस्टम के संस्करण सम्मिलित हैं। अटारी टीओएस और एमिगाओएस सहित कुछ अन्य ऑपरेटिंग सिस्टम के लिए अन्य स्रोतों से कार्यान्वयन सम्मिलित हैं।

मोसेनबॉक और विर्थ संदर्भ में एक के आधार पर मैनचेस्टर विश्वविद्यालय, यूके के स्टीफन जे बेवन द्वारा ओबेरॉन -2 लेक्स (सॉफ्टवेयर) स्कैनर और वाईएसीसी पार्सर है। यह संस्करण 1.4 पर है।

अन्य संकलक में ऑक्सफोर्ड ओबेरॉन-2[9] सम्मिलित है, जो ओबेरॉन-07 और विशाप ओबेरॉन को भी समझता है।[10] उत्तरार्द्ध जोसेफ टेम्पल के ओबेरॉन से C (प्रोग्रामिंग भाषा) लैंग्वेज स्रोत से स्रोत संकलक (ट्रांसपिलर) पर आधारित है, जिसका नाम ओफ्रंट है,[11] जो बदले में ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख में रेजिस क्रेलियर द्वारा विकसित ओपी2 कंपाइलर पर आधारित है।

ओबेरॉन-07

ओबेरॉन -07, 2007 में निकलॉस विर्थ द्वारा परिभाषित और 2008, 2011, 2013, 2014, 2015 और 2016 में संशोधित ओबेरॉन -2 के अतिरिक्त ओबेरॉन के मूल संस्करण पर आधारित है। मुख्य परिवर्तन हैं: स्पष्ट सांख्यिक रूपांतरण फ़ंक्शन (उदाहरण, FLOOR और FLT) का प्रयोग करना चाहिए, WITH, LOOP और EXIT स्टेटमेंट छोड़े गए थे, WHILE स्टेटमेंट्स को बढ़ाया गया था, CASE स्टेटमेंट का उपयोग टाइप एक्सटेंशन परीक्षण के लिए किया जा सकता है, RETURN स्टेटमेंट्स को सिर्फ एक फ़ंक्शन के अंत से जोड़ा जा सकता है, आयातित चर और संरचित मान पैरामीटर सिर्फ-पढ़ने के लिए हैं और सरणियों को COPYउपयोग किए बिना निर्दिष्ट किया जा सकता है।[12]

कई अलग-अलग कंप्यूटर सिस्टम के साथ उपयोग के लिए ओबेरॉन-07 कंपाइलर विकसित किए गए हैं। विर्थ' का कंपाइलर अपने स्वयं के डिज़ाइन के एक कम निर्देश सेट कंप्यूटर आरआईएससी) प्रोसेसर को लक्षित करता है जिसका उपयोग एक्सिलिनएक्स फील्ड-प्रोग्रामेबल गेट ऐरे (एफपीजीए) स्पार्टन-3 बोर्ड पर परियोजना ओबेरॉन ऑपरेटिंग सिस्टम के 2013 संस्करण को प्रयुक्त करने के लिए किया गया था। फील्ड-प्रोग्रामेबल गेट ऐरे स्पार्टन-6, स्पार्टन-7, आर्टिक्स-7 और विंडोज के लिए एक अल्प निर्देश सेट कंप्यूटर एम्यूलेटर (लिनक्स और मैकिंटोश ऑपरेटिंग सिस्टम पर संकलित, और विंडोज के लिए उपलब्ध बायनेरिज़) के लिए अल्प निर्देश सेट कंप्यूटर प्रोसेसर के पोर्ट भी सम्मिलित हैं। OBNC C के माध्यम से संकलित करता है और किसी भी पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस (पॉज़िक्स) संगत ऑपरेटिंग सिस्टम पर उपयोग किया जा सकता है। व्यावसायिक Astrobe कार्यान्वयन 32-बिट एआरएम कॉर्टेक्स-एम3, एम4 और एम7 माइक्रोकंट्रोलर्स को नियोजित करता है। Patchouli कंपाइलर 64-बिट विंडोज बायनेरिज़ बनाता है। Oberon-07M 32-बिट विंडोज बायनेरिज़ बनाता है और भाषा के संशोधन 2008 को प्रयुक्त करता है। Akron's विंडोज और लिनक्स दोनों के लिए बायनेरिज़ बनाता है। OberonJS ओबेरॉन का जावास्क्रिप्ट में अनुवाद करता है। ओबेरॉन के लिए ऑनलाइन आईडीई है। oberonc जावा वर्चुअल मशीन के लिए एक कार्यान्वयन है।

सक्रिय ओबेरॉन

सक्रिय ओबेरॉन अभी तक ओबेरॉन का एक और संस्करण है, जो ऑब्जेक्ट्स (ऑब्जेक्ट-केंद्रित अभिगम्य सुरक्षा और स्थानीय गतिविधि नियंत्रण के साथ), सिस्टम-संरक्षित अभिकथन, प्रीमेप्टिव प्राथमिकता शेड्यूलिंग और विधियों के लिए एक परिवर्तित सिंटैक्स (ओबेरॉन शब्दावली में टाइप-बाउंड प्रक्रियाओं का नाम) जोड़ता है। ऑब्जेक्ट सक्रिय हो सकते हैं, जिसका अर्थ है कि वे थ्रेड्स या प्रोसेस हो सकते हैं। इसके अतिरिक्त, सक्रिय ओबेरॉन के पास ऑपरेटरों (ओवरलोडिंग सहित) को प्रयुक्त करने का एक तरीका है, सरणियों का उपयोग करने के लिए एक उन्नत सिंटैक्स (7 वें संयुक्त मॉड्यूलर भाषा सम्मेलन 2006 ऑक्सफोर्ड, यूके के ओबेरोनएक्स भाषा एक्सटेंशन और प्रोसेडिंग[13] देखें), और नामस्थानों के बारे में जानते हैं।[14] ऑपरेटिंग सिस्टम A2 (ऑपरेटिंग सिस्टम) (पूर्व में सक्रिय ऑब्जेक्ट सिस्टम (एओएस),[15] फिर ब्लूबॉटल), विशेष रूप से कर्नेल (ऑपरेटिंग सिस्टम), विभिन्न सक्रिय वस्तुओं को सिंक्रनाइज़ और समन्वयित करता है।ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख ने सक्रिय ओबेरॉन प्रकाशित किया है जो भाषा के लिए सक्रिय वस्तुओं और उस पर आधारित ऑपरेटिंग सिस्टम (सक्रिय ऑब्जेक्ट सिस्टम (एओएस), ब्लूबॉटल, A2) और पर्यावरण (जावा विकास किट, हाइपरटेक्स्ट ट्रांसफ़र प्रोटोकॉल, फाइल ट्रांसफर प्रोटोकॉल (एफ़टीपी), आदि) का समर्थन करता है। ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख के कई पूर्व डिजाइनों की तरह, दोनों के संस्करण इंटरनेट पर डाउनलोड के लिए उपलब्ध हैं। 2003 तक, समर्थित सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) में एकल और डुअल कोर x86 और स्ट्रांगएआरएम सम्मिलित हैं।

संबंधित भाषाएं

इस परिवार में भाषाओं पर विकास जारी रहा। ओबेरॉन -2 का एक और विस्तार मूल रूप से ओबेरॉन / एल नाम दिया गया था लेकिन बाद में इसे कंपोनेंट पास्कल (सीपी) नाम दिया गया। कंपोनेंट पास्कल को विंडोज और उत्कृष्ट मैकिंटोश ऑपरेटिंग सिस्टम के लिए ओबेरॉन माइक्रोसिस्टम्स द्वारा ईटीएचजेड की एक व्यवसायिक स्पिन-ऑफ कंपनी और क्वींसलैंड प्रौद्योगिकी विश्वविद्यालय द्वारा नेटवर्क समर्थित तकनीक के लिए विकसित किया गया था। इसके अतिरिक्त, लैगून भाषाएँ[16][17][18] और ओब्लिक भाषाओं में विशेष क्षेत्रों में ओबेरॉन पद्धतियां हैं।

बाद में ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख में नेटवर्क समर्थित तकनीक विकास के प्रयासों ने ज़ोनॉन नामक एक नई भाषा पर ध्यान केंद्रित किया। इसमें ओबेरॉन की विशेषताएं सम्मिलित हैं और कुछ पास्कल (प्रगणित प्रकार, अंतर्निर्मित आईओ) से पुनर्स्थापित करता है लेकिन इसमें कुछ वाक्य रचनात्मक अंतर हैं। अन्य सुविधाओं में सक्रिय वस्तुओं, ऑपरेटर ओवरलोडिंग और एक्सेप्शन हैंडलिंग के लिए समर्थन सम्मिलित है।

ओबेरॉन-वी (मूल रूप से सेनेका नाम, सेनेका द यंगर के नाम पर) सुपर कंप्यूटर, विशेष रूप से वेक्टर या पाइपलाइन (कंप्यूटिंग) संरचना पर संख्यात्मक एप्लीकेशन के लिए डिज़ाइन किए गए ओबेरॉन का डिसेंडेंट (वंशज) है। इसमें ऐरे कंस्ट्रक्टर (सरणी निर्माता) और ALL स्टेटमेंट सम्मिलित हैं।[19]


यह भी देखें

  • ओबेरॉन (ऑपरेटिंग सिस्टम)
  • A2 (ऑपरेटिंग सिस्टम)
  • विकीबुक्स पर ओबेरॉन

संसाधन

सामान्य

ओबेरॉन का विकास

संदर्भ

  1. Wirth, Niklaus (1987). From Modula to Oberon and the programming language Oberon (Report). ETH Technical Reports D-INFK. Vol. Band 82. Wiley. doi:10.3929/ethz-a-005363226.
  2. Wirth, Niklaus (July 1988). "The Programming Language Oberon". Software: Practice and Experience. 18 (7): 661–670. doi:10.1002/spe.4380180706. S2CID 13092279.
  3. Wirth, Niklaus (July 1988). From Modula to Oberon. Software: Practice and Experience (Report). Vol. 18. pp. 671–690.
  4. Wirth, Niklaus (April 1988). "Type Extensions". ACM Transactions on Programming Languages. 10 (2): 204–214. doi:10.1145/42190.46167. S2CID 15829497.
  5. Pountain, D. March 1991. "Modula's Children, Part II: Oberon". Byte. Vol. 16, no. 3. pp. 135–142.
  6. Wirth, Niklaus. "Oberon Change Log". ETH Zurich. Retrieved 16 January 2021.
  7. Mössenböck, Hanspeter. "Compiler Construction: The Art of Niklaus Wirth" (PDF). Johannes Kepler University.
  8. Wirth, Niklaus; Gutknecht, Jürg (1987–2021). "Project Oberon".
  9. Spivey (8 April 2019). "Oxford Oberon-2 compiler". Retrieved 17 January 2021.
  10. dcwbrown (16 June 2020). "Vishap Oberon Compiler". GitHub. Retrieved 17 January 2021.
  11. jtempl (2 January 2020). "Ofront". GitHub. Retrieved 17 January 2021.
  12. Wirth, Niklaus (3 May 2016). The Programming Language Oberon-07 (PDF). ETH Zurich, Department of Computer Science (Report). Retrieved 17 January 2021.
  13. Friedrich, Felix; Gutknecht, Jürg (2006). "Array-Structured Object Types for Mathematical Programming". In Lightfoot, David E.; Szyperski, Clemens (eds.). Modular Programming Languages. Lecture Notes in Computer Science. Vol. 4228. Springer, Berlin Heidelberg. pp. 195–210. doi:10.1007/11860990_13. ISBN 978-3-540-40927-4.
  14. "Proposal for Module Contexts" (PDF).
  15. Muller, Pieter Johannes (2002). The active object system design and multiprocessor implementation (PDF) (PhD). Swiss Federal Institute of Technology, Zürich (ETH Zurich).
  16. Fröhlich, Peter H.; Franz, Michael. On Certain Basic Properties of Component-Oriented Programming Languages (PDF) (Report). University of California, Irvine. Retrieved 18 January 2021.
  17. Fröhlich, Peter H.; Gal, Andreas; Franz, Michael (April 2005). "Supporting software composition at the programming language level". Science of Computer Programming. Elsevier B.V. 56 (1–2): 41–57. doi:10.1016/j.scico.2004.11.004. Retrieved 18 January 2021.
  18. Franz, Michael; Fröhlich, Peter H.; Kistler, Thomas (20 November 1999). "Towards language support for component-oriented real-time programming". Proceedings: Fifth International Workshop on Object-Oriented Real-Time Dependable Systems. Institute of Electrical and Electronics Engineers (IEEE). pp. 125–129. doi:10.1109/WORDSF.1999.842343. ISBN 0-7695-0616-X. S2CID 6891092. Retrieved 21 January 2021.
  19. Griesemer, Robert (1993). "A Language for Numerical Applications on Vector Computers". Proceedings CONPAR 90: VAPP IV Conference, Diss Nr. 10277. ETH Zurich.