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

From Vigyanwiki
(Created page with "{{Use dmy dates|date=January 2021}} {{Infobox programming language | name = Oberon | logo = Oberon programming language logo.svg | paradigms = Imperative programming|Imperat...")
 
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Use dmy dates|date=January 2021}}
{{Infobox programming language
{{Infobox programming language
| name = Oberon
| name = ओबेरॉन
| logo = Oberon programming language logo.svg
| logo = ओबेरॉन प्रोग्रामिंग भाषा लोगो.एसवीजी
| paradigms = [[Imperative programming|Imperative]], [[Structured programming|structured]], [[Modular programming|modular]], [[Object-oriented programming|object-oriented]]
| paradigms = [[अनिवार्य प्रोग्रामिंग|अनिवार्य]], [[संरचित प्रोग्रामिंग|संरचित]], [[मॉड्यूलर प्रोग्रामिंग|मॉड्यूलर]], [[वस्तु-उन्मुख प्रोग्रामिंग|वस्तु-उन्मुख]]
| family = [[Niklaus Wirth|Wirth]] Oberon
| family = [[निकलॉस विर्थ|विर्थ]] ओबेरॉन
| designer = [[Niklaus Wirth]]
| designer = [[निकलॉस विर्थ]]
| developer = [[ETH Zurich]]
| developer = [[ईटीएच ज्यूरिख]]
| released = {{Start date and age|1987}}
| released = {{Start date and age|1987}}
| latest release version = Oberon-07
| latest release version = ओबेरॉन-07
| latest release date = {{Start date and age|2020|03|06|df=yes}}
| latest release date = {{Start date and age|2020|03|06|df=yes}}
| typing = [[Strong and weak typing|Strong]], hybrid ([[Static typing|static]] and [[Dynamic typing|dynamic]])
| typing = [[प्रबल और दुर्बल टाइपिंग|प्रबल]], हाइब्रिड ([[स्थिरटाइपिंग|स्थिर]] और [[गतिशील टाइपिंग|गतिशील]])
| scope = [[Scope (computer science)|Lexical]]
| scope = [[विस्तार (कंप्यूटर विज्ञान)|लेक्सिकल]]
| programming language =  
| programming language =  
| platform = [[ARM architecture|ARM]], [[StrongARM]]; [[IA-32]], [[x86-64]]; [[SPARC]], [[Ceres (workstation)|Ceres]] ([[NS32000|NS32032]])
| platform = [[एआरएम संरचना|एआरएम]], [[स्ट्रांगएआरएम]]; [[आईए-32]], [[एक्स86-64]]; [[स्पार्क]], [[सेरेस (वर्कस्टेशन)|सेरेस]] ([[एनएस32000|एनएस32032]])
| operating system = [[Microsoft Windows|Windows]], [[Linux]], [[Solaris (operating system)|Solaris]], [[classic Mac OS]], [[Atari TOS]], [[AmigaOS]]
| operating system = [[माइक्रोसॉफ़्ट विंडोज़|विंडोज़]], [[लिनक्स]], [[सोलारिस (ऑपरेटिंग सिस्टम)|सोलारिस]], [[उत्कृष्ट मैक ओएस]], [[अटारी टीओएस]], [[अमीगाओएस]]
| license =  
| license =  
| file ext =  
| file ext =  
Line 21: Line 20:
| implementations =  
| implementations =  
| dialects =  
| dialects =  
| influenced by = [[Modula-2]]
| influenced by = [[मॉड्यूला-2]]
| influenced = [[Oberon-2]], [[#Oberon-07|Oberon-07]], [[Active Oberon]], [[Component Pascal]], [[Zonnon]], [[Go (programming language)|Go]], [[Nim (programming language)|Nim]]
| influenced = [[Oberon-2]], [[#Oberon-07|Oberon-07]], [[Active Oberon]], [[Component Pascal]], [[Zonnon]], [[Go (programming language)|Go]], [[Nim (programming language)|Nim]]
}}
}}
ओबेरॉन एक सामान्य-उद्देश्य वाली [[प्रोग्रामिंग भाषा]] है जिसे पहली बार [[निकोलस विर्थ]] द्वारा 1987 में प्रकाशित किया गया था और एल्गोल जैसी भाषाओं ([[यूलर (प्रोग्रामिंग भाषा)]], एएलजीओएल डब्ल्यू, [[पास्कल (प्रोग्रामिंग भाषा)]], [[मापांक]] और [[मॉड्यूल-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.4380180706 |s2cid=13092279 }}</ref><ref name=M2O>{{Cite report |last=Wirth |first=Niklaus |date=July 1988 |title=From Modula to Oberon |journal=Software: Practice and Experience |volume=18 |issue=7 |pages=671–690}}</ref><ref name=TE>{{Cite journal |last=Wirth |first=Niklaus |date=April 1988 |title=Type Extensions |journal=ACM Transactions on Programming Languages |volume=10 |issue=2 |pages=204–214|doi=10.1145/42190.46167 |s2cid=15829497 }}</ref> ओबेरॉन पास्कल (प्रोग्रामिंग लैंग्वेज) के प्रत्यक्ष उत्तराधिकारी मोडुला -2 की शक्ति को बढ़ाने और साथ ही साथ इसकी जटिलता को कम करने के लिए एक केंद्रित प्रयास का परिणाम था। इसकी प्रमुख नई विशेषता रिकॉर्ड प्रकार के प्रकार के विस्तार की अवधारणा है।<ref>{{Cite magazine |last=Pountain |first=D. March 1991 |title=Modula's Children, Part II: Oberon |url=https://archive.org/stream/byte-magazine-1991-03/1991_03_BYTE_16-03_Network_Management#page/n187/ |magazine=[[Byte (magazine)|Byte]] |volume=16 |issue=3 |pages=135–142}}</ref> यह मौजूदा लोगों के आधार पर नए डेटा प्रकारों के निर्माण की अनुमति देता है और डेटा के कड़ाई से [[स्थिर टाइपिंग]] के हठधर्मिता से विचलित होकर उन्हें संबंधित करता है। प्रकार का विस्तार Wirth की विरासत का तरीका है जो मूल साइट के दृष्टिकोण को दर्शाता है। ओबेरॉन को एक [[ऑपरेटिंग सिस्टम]] के कार्यान्वयन के हिस्से के रूप में विकसित किया गया था, जिसे [[स्विट्ज़रलैंड]] के [[ईटीएच ज्यूरिख]] में [[ओबेरॉन (ऑपरेटिंग सिस्टम)]] भी कहा जाता है। यह नाम [[अरुण ग्रह]] ग्रह के चंद्रमा से लिया गया है, जिसका नाम [[ओबेरॉन (चंद्रमा)]] रखा गया है।


ओबेरॉन अभी भी विर्थ द्वारा बनाए रखा गया है और नवीनतम प्रोजेक्ट ओबेरॉन कंपाइलर अपडेट दिनांक 6 मार्च 2020 है।<ref>{{cite web |last=Wirth |first=Niklaus |title=Oberon Change Log |url=https://www.inf.ethz.ch/personal/wirth/news.txt |publisher=ETH Zurich |access-date=16 January 2021}}</ref>
ओबेरॉन एक सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है जिसे पहली बार निकलॉस विर्थ द्वारा 1987 में प्रकाशित किया गया था और एल्गोरिदम भाषा जैसी भाषाओं (यूलर, एल्गोरिदम भाषा डब्ल्यू, पास्कल, मोडुला और मोडुला-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.4380180706 |s2cid=13092279 }}</ref><ref name=M2O>{{Cite report |last=Wirth |first=Niklaus |date=July 1988 |title=From Modula to Oberon |journal=Software: Practice and Experience |volume=18 |issue=7 |pages=671–690}}</ref><ref name=TE>{{Cite journal |last=Wirth |first=Niklaus |date=April 1988 |title=Type Extensions |journal=ACM Transactions on Programming Languages |volume=10 |issue=2 |pages=204–214|doi=10.1145/42190.46167 |s2cid=15829497 }}</ref> ओबेरॉन पास्कल (प्रोग्रामिंग लैंग्वेज) के प्रत्यक्ष आनुक्रमिक मोडुला -2 की शक्ति को बढ़ाने और साथ ही साथ इसकी जटिलता को कम करने के लिए एक केंद्रित प्रयास का परिणाम था। इसकी प्रमुख नई विशेषता रिकॉर्ड प्रकार के प्रकार के विस्तार की अवधारणा है।<ref>{{Cite magazine |last=Pountain |first=D. March 1991 |title=Modula's Children, Part II: Oberon |url=https://archive.org/stream/byte-magazine-1991-03/1991_03_BYTE_16-03_Network_Management#page/n187/ |magazine=[[Byte (magazine)|Byte]] |volume=16 |issue=3 |pages=135–142}}</ref> यह सम्मिलित लोगों के आधार पर नए डेटा प्रकारों के निर्माण की स्वीकृति देता है और डेटा के दृढ़ता से [[स्थिर टाइपिंग]] के प्रमाण से विचलित होकर उन्हें संबंधित करता है। प्रारूप का विस्तार विर्थ की इन्हेरिटेन्स का तरीका है जो मूल साइट के दृष्टिकोण को दर्शाता है। ओबेरॉन को एक [[ऑपरेटिंग सिस्टम]] के कार्यान्वयन के भाग के रूप में विकसित किया गया था, जिसे [[स्विट्ज़रलैंड]] के [[ईटीएच ज्यूरिख]] में [[ओबेरॉन (ऑपरेटिंग सिस्टम)]] भी कहा जाता है। यह नाम [[अरुण ग्रह]] ग्रह के चंद्रमा से लिया गया है, जिसका नाम [[ओबेरॉन (चंद्रमा)]] रखा गया है।
 
ओबेरॉन अभी भी विर्थ द्वारा बनाए रखा गया है और नवीनतम परियोजना ओबेरॉन कंपाइलर अपडेट दिनांक 6 मार्च 2020 है।<ref>{{cite web |last=Wirth |first=Niklaus |title=Oberon Change Log |url=https://www.inf.ethz.ch/personal/wirth/news.txt |publisher=ETH Zurich |access-date=16 January 2021}}</ref>




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


इस रणनीति का उद्देश्य एक ऐसी भाषा का निर्माण करना था जो सीखना आसान हो, लागू करने में सरल हो और बहुत कुशल हो। ओबेरोन कंपाइलर्स को कॉम्पैक्ट और तेज़ के रूप में देखा गया है, जबकि वाणिज्यिक कंपाइलर्स के लिए तुलनीय कोड गुणवत्ता प्रदान करते हैं।<ref>{{cite web |last=Mössenböck |first=Hanspeter |title=Compiler Construction: The Art of Niklaus Wirth |url=ftp://ftp.ssw.uni-linz.ac.at/pub/Papers/Moe00b.pdf |publisher=Johannes Kepler University}}</ref>
इस योजना का उद्देश्य एक ऐसी भाषा का निर्माण करना था जो सीखना आसान हो, प्रयुक्त करने में सामान्य हो और बहुत कुशल हो। ओबेरोन कंपाइलर्स को कॉम्पैक्ट और तीव्रता के रूप में देखा गया है, जबकि व्यवसायिक कंपाइलर्स के लिए तुलनीय कोड गुणवत्ता प्रदान करते हैं।<ref>{{cite web |last=Mössenböck |first=Hanspeter |title=Compiler Construction: The Art of Niklaus Wirth |url=ftp://ftp.ssw.uni-linz.ac.at/pub/Papers/Moe00b.pdf |publisher=Johannes Kepler University}}</ref>




== विशेषताएं ==
== विशेषताएं ==
ओबेरॉन भाषा की विशेषताओं में शामिल हैं:<ref>{{Cite web |last1=Wirth |first1=Niklaus |last2=Gutknecht |first2=Jürg |author-link=Jürg Gutknecht |date=1987–2021 |url=http://www.projectoberon.com/ |title=Project Oberon}}</ref>
ओबेरॉन भाषा की विशेषताओं में सम्मिलित हैं:<ref>{{Cite web |last1=Wirth |first1=Niklaus |last2=Gutknecht |first2=Jürg |author-link=Jürg Gutknecht |date=1987–2021 |url=http://www.projectoberon.com/ |title=Project Oberon}}</ref>
* अपरकेस कीवर्ड के साथ केस सेंसिटिव सिंटैक्स
* अपरकेस कीवर्ड के साथ संवेदनशील स्थिति सिंटैक्स
* टाइप टेस्ट के साथ टाइप-एक्सटेंशन
* टाइप परीक्षण के साथ टाइप-एक्सटेंशन
* मॉड्यूल और अलग संकलन
* मॉड्यूल और अलग संकलन
* स्ट्रिंग ऑपरेशन
* स्ट्रिंग संचालन
* असुरक्षित कोड को अलग करना
* असुरक्षित कोड को अलग करना
* सिस्टम प्रोग्रामिंग के लिए समर्थन
* सिस्टम प्रोग्रामिंग के लिए समर्थन


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


=== विधि सूट ===
=== विधि (मेथड) सूट ===
इस तकनीक में, [[सबरूटीन]] वेरिएबल (कंप्यूटर विज्ञान) की एक तालिका परिभाषित की जाती है और इस प्रकार का एक [[वैश्विक चर]] विस्तारित मॉड्यूल में घोषित किया जाता है और सामान्य मॉड्यूल में वापस सौंपा जाता है:
इस तकनीक में, [[सबरूटीन]] वेरिएबल (कंप्यूटर विज्ञान) की एक तालिका परिभाषित की जाती है और इस प्रकार का एक [[वैश्विक चर]] विस्तारित मॉड्यूल में घोषित किया जाता है और सामान्य मॉड्यूल में वापस सौंपा जाता है:
 
  '''MODULE''' Figures; ''(* Abstract module *)''
  मॉड्यूल आंकड़े; ''<अवधि शैली = रंग: ग्रे>(* सार मॉड्यूल *)</अवधि>''
   
   
  प्रकार
  '''TYPE'''
    फिगर* = पॉइंटर टू फिगरडेस्क;
  Figure* = '''POINTER TO''' FigureDesc;
    इंटरफेस* = इंटरफेसडेस्क के लिए सूचक;
  Interface* = '''POINTER TO''' InterfaceDesc;
   
   
    इंटरफ़ेसडेस्क * = रिकॉर्ड
  InterfaceDesc* = '''RECORD'''
       ड्रा* : प्रक्रिया (: चित्र);
       draw*  : '''PROCEDURE''' (: Figure);
       स्पष्ट* : प्रक्रिया (: चित्र);
       clear* : '''PROCEDURE''' (: Figure);
       निशान * : प्रक्रिया (एफ: चित्र);
       mark*  : '''PROCEDURE''' (: Figure);
       चाल* : प्रक्रिया (f : चित्र; dx, dy : <span style= color: darkblue >INTEGER</span>);
       move*  : '''PROCEDURE''' (: Figure; dx, dy : '''INTEGER''');
    अंत;
  '''END''';
   
   
    फिगरडेस्क* = रिकॉर्ड
  FigureDesc* = '''RECORD'''
       अगर : इंटरफ़ेस;
       if : Interface;
    अंत;
  '''END''';
   
   
  प्रक्रिया Init* (f : चित्र; if : इंटरफ़ेस);
  '''PROCEDURE''' Init* (: Figure; if : Interface);
  शुरू
  '''BEGIN'''
    f.if:= अगर
  f.if := if
  अंत प्रारंभ;
  '''END''' Init;
   
   
  प्रक्रिया ड्रा * (एफ: चित्र);
  '''PROCEDURE''' Draw* (: Figure);
  शुरू
  '''BEGIN'''
    f.if.ड्रा ()
  f.if.draw(f)
  अंत ड्रा;
  '''END''' Draw;
   
   
  ''<span style= color: Grey >(* अन्य प्रक्रियाएं यहां *)</span>''
  ''(* Other procedures here *)''
   
   
  अंत आंकड़े।
  '''END''' Figures.
 
हम सामान्य प्रकार के चित्र को एक विशिष्ट आकार में विस्तारित करते हैं:
हम सामान्य प्रकार के चित्र को एक विशिष्ट आकार में विस्तारित करते हैं:
 
  '''MODULE''' Rectangles;
  मॉड्यूल आयत;
   
   
  आयात के आंकड़े;
  '''IMPORT''' Figures;
   
   
  प्रकार
  '''TYPE'''
    आयत * = आयत के लिए सूचक;
  Rectangle* = '''POINTER TO''' RectangleDesc;
   
   
    रेक्टेंगलडेस्क* = रिकॉर्ड
  RectangleDesc* = '''RECORD'''
       (आंकड़े.फिगरडेस्क)
       (Figures.FigureDesc)
       x, y, w, h : <span style= color: darkblue >INTEGER</span>;
       x, y, w, : '''INTEGER''';
    अंत;
  '''END''';
   
   
  वीएआर
  '''VAR'''
    अगर: आंकड़े। इंटरफ़ेस;
  if : Figures.Interface;
   
   
  प्रक्रिया नया* (VAR r : आयत);
  '''PROCEDURE''' New* ('''VAR''' r : Rectangle);
  शुरू
  '''BEGIN'''
    <span style= color: गहरा नीला >नया</span>(r);
  '''NEW'''(r);
    आंकड़े। इनिट (आर, अगर)
  Figures.Init(r, if)
  अंत नया;
  '''END''' New;
   
   
  प्रक्रिया ड्रा * (एफ: चित्र);
  '''PROCEDURE''' Draw* (: Figure);
    वीएआर
  '''VAR'''
       आर : आयत;
       : Rectangle;
  शुरू
  '''BEGIN'''
    आर : = (आयत); ''<span style= color: Grey >(* f AS Rectangle *)</span>''
  r := f(Rectangle); ''(* f AS Rectangle *)''
    ''<span style= color: Grey >(* ... *)</span>''
  ''(* ... *)''
  अंत ड्रा;
  '''END''' Draw;
   
   
  <span style= color: Grey >(* अन्य प्रक्रियाएं यहां *)</span>
  (* Other procedures here *)
   
   
  BEGIN ''<अवधि शैली = रंग: ग्रे>(* मॉड्यूल आरंभीकरण *)</span>''
  '''BEGIN''' ''(* Module initialisation *)''
    <अवधि शैली= रंग: गहरा नीला >नया</span>(यदि);
  '''NEW'''(if);
    if.draw := ड्रा;
  if.draw  := Draw;
    if.clear:= साफ़;
  if.clear := Clear;
    if.mark := निशान;
  if.mark  := Mark;
    if.move:= हटो
  if.move  := Move
  अंत आयत।
  '''END''' Rectangles.
गतिशील प्रेषण केवल आंकड़े मॉड्यूल में प्रक्रियाओं के माध्यम से किया जाता है जो सामान्य मॉड्यूल है।


[[गतिशील प्रेषण]] केवल फिगर्स मॉड्यूल में प्रक्रियाओं के माध्यम से किया जाता है जो कि सामान्य मॉड्यूल है।
=== संदेश (मैसेज) हैंडलर ===
 
इस तकनीक में विधियों के समुच्चय को एक प्रक्रिया से परिवर्तित करना सम्मिलित है, जो विभिन्न विधियों में पहचान करता है:
=== संदेश हैंडलर ===
  '''MODULE''' Figures; ''(* Abstract module *)''
इस तकनीक में विधियों के सेट को एक प्रक्रिया से बदलना शामिल है, जो विभिन्न विधियों में भेदभाव करता है:
 
  मॉड्यूल आंकड़े; ''<अवधि शैली = रंग: ग्रे>(* सार मॉड्यूल *)</अवधि>''
   
   
  प्रकार
  '''TYPE'''
    फिगर* = पॉइंटर टू फिगरडेस्क;
  Figure* = '''POINTER TO''' FigureDesc;
   
   
    संदेश* = रिकॉर्ड अंत;
  Message* = '''RECORD END''';
    DrawMsg* = रिकॉर्ड (संदेश) END;
  DrawMsg* = '''RECORD''' (Message) '''END''';
    ClearMsg* = रिकॉर्ड (संदेश) END;
  ClearMsg* = '''RECORD''' (Message) '''END''';
    MarkMsg* = रिकॉर्ड (संदेश) END;
  MarkMsg* = '''RECORD''' (Message) '''END''';
    MoveMsg* = रिकॉर्ड (संदेश) dx*, dy* : पूर्णांक END;
  MoveMsg* = '''RECORD''' (Message) dx*, dy* : '''INTEGER''' '''END''';
   
   
    हैंडलर * = प्रक्रिया (एफ: चित्र; वार संदेश: संदेश);
  Handler* = '''PROCEDURE''' (: Figure; '''VAR''' msg : Message);
   
   
    फिगरडेस्क* = रिकॉर्ड
  FigureDesc* = '''RECORD'''
       ''<span style= color:धूसर >(* सार *)</span>''
       ''(* Abstract *)''
       हैंडल : हैंडलर;
       handle : Handler;
    अंत;
  '''END''';
   
   
  प्रक्रिया हैंडल* (f : चित्र; VAR संदेश : संदेश);
  '''PROCEDURE''' Handle* (: Figure; '''VAR''' msg : Message);
  शुरू
  '''BEGIN'''
    एफ हैंडल (एफ, संदेश)
  f.handle(f, msg)
  अंत संभाल;
  '''END''' Handle;
   
   
  प्रक्रिया इनिट * (एफ: चित्र; हैंडल: हैंडलर);
  '''PROCEDURE''' Init* (: Figure; handle : Handler);
  शुरू
  '''BEGIN'''
    f.हैंडल:= हैंडल
  f.handle := handle
  अंत प्रारंभ;
  '''END''' Init;
   
   
  अंत आंकड़े।
  '''END''' Figures.
 
हम सामान्य प्रकार के चित्र को एक विशिष्ट आकार में विस्तारित करते हैं:
हम सामान्य प्रकार के चित्र को एक विशिष्ट आकार में विस्तारित करते हैं:
 
  '''MODULE''' Rectangles;
  मॉड्यूल आयत;
   
   
  आयात के आंकड़े;
  '''IMPORT''' Figures;
   
   
  प्रकार
  '''TYPE'''
    आयत * = आयत के लिए सूचक;
  Rectangle* = '''POINTER TO''' RectangleDesc;
   
   
    रेक्टेंगलडेस्क* = रिकॉर्ड
  RectangleDesc* = '''RECORD'''
       (आंकड़े.फिगरडेस्क)
       (Figures.FigureDesc)
       x, y, w, h : पूर्णांक;
       x, y, w, : INTEGER;
    अंत;
  '''END''';
   
   
  प्रक्रिया ड्रा * (आर: आयत);
  '''PROCEDURE''' Draw* (: Rectangle);
  शुरू
  '''BEGIN'''
  ''<span style= color: Grey >(* ... *)</span>''
  ''(* ... *)''
  अंत ड्रा;
  '''END''' Draw;
   
   
  ''<span style= color: Grey >(* अन्य प्रक्रियाएं यहां *)</span>''
  ''(* Other procedures here *)''
   
   
  प्रोसेस हैंडल* (f: फिगर; VAR msg: फिगर्स.मैसेज);
  '''PROCEDURE''' Handle* (f: Figure; '''VAR''' msg: Figures.Message);
    वीएआर
  '''VAR'''
       आर : आयत;
       : Rectangle;
  शुरू
  '''BEGIN'''
    आर : = (आयत);
  r := f(Rectangle);
    अगर संदेश IS आंकड़े।
  '''IF''' msg '''IS''' Figures.DrawMsg '''THEN''' Draw(r)
    ELSIF संदेश IS आंकड़े। MarkMsg THEN Mark (r)
  '''ELSIF''' msg '''IS''' Figures.MarkMsg '''THEN''' Mark(r)
    ELSIF संदेश IS आंकड़े हैं। मूवएमएसजी तब मूव (आर, संदेश (फिगर्स.मूवएमएसजी) .डीएक्स, संदेश (फिगर्स.मूवएमएसजी) डाई)
  '''ELSIF''' msg '''IS''' Figures.MoveMsg '''THEN''' Move(r, msg(Figures.MoveMsg).dx, msg(Figures.MoveMsg).dy)
    अन्य <विस्तार शैली = रंग: ग्रे> (* उपेक्षा *) </ अवधि>
  '''ELSE''' (* ignore *)
    अंत
  '''END'''
  अंत संभाल;
  '''END''' Handle;
   
   
  प्रक्रिया नया* (VAR r : आयत);
  '''PROCEDURE''' New* ('''VAR''' r : Rectangle);
  शुरू
  '''BEGIN'''
    नया (आर);
  '''NEW'''(r);
    आंकड़े। इनिट (आर, हैंडल)
  Figures.Init(r, Handle)
  अंत नया;
  '''END''' New;
   
   
  अंत आयत।
  '''END''' Rectangles.
 
ओबेरॉन ऑपरेटिंग सिस्टम में इन दोनों तकनीकों का उपयोग गतिशील प्रेषण के लिए किया जाता है। पहले वाले का उपयोग विधियों के ज्ञात समुच्चय के लिए किया जाता है; दूसरे का उपयोग एक्सटेंशन मॉड्यूल में घोषित किसी भी नए तरीके के लिए किया जाता है। उदाहरण के लिए, यदि विस्तार मॉड्यूल आयत एक नई घूर्णन () प्रक्रिया को प्रयुक्त करने के लिए थे, तो आंकड़े मॉड्यूल के अंदर इसे सिर्फ एक संदेश हैंडलर के माध्यम से ही संबोधित किया जा सकता था।
ओबेरॉन ऑपरेटिंग सिस्टम में इन दोनों तकनीकों का उपयोग गतिशील प्रेषण के लिए किया जाता है। पहले वाले का उपयोग विधियों के ज्ञात सेट के लिए किया जाता है; दूसरे का उपयोग एक्सटेंशन मॉड्यूल में घोषित किसी भी नए तरीके के लिए किया जाता है। उदाहरण के लिए, यदि विस्तार मॉड्यूल आयत एक नई घुमाएँ () प्रक्रिया को लागू करने के लिए थे, तो आंकड़े मॉड्यूल के भीतर इसे केवल एक संदेश हैंडलर के माध्यम से ही बुलाया जा सकता था।


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


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


=== ओबेरॉन -2 ===
=== ओबेरॉन -2 ===
{{Main|Oberon-2}}
{{Main|ओबेरॉन -2}}
पहले जारी किए गए स्पेसिफिकेशन में कुछ बदलाव किए गए थे। उदाहरण के लिए, [[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] (OOP) सुविधाएँ जोड़ी गईं <code>FOR</code> लूप बहाल किया गया। नतीजा ओबेरॉन -2 था। एक रिलीज़, [[देशी ओबेरॉन]] नाम से जिसमें एक ऑपरेटिंग सिस्टम शामिल है, और [[आईबीएम पीसी संगत]] क्लास हार्डवेयर पर सीधे बूट कर सकता है। ETHZ में कुछ मामूली .NET-संबंधित एक्सटेंशन के साथ ओबेरॉन का एक .NET Framework|.NET कार्यान्वयन भी विकसित किया गया था। 1993 में, एक ETHZ स्पिन-ऑफ़ कंपनी ने [[ओबेरोन -2]] की एक बोली ओबेरॉन-एल नाम से बाजार में लाई। 1997 में इसका नाम बदलकर [[घटक पास्कल]] कर दिया गया।
पहले जारी किए गए विनिर्देशन में कुछ बदलाव किए गए थे। उदाहरण के लिए, [[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग|वस्तु-उन्मुख प्रोग्रामिंग]] (ओओपी) सुविधाएँ जोड़ी गईं <code>FOR</code> लूप पुनर्नियुक्त किया गया। परिणाम ओबेरॉन -2 था। एक प्रकाशन, मूल ओबेरॉन नाम से जिसमें एक ऑपरेटिंग सिस्टम सम्मिलित है, और अंतर्राष्ट्रीय व्यापार मशीन पर्सनल कंप्यूटर संगत क्लास हार्डवेयर पर प्रत्यक्ष रूप से बूट कर सकता है। ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख (ईटीएचजेड) में कुछ सामान्य नेटवर्क समर्थित तकनीक-संबंधित एक्सटेंशन को जोड़ने के साथ ओबेरॉन का नेटवर्क समर्थित तकनीक कार्यान्वयन भी विकसित किया गया था। 1993 में, एक ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख स्पिन-ऑफ़ कंपनी ने [[ओबेरोन -2]] की एक भाषा ओबेरॉन-एल नाम से विक्रय में लाई। 1997 में इसका नाम बदलकर [[घटक पास्कल|कंपोनेंट पास्कल]] कर दिया गया।


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


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


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


===ओबेरॉन-07===
===ओबेरॉन-07===
ओबेरॉन -07, 2007 में निकलॉस विर्थ द्वारा परिभाषित और 2008, 2011, 2013, 2014, 2015 और 2016 में संशोधित ओबेरॉन -2 के बजाय ओबेरॉन के मूल संस्करण पर आधारित है। मुख्य परिवर्तन हैं: स्पष्ट सांख्यिक रूपांतरण फ़ंक्शन (उदा., <code>FLOOR</code> और <code>FLT</code>) का प्रयोग करना चाहिए, <code>WITH</code>, <code>LOOP</code> और <code>EXIT</code> कथन छोड़े गए, <code>WHILE</code> बयानों को बढ़ाया गया, <code>CASE</code> स्टेटमेंट का उपयोग टाइप एक्सटेंशन टेस्ट के लिए किया जा सकता है, <code>RETURN</code> बयानों को केवल एक फ़ंक्शन के अंत से जोड़ा जा सकता है, आयातित चर और संरचित मान पैरामीटर केवल-पढ़ने के लिए हैं और सरणियों को उपयोग किए बिना असाइन किया जा सकता है <code>COPY</code>.<ref>{{Cite report |last=Wirth |first=Niklaus |date=3 May 2016 |url=https://people.inf.ethz.ch/wirth/Oberon/Oberon07.Report.pdf |title=The Programming Language Oberon-07 |website=ETH Zurich, Department of Computer Science |access-date=17 January 2021}}</ref>
ओबेरॉन -07, 2007 में निकलॉस विर्थ द्वारा परिभाषित और 2008, 2011, 2013, 2014, 2015 और 2016 में संशोधित ओबेरॉन -2 के अतिरिक्त ओबेरॉन के मूल संस्करण पर आधारित है। मुख्य परिवर्तन हैं: स्पष्ट सांख्यिक रूपांतरण फ़ंक्शन (उदाहरण, <code>FLOOR</code> और <code>FLT</code>) का प्रयोग करना चाहिए, <code>WITH</code>, <code>LOOP</code> और <code>EXIT</code> स्टेटमेंट छोड़े गए थे, <code>WHILE</code> स्टेटमेंट्स को बढ़ाया गया था, <code>CASE</code> स्टेटमेंट का उपयोग टाइप एक्सटेंशन परीक्षण के लिए किया जा सकता है, <code>RETURN</code> स्टेटमेंट्स को सिर्फ एक फ़ंक्शन के अंत से जोड़ा जा सकता है, आयातित चर और संरचित मान पैरामीटर सिर्फ-पढ़ने के लिए हैं और सरणियों को <code>COPY</code>उपयोग किए बिना निर्दिष्ट किया जा सकता है।<ref>{{Cite report |last=Wirth |first=Niklaus |date=3 May 2016 |url=https://people.inf.ethz.ch/wirth/Oberon/Oberon07.Report.pdf |title=The Programming Language Oberon-07 |website=ETH Zurich, Department of Computer Science |access-date=17 January 2021}}</ref>
कई अलग-अलग कंप्यूटर सिस्टम के साथ उपयोग के लिए ओबेरॉन-07 कंपाइलर विकसित किए गए हैं। Wirth का कंपाइलर अपने स्वयं के डिज़ाइन के एक कम किए गए निर्देश सेट कंप्यूटर (RISC) प्रोसेसर को लक्षित करता है जिसका उपयोग Xilinx [[क्षेत्र में प्रोग्राम की जा सकने वाली द्वार श्रंखला]] (FPGA) स्पार्टन-3 बोर्ड पर [[प्रोजेक्ट ओबेरॉन]] ऑपरेटिंग सिस्टम के 2013 संस्करण को लागू करने के लिए किया गया था। FPGA Spartan-6, Spartan-7, Artix-7 और Windows के लिए एक RISC एम्यूलेटर (Linux और [[macOS]] पर संकलित, और Windows के लिए उपलब्ध बायनेरिज़) के लिए RISC प्रोसेसर के पोर्ट भी मौजूद हैं। [https://miasap.se/obnc/ OBNC] सी के माध्यम से संकलित करता है और किसी भी पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस ([[POSIX]]) संगत ऑपरेटिंग सिस्टम पर इस्तेमाल किया जा सकता है। व्यावसायिक [http://www.astrobe.com Astrobe] कार्यान्वयन 32-बिट ARM Cortex-M3, M4 और M7 माइक्रोकंट्रोलर्स को लक्षित करता है। [https://github.com/congdm/Patchouli-Compiler Patchouli] कंपाइलर 64-बिट विंडोज बायनेरिज़ बनाता है। [http://www.exaprog.com/ Oberon-07M] 32-बिट विंडोज बायनेरिज़ बनाता है और भाषा के संशोधन 2008 को लागू करता है। [https://sites.google.com/site/oberon07compiler/versii Akron's] विंडोज और लिनक्स दोनों के लिए बायनेरिज़ बनाता है। [http://oberspace.org/oberonjs.html OberonJS] ओबेरॉन का [[जावास्क्रिप्ट]] में अनुवाद करता है। ओबेरॉन के लिए [https://visual.sfu-kras.ru ऑनलाइन आईडीई] है। [https://github.com/lboasso/oberonc oberonc] [[जावा वर्चुअल मशीन]] के लिए एक कार्यान्वयन है।
 
कई अलग-अलग कंप्यूटर सिस्टम के साथ उपयोग के लिए ओबेरॉन-07 कंपाइलर विकसित किए गए हैं। विर्थ' का कंपाइलर अपने स्वयं के डिज़ाइन के एक कम निर्देश सेट कंप्यूटर आरआईएससी) प्रोसेसर को लक्षित करता है जिसका उपयोग एक्सिलिनएक्स फील्ड-प्रोग्रामेबल गेट ऐरे (एफपीजीए) स्पार्टन-3 बोर्ड पर परियोजना ओबेरॉन ऑपरेटिंग सिस्टम के 2013 संस्करण को प्रयुक्त करने के लिए किया गया था। फील्ड-प्रोग्रामेबल गेट ऐरे स्पार्टन-6, स्पार्टन-7, आर्टिक्स-7 और विंडोज के लिए एक अल्प निर्देश सेट कंप्यूटर एम्यूलेटर (लिनक्स और [[macOS|मैकिंटोश ऑपरेटिंग सिस्टम]] पर संकलित, और विंडोज के लिए उपलब्ध बायनेरिज़) के लिए अल्प निर्देश सेट कंप्यूटर प्रोसेसर के पोर्ट भी सम्मिलित हैं। [https://miasap.se/obnc/ OBNC] C के माध्यम से संकलित करता है और किसी भी पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस (पॉज़िक्स) संगत ऑपरेटिंग सिस्टम पर उपयोग किया जा सकता है। व्यावसायिक [http://www.astrobe.com Astrobe] कार्यान्वयन 32-बिट एआरएम कॉर्टेक्स-एम3, एम4 और एम7 माइक्रोकंट्रोलर्स को नियोजित करता है। [https://github.com/congdm/Patchouli-Compiler Patchouli] कंपाइलर 64-बिट विंडोज बायनेरिज़ बनाता है। [http://www.exaprog.com/ Oberon-07M] 32-बिट विंडोज बायनेरिज़ बनाता है और भाषा के संशोधन 2008 को प्रयुक्त करता है। [https://sites.google.com/site/oberon07compiler/versii Akron's] विंडोज और लिनक्स दोनों के लिए बायनेरिज़ बनाता है। [http://oberspace.org/oberonjs.html OberonJS] ओबेरॉन का [[जावास्क्रिप्ट]] में अनुवाद करता है। ओबेरॉन के लिए [https://visual.sfu-kras.ru ऑनलाइन आईडीई] है। [https://github.com/lboasso/oberonc oberonc] [[जावा वर्चुअल मशीन]] के लिए एक कार्यान्वयन है।


=== [[सक्रिय ओबेरॉन]] ===
=== [[सक्रिय ओबेरॉन]] ===
सक्रिय ओबेरॉन अभी तक ओबेरॉन का एक और संस्करण है, जो ऑब्जेक्ट्स (ऑब्जेक्ट-केंद्रित पहुंच सुरक्षा और स्थानीय गतिविधि नियंत्रण के साथ), सिस्टम-संरक्षित अभिकथन, प्रीमेप्टिव प्राथमिकता शेड्यूलिंग और विधियों के लिए एक परिवर्तित सिंटैक्स जोड़ता है (नाम ओबेरॉन -2 # टाइप-बाउंड प्रक्रियाएं | ओबेरॉन शब्दावली में टाइप-बाउंड प्रक्रियाएं)ऑब्जेक्ट सक्रिय हो सकते हैं, जिसका अर्थ है कि वे थ्रेड्स या प्रोसेस हो सकते हैं। इसके अलावा, सक्रिय ओबेरॉन के पास ऑपरेटरों (ओवरलोडिंग सहित) को लागू करने का एक तरीका है, सरणियों का उपयोग करने के लिए एक उन्नत सिंटैक्स (देखें [http://www.ethoberon.ethz.ch/native/compiler/x.index.html OberonX भाषा एक्सटेंशन] और कार्यवाही<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 |volume=4228 |publisher=Springer, Berlin Heidelberg |pages=195–210 |isbn=978-3-540-40927-4 |encyclopedia=Modular Programming Languages |doi=10.1007/11860990_13 |series=Lecture Notes in Computer Science}}</ref> 7वें संयुक्त मॉड्यूलर भाषा सम्मेलन 2006 ऑक्सफोर्ड, यूके), और नामस्थानों के बारे में जानते हैं।<ref>{{cite web |url=http://www.ocp.inf.ethz.ch/wiki/Documentation/Language?action=download&upname=contexts.pdf |title=Proposal for Module Contexts}}</ref> ऑपरेटिंग सिस्टम [[A2 (ऑपरेटिंग सिस्टम)]] (पूर्व में एक्टिव ऑब्जेक्ट सिस्टम (AOS),<ref name="AOSthesis">{{Cite thesis |type=PhD |last=Muller |first=Pieter Johannes |date=2002 |title=The active object system design and multiprocessor implementation |url=http://e-collection.library.ethz.ch/eserv/eth:26082/eth-26082-02.pdf |publisher=Swiss Federal Institute of Technology, Zürich ([[ETH Zurich]])}}</ref> फिर ब्लूबॉटल), विशेष रूप से [[कर्नेल (ऑपरेटिंग सिस्टम)]], विभिन्न सक्रिय वस्तुओं को सिंक्रनाइज़ और समन्वयित करता है।
सक्रिय ओबेरॉन अभी तक ओबेरॉन का एक और संस्करण है, जो ऑब्जेक्ट्स (ऑब्जेक्ट-केंद्रित अभिगम्य सुरक्षा और स्थानीय गतिविधि नियंत्रण के साथ), सिस्टम-संरक्षित अभिकथन, प्रीमेप्टिव प्राथमिकता शेड्यूलिंग और विधियों के लिए एक परिवर्तित सिंटैक्स (ओबेरॉन शब्दावली में टाइप-बाउंड प्रक्रियाओं का नाम) जोड़ता है। ऑब्जेक्ट सक्रिय हो सकते हैं, जिसका अर्थ है कि वे थ्रेड्स या प्रोसेस हो सकते हैं। इसके अतिरिक्त, सक्रिय ओबेरॉन के पास ऑपरेटरों (ओवरलोडिंग सहित) को प्रयुक्त करने का एक तरीका है, सरणियों का उपयोग करने के लिए एक उन्नत सिंटैक्स (7 वें संयुक्त मॉड्यूलर भाषा सम्मेलन 2006 ऑक्सफोर्ड, यूके के [http://www.ethoberon.ethz.ch/native/compiler/x.index.html ओबेरोनएक्स भाषा एक्सटेंशन] और प्रोसेडिंग<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 |volume=4228 |publisher=Springer, Berlin Heidelberg |pages=195–210 |isbn=978-3-540-40927-4 |encyclopedia=Modular Programming Languages |doi=10.1007/11860990_13 |series=Lecture Notes in Computer Science}}</ref> देखें), और नामस्थानों के बारे में जानते हैं।<ref>{{cite web |url=http://www.ocp.inf.ethz.ch/wiki/Documentation/Language?action=download&upname=contexts.pdf |title=Proposal for Module Contexts}}</ref> ऑपरेटिंग सिस्टम [[A2 (ऑपरेटिंग सिस्टम)]] (पूर्व में सक्रिय ऑब्जेक्ट सिस्टम (एओएस),<ref name="AOSthesis">{{Cite thesis |type=PhD |last=Muller |first=Pieter Johannes |date=2002 |title=The active object system design and multiprocessor implementation |url=http://e-collection.library.ethz.ch/eserv/eth:26082/eth-26082-02.pdf |publisher=Swiss Federal Institute of Technology, Zürich ([[ETH Zurich]])}}</ref> फिर ब्लूबॉटल), विशेष रूप से [[कर्नेल (ऑपरेटिंग सिस्टम)]], विभिन्न सक्रिय वस्तुओं को सिंक्रनाइज़ और समन्वयित करता है।ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख ने सक्रिय ओबेरॉन प्रकाशित किया है जो भाषा के लिए सक्रिय वस्तुओं और उस पर आधारित ऑपरेटिंग सिस्टम (सक्रिय ऑब्जेक्ट सिस्टम (एओएस), ब्लूबॉटल, A2) और पर्यावरण (जावा विकास किट, हाइपरटेक्स्ट ट्रांसफ़र प्रोटोकॉल, फाइल ट्रांसफर प्रोटोकॉल (एफ़टीपी), आदि) का समर्थन करता है। ईडगेनोसिस्के टेक्निशे हॉचस्चुले ज्यूरिख के कई पूर्व डिजाइनों की तरह, दोनों के संस्करण इंटरनेट पर डाउनलोड के लिए उपलब्ध हैं। 2003 तक, समर्थित [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) में एकल और डुअल कोर x[[86]] और स्ट्रांगएआरएम सम्मिलित हैं।
 
ETHZ ने सक्रिय ओबेरॉन जारी किया है जो भाषा के लिए सक्रिय वस्तुओं और उस पर आधारित ऑपरेटिंग सिस्टम (एक्टिव ऑब्जेक्ट सिस्टम (AOS), ब्लूबॉटल, A2) और पर्यावरण (JDK, HTTP, FTP, आदि) का समर्थन करता है। ETHZ के कई पूर्व डिजाइनों की तरह, दोनों के संस्करण इंटरनेट पर डाउनलोड के लिए उपलब्ध हैं। 2003 तक, समर्थित [[सेंट्रल प्रोसेसिंग यूनिट]]्स (सीपीयू) में सिंगल और डुअल कोर x[[86]] और स्ट्रांगएआरएम शामिल हैं।


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


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


ओबेरॉन-वी (मूल रूप से सेनेका नाम, [[सेनेका द यंगर]] के नाम पर) [[सुपर कंप्यूटर]], विशेष रूप से वेक्टर या [[पाइपलाइन (कंप्यूटिंग)]] आर्किटेक्चर पर संख्यात्मक अनुप्रयोगों के लिए डिज़ाइन किए गए ओबेरॉन का वंशज है। इसमें ऐरे कंस्ट्रक्टर और a शामिल हैं <code>ALL</code> कथन।<ref>{{Cite book |last=Griesemer |first=Robert |date=1993 |chapter=A Language for Numerical Applications on Vector Computers |title=Proceedings CONPAR 90: VAPP IV Conference, Diss Nr. 10277 |publisher=ETH Zurich}}</ref>
ओबेरॉन-वी (मूल रूप से सेनेका नाम, [[सेनेका द यंगर]] के नाम पर) [[सुपर कंप्यूटर]], विशेष रूप से वेक्टर या [[पाइपलाइन (कंप्यूटिंग)]] संरचना पर संख्यात्मक एप्लीकेशन के लिए डिज़ाइन किए गए ओबेरॉन का डिसेंडेंट (वंशज) है। इसमें ऐरे कंस्ट्रक्टर (सरणी निर्माता) और <code>ALL</code> स्टेटमेंट सम्मिलित हैं।<ref>{{Cite book |last=Griesemer |first=Robert |date=1993 |chapter=A Language for Numerical Applications on Vector Computers |title=Proceedings CONPAR 90: VAPP IV Conference, Diss Nr. 10277 |publisher=ETH Zurich}}</ref>




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


== संसाधन ==
== संसाधन ==
Line 244: Line 235:
* [http://www.ssw.uni-linz.ac.at/Research/Projects/Oberon.html ओबेरॉन पेज] SSW, लिंज़ में
* [http://www.ssw.uni-linz.ac.at/Research/Projects/Oberon.html ओबेरॉन पेज] SSW, लिंज़ में
* [http://www.mathematik.uni-ulm.de/oberon/reports/ ओबेरॉन: द प्रोग्रामिंग लैंग्वेज] उल्म में
* [http://www.mathematik.uni-ulm.de/oberon/reports/ ओबेरॉन: द प्रोग्रामिंग लैंग्वेज] उल्म में
* [http://people.inf.ethz.ch/wirth/ProjectOberon1992.pdf प्रोजेक्ट ओबेरॉन, द डिज़ाइन ऑफ़ एन ऑपरेटिंग सिस्टम एंड ए कम्पाइलर], निकलॉस विर्थ और जर्ग गुटनेच द्वारा पीडीएफ़ में बुक, 2005 संस्करण
* [http://people.inf.ethz.ch/wirth/ProjectOberon1992.pdf परियोजना ओबेरॉन, द डिज़ाइन ऑफ़ एन ऑपरेटिंग सिस्टम एंड ए कम्पाइलर], निकलॉस विर्थ और जर्ग गुटनेच द्वारा पीडीएफ़ में बुक, 2005 संस्करण
* [https://web.archive.org/web/20130529020132/http://www.ethoberon.ethz.ch/genealogy.html ओबेरॉन भाषा वंशावली]
* [https://web.archive.org/web/20130529020132/http://www.ethoberon.ethz.ch/genealogy.html ओबेरॉन भाषा वंशावली]
* [http://www.astrobe.com एस्ट्रोब] एआरएम ओबेरॉन-07 डेवलपमेंट सिस्टम
* [http://www.astrobe.com एस्ट्रोब] एआरएम ओबेरॉन-07 डेवलपमेंट सिस्टम
Line 250: Line 241:
* [http://modulaware.com/mwcvms.htm 64 बिट ओबेरॉन-2 कंपाइलर] एचपी ओपनवीएमएस अल्फा के लिए
* [http://modulaware.com/mwcvms.htm 64 बिट ओबेरॉन-2 कंपाइलर] एचपी ओपनवीएमएस अल्फा के लिए
* [http://spivey.oriel.ox.ac.uk/corner/Oxford_Oberon-2_compiler ऑक्सफोर्ड ओबेरॉन-2 कंपाइलर] और इसके [http://bitbucket.org/Spivey/obc-3/downloads/obcman.pdf उपयोगकर्ता नियमावली]
* [http://spivey.oriel.ox.ac.uk/corner/Oxford_Oberon-2_compiler ऑक्सफोर्ड ओबेरॉन-2 कंपाइलर] और इसके [http://bitbucket.org/Spivey/obc-3/downloads/obcman.pdf उपयोगकर्ता नियमावली]
* [https://github.com/rochus-keller/Oberon Free Oberon-07 IDE] Windows, Macintosh, और Linux के लिए सिंटैक्स कलरिंग, सिमेंटिक नेविगेशन और सोर्स कोड डीबगर के साथ मुफ़्त Oberon-07 IDE
* [https://github.com/rochus-keller/Oberon Free Oberon-07 IDE] विंडोज, Macintosh, और लिनक्स के लिए सिंटैक्स कलरिंग, सिमेंटिक नेविगेशन और सोर्स कोड डीबगर के साथ मुफ़्त Oberon-07 IDE
* [https://www.drdobbs.com/architecture-and-design/the-oberon-programming-language/184409405 जोसेफ टेम्पल द्वारा ओबेरॉन लेख] जनवरी 1994 में डॉ. डोब्स के अंक में
* [https://www.drdobbs.com/architecture-and-design/the-oberon-programming-language/184409405 जोसेफ टेम्पल द्वारा ओबेरॉन लेख] जनवरी 1994 में डॉ. डोब्स के अंक में


Line 263: Line 254:


==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}{{Authority control}}


{{Modula, Oberon}}
{{DEFAULTSORT:Oberon (Programming Language)}}      
{{Wirth}}
{{Programming languages}}
{{Authority control}}
 
{{DEFAULTSORT:Oberon (Programming Language)}}[[Category: मॉड्यूला प्रोग्रामिंग भाषा परिवार]] [[Category: कक्षा-आधारित प्रोग्रामिंग भाषाएँ]] [[Category: प्रक्रियात्मक प्रोग्रामिंग भाषाएँ]] [[Category: ओबेरॉन प्रोग्रामिंग भाषा परिवार]] [[Category: सिस्टम प्रोग्रामिंग भाषाएं]] [[Category: 1986 में बनाई गई प्रोग्रामिंग लैंग्वेज]] [[Category: वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषाएँ]]


[[ja:Oberon]]
[[ja:Oberon]]


 
[[Category:1986 में बनाई गई प्रोग्रामिंग लैंग्वेज|Oberon (Programming Language)]]
 
[[Category:Articles with hatnote templates targeting a nonexistent page|Oberon (Programming Language)]]
[[Category: Machine Translated Page]]
[[Category:CS1]]
[[Category:Created On 17/02/2023]]
[[Category:Citation Style 1 templates|M]]
[[Category:Collapse templates]]
[[Category:Created On 17/02/2023|Oberon (Programming Language)]]
[[Category:Machine Translated Page|Oberon (Programming Language)]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with broken file links|Oberon (Programming Language)]]
[[Category:Pages with script errors|Oberon (Programming Language)]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Oberon (Programming Language)]]
[[Category:Templates based on the Citation/CS1 Lua module]]
[[Category:Templates generating COinS|Cite magazine]]
[[Category:Templates generating microformats]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia fully protected templates|Cite magazine]]
[[Category:Wikipedia metatemplates]]
[[Category:ओबेरॉन प्रोग्रामिंग भाषा परिवार|Oberon (Programming Language)]]
[[Category:कक्षा-आधारित प्रोग्रामिंग भाषाएँ|Oberon (Programming Language)]]
[[Category:प्रक्रियात्मक प्रोग्रामिंग भाषाएँ|Oberon (Programming Language)]]
[[Category:मॉड्यूला प्रोग्रामिंग भाषा परिवार|Oberon (Programming Language)]]
[[Category:वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषाएँ|Oberon (Programming Language)]]
[[Category:सिस्टम प्रोग्रामिंग भाषाएं|Oberon (Programming Language)]]

Latest revision as of 16:55, 3 March 2023

ओबेरॉन
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.