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

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

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

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

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

ओबेरॉन-07
ओबेरॉन -07, 2007 में निकलॉस विर्थ द्वारा परिभाषित और 2008, 2011, 2013, 2014, 2015 और 2016 में संशोधित ओबेरॉन -2 के बजाय ओबेरॉन के मूल संस्करण पर आधारित है। मुख्य परिवर्तन हैं: स्पष्ट सांख्यिक रूपांतरण फ़ंक्शन (उदा.,  और  ) का प्रयोग करना चाहिए, ,   और   कथन छोड़े गए,   बयानों को बढ़ाया गया,   स्टेटमेंट का उपयोग टाइप एक्सटेंशन परीक्षण के लिए किया जा सकता है,   बयानों को सिर्फ एक फ़ंक्शन के अंत से जोड़ा जा सकता है, आयातित चर और संरचित मान पैरामीटर सिर्फ-पढ़ने के लिए हैं और सरणियों को उपयोग किए बिना असाइन किया जा सकता है. कई अलग-अलग कंप्यूटर सिस्टम के साथ उपयोग के लिए ओबेरॉन-07 कंपाइलर विकसित किए गए हैं। Wirth का कंपाइलर अपने स्वयं के डिज़ाइन के एक कम किए गए निर्देश समुच्चय कंप्यूटर (RISC) प्रोसेसर को लक्षित करता है जिसका उपयोग Xilinx क्षेत्र में प्रोग्राम की जा सकने वाली द्वार श्रंखला (FPGA) स्पार्टन-3 बोर्ड पर परियोजना ओबेरॉन ऑपरेटिंग सिस्टम के 2013 संस्करण को प्रयुक्त करने के लिए किया गया था। FPGA Spartan-6, Spartan-7, Artix-7 और Windows के लिए एक RISC एम्यूलेटर (Linux और macOS पर संकलित, और Windows के लिए उपलब्ध बायनेरिज़) के लिए RISC प्रोसेसर के पोर्ट भी सम्मिलित हैं। OBNC सी के माध्यम से संकलित करता है और किसी भी पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस (POSIX) संगत ऑपरेटिंग सिस्टम पर इस्तेमाल किया जा सकता है। व्यावसायिक Astrobe कार्यान्वयन 32-बिट ARM Cortex-M3, M4 और M7 माइक्रोकंट्रोलर्स को लक्षित करता है। Patchouli कंपाइलर 64-बिट विंडोज बायनेरिज़ बनाता है। Oberon-07M 32-बिट विंडोज बायनेरिज़ बनाता है और भाषा के संशोधन 2008 को प्रयुक्त करता है। Akron's विंडोज और लिनक्स दोनों के लिए बायनेरिज़ बनाता है। OberonJS ओबेरॉन का जावास्क्रिप्ट में अनुवाद करता है। ओबेरॉन के लिए ऑनलाइन आईडीई है। oberonc जावा वर्चुअल मशीन के लिए एक कार्यान्वयन है।

सक्रिय ओबेरॉन
सक्रिय ओबेरॉन अभी तक ओबेरॉन का एक और संस्करण है, जो ऑब्जेक्ट्स (ऑब्जेक्ट-केंद्रित पहुंच सुरक्षा और स्थानीय गतिविधि नियंत्रण के साथ), सिस्टम-संरक्षित अभिकथन, प्रीमेप्टिव प्राथमिकता शेड्यूलिंग और विधियों के लिए एक परिवर्तित सिंटैक्स जोड़ता है (नाम ओबेरॉन -2 # टाइप-बाउंड प्रक्रियाएं | ओबेरॉन शब्दावली में टाइप-बाउंड प्रक्रियाएं)। ऑब्जेक्ट सक्रिय हो सकते हैं, जिसका अर्थ है कि वे थ्रेड्स या प्रोसेस हो सकते हैं। इसके अलावा, सक्रिय ओबेरॉन के पास ऑपरेटरों (ओवरलोडिंग सहित) को प्रयुक्त करने का एक तरीका है, सरणियों का उपयोग करने के लिए एक उन्नत सिंटैक्स (देखें OberonX भाषा एक्सटेंशन और कार्यवाही 7वें संयुक्त मॉड्यूलर भाषा सम्मेलन 2006 ऑक्सफोर्ड, यूके), और नामस्थानों के बारे में जानते हैं। ऑपरेटिंग सिस्टम A2 (ऑपरेटिंग सिस्टम) (पूर्व में एक्टिव ऑब्जेक्ट सिस्टम (AOS), फिर ब्लूबॉटल), विशेष रूप से कर्नेल (ऑपरेटिंग सिस्टम), विभिन्न सक्रिय वस्तुओं को सिंक्रनाइज़ और समन्वयित करता है।

ETHZ ने सक्रिय ओबेरॉन जारी किया है जो भाषा के लिए सक्रिय वस्तुओं और उस पर आधारित ऑपरेटिंग सिस्टम (एक्टिव ऑब्जेक्ट सिस्टम (AOS), ब्लूबॉटल, A2) और पर्यावरण (JDK, HTTP, FTP, आदि) का समर्थन करता है। ETHZ के कई पूर्व डिजाइनों की तरह, दोनों के संस्करण इंटरनेट पर डाउनलोड के लिए उपलब्ध हैं। 2003 तक, समर्थित सेंट्रल प्रोसेसिंग यूनिट्स (सीपीयू) में सिंगल और डुअल कोर x86 और स्ट्रांगएआरएम सम्मिलित हैं।

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

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

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

यह भी देखें

 * ओबेरॉन (ऑपरेटिंग सिस्टम)
 * 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 Windows, Macintosh, और Linux के लिए सिंटैक्स कलरिंग, सिमेंटिक नेविगेशन और सोर्स कोड डीबगर के साथ मुफ़्त Oberon-07 IDE
 * जोसेफ टेम्पल द्वारा ओबेरॉन लेख जनवरी 1994 में डॉ. डोब्स के अंक में

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

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

संदर्भ
Oberon