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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

सामान्य

 * आधिकारिक वेबसाइट (पुरालेख संगठन पर नवीनतम उपलब्ध प्रति) ETH-Zürich पर
 * Niklaus Wirth's Oberon Page ETH-Zürich पर
 * ओबेरॉन पेज SSW, लिंज़ में
 * ओबेरॉन: द प्रोग्रामिंग लैंग्वेज उल्म में
 * परियोजना ओबेरॉन, द डिज़ाइन ऑफ़ एन ऑपरेटिंग सिस्टम एंड ए कम्पाइलर, निकलॉस विर्थ और जर्ग गुटनेच द्वारा पीडीएफ़ में बुक, 2005 संस्करण
 * ओबेरॉन भाषा वंशावली
 * एस्ट्रोब एआरएम ओबेरॉन-07 डेवलपमेंट सिस्टम
 * HP OpenVMS Alpha के लिए ओबेरॉन सिस्टम V4 सोर्स कोड के साथ ऊपर की ओर संगत 64 बिट एड्रेसिंग
 * 64 बिट ओबेरॉन-2 कंपाइलर एचपी ओपनवीएमएस अल्फा के लिए
 * ऑक्सफोर्ड ओबेरॉन-2 कंपाइलर और इसके उपयोगकर्ता नियमावली
 * Free Oberon-07 IDE विंडोज, Macintosh, और लिनक्स के लिए सिंटैक्स कलरिंग, सिमेंटिक नेविगेशन और सोर्स कोड डीबगर के साथ मुफ़्त Oberon-07 IDE
 * जोसेफ टेम्पल द्वारा ओबेरॉन लेख जनवरी 1994 में डॉ. डोब्स के अंक में

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

 * मोडुला-2 और ओबेरॉन विर्थ (2005)
 * प्रोग्रामिंग लैंग्वेज ओबेरॉन विर्थ, (1988/90)
 * प्रोग्रामिंग भाषा ओबेरॉन (ओबेरॉन-7, संशोधित ओबेरॉन) विर्थ, (2016, सबसे वर्तमान भाषा रिपोर्ट)
 * ओबेरॉन-07 और ओबेरॉन के बीच अंतर विर्थ (2011)
 * प्रोग्रामिंग लैंग्वेज ओबेरॉन-2 एच. मोसेनबॉक, एन. विर्थ, इंस्टीट्यूट फर कंप्यूटरसिस्टम, ईटीएच ज्यूरिख, जनवरी 1992
 * ओबेरॉन और ओबेरॉन-2 के बीच अंतर मोसेनबॉक और विर्थ (1991)
 * कंपोनेंट पास्कल में नया क्या है (ओबेरॉन-2 से सीपी में बदलाव), फिस्टर (2001)

संदर्भ
Oberon