ओकैम (प्रोग्रामिंग भाषा): Difference between revisions

From Vigyanwiki
(Created page with "{{Distinguish|OCaml}} {{lowercase title|occam (programming language)}} {{Infobox programming language | name = occam | logo = 1983 1988 Trademark occam and occam 2 INMOS Limit...")
 
No edit summary
Line 17: Line 17:
}}
}}


ओकैम एक [[प्रोग्रामिंग भाषा]] है जो [[समवर्ती कंप्यूटिंग]] है और संचार अनुक्रमिक प्रक्रियाओं (सीएसपी) प्रक्रिया बीजगणित पर बनाता है,<ref name="oc21refman">{{cite book |author=<!--Must be person--> |author-link=Inmos |url=http://www.wotug.org/occam/documentation/oc21refman.pdf |title=occam 2.1 Reference Manual |publisher=SGS-Thomson Microelectronics Ltd |date=1995-05-12}} Inmos document 72 occ 45 03</ref> और इसकी कई विशेषताएं साझा करता है। इसका नाम ओखम के दार्शनिक विलियम के नाम पर रखा गया है, जिनके नाम पर ओकाम के उस्तरे का नाम रखा गया है।
'''ओकैम''' एक [[प्रोग्रामिंग भाषा]] है जो [[समवर्ती कंप्यूटिंग|समवर्ती]] है और कम्युनिकेटिंग सीक्वेंशियल प्रोसेस (संचार अनुक्रमिक प्रक्रियाओं ) (सीएसपी) प्रक्रिया बीजगणित पर निर्मित है,<ref name="oc21refman">{{cite book |author=<!--Must be person--> |author-link=Inmos |url=http://www.wotug.org/occam/documentation/oc21refman.pdf |title=occam 2.1 Reference Manual |publisher=SGS-Thomson Microelectronics Ltd |date=1995-05-12}} Inmos document 72 occ 45 03</ref>और इसकी कई विशेषताएं साझा करती हैं। इसका नाम ओखम के दार्शनिक विलियम के नाम पर रखा गया है, जिनके नाम पर ओकाम के रेज़र का नाम रखा गया है।


ओकैम एक [[अनिवार्य प्रोग्रामिंग]] [[प्रक्रियात्मक प्रोग्रामिंग]] भाषा है (जैसे [[पास्कल (प्रोग्रामिंग भाषा)]])यह डेविड मे (कंप्यूटर वैज्ञानिक) और [[इनमोस]] (ट्रेडमार्क INMOS) में अन्य लोगों द्वारा विकसित किया गया था, [[टोनी होरे]] द्वारा सलाह दी गई थी, उनके [[ transputer ]] [[माइक्रोप्रोसेसर]]ों के लिए मूल प्रोग्रामिंग भाषा के रूप में, लेकिन अन्य प्लेटफार्मों के लिए कार्यान्वयन उपलब्ध हैं। सबसे व्यापक रूप से ज्ञात संस्करण ओकैम 2 है; इसका प्रोग्रामिंग मैनुअल स्टीवन एरिक्सन-जेनिथ और अन्य द्वारा इनमोस में लिखा गया था।
ओकम एक [[अनिवार्य प्रोग्रामिंग|अनिवार्य]] प्रक्रियात्मक भाषा (जैसे [[पास्कल (प्रोग्रामिंग भाषा)|पास्कल]]) है। यह डेविड मे और अन्य लोगों द्वारा इनमोस (ट्रेडमार्क आईएनएमओएस) में विकसित किया गया था, [[टोनी होरे]] द्वारा सलाह दी गई थी, उनके ट्रांसप्यूटर माइक्रोप्रोसेसरों के लिए मूल प्रोग्रामिंग भाषा के रूप में, लेकिन अन्य प्लेटफार्मों के लिए कार्यान्वयन उपलब्ध हैं। सबसे व्यापक रूप से जाना जाने वाला संस्करण ऑकैम 2 है; इसका प्रोग्रामिंग मैनुअल स्टीवन एरिक्सन-जेनिथ और इनमोस में अन्य लोगों द्वारा लिखा गया था।


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


प्रक्रियाओं के बीच संचार नामित [[चैनल (प्रोग्रामिंग)]] के माध्यम से काम करता है। एक प्रक्रिया डेटा को एक चैनल के माध्यम से आउटपुट करती है <code>!</code> जबकि दूसरा डेटा इनपुट करता है <code>?</code>. इनपुट और आउटपुट तब तक आगे नहीं बढ़ सकते जब तक कि दूसरा छोर डेटा को स्वीकार या पेश करने के लिए तैयार न हो। (कार्यवाही न करने के मामले में अक्सर यह कहा जाता है कि चैनल पर प्रोसेस [[ अवरुद्ध करना (कंप्यूटिंग) ]] है। हालांकि, कार्यक्रम न तो स्पिन करेगा और न ही मतदान करेगा, इस प्रकार प्रतीक्षा, हैंग या यील्ड जैसे शब्द भी व्यवहार को व्यक्त कर सकते हैं; संदर्भ में भी कि यह अन्य स्वतंत्र प्रक्रियाओं को चलने से नहीं रोकेगा।) उदाहरण (c एक चर है):
प्रक्रियाओं के बीच संचार नामांकित चैनलों के माध्यम से कार्य करता है। एक प्रक्रिया के माध्यम से एक चैनल को डेटा <code>!</code> आउटपुट करता है  जबकि दूसरा डेटा <code>?</code> के साथ इनपुट करता है। इनपुट और आउटपुट तब तक आगे नहीं बढ़ सकते जब तक कि दूसरा छोर डेटा को स्वीकार करने या पेश करने के लिए तैयार नहीं होता। (कार्यवाही न करने के मामले में अक्सर यह कहा जाता है कि प्रक्रिया चैनल पर ब्लॉक हो जाती है। हालाँकि, कार्यक्रम न तो स्पिन करेगा और न ही मतदान; इस प्रकार प्रतीक्षा, रुकना या उपज जैसे शब्द भी व्यवहार को व्यक्त कर सकते हैं; साथ ही इस संदर्भ में कि यह अन्य स्वतंत्र प्रक्रियाओं को चलने से नहीं रोकेगा।) उदाहरण (c एक वेरिएबल है):


  कीबोर्ड ? सी
keyboard ? c


  स्क्रीन ! सी
screen ! c


<code>SEQ</code> उन भावों की सूची प्रस्तुत करता है जिनका मूल्यांकन क्रमिक रूप से किया जाता है। यह निहित नहीं है क्योंकि यह अधिकांश अन्य प्रोग्रामिंग भाषाओं में है। उदाहरण:
<code>SEQ</code> व्यंजक की एक सूची प्रस्तुत करता है जिसका मूल्यांकन क्रमिक रूप से किया जाता है। यह अंतर्निहित नहीं है क्योंकि यह अन्य प्रोग्रामिंग भाषाओं में है। उदाहरण :


  स्व-परीक्षा प्रश्न
SEQ
     एक्स := एक्स + 1
     := x + 1
     := एक्स * एक्स
     := x * x


<code>PAR</code> अभिव्यक्तियों की एक सूची शुरू करता है जिसका मूल्यांकन समवर्ती रूप से किया जा सकता है। उदाहरण:
<code>PAR</code> उन व्यंजकों की सूची प्रारंभ करता है जिनका समवर्ती रूप से मूल्यांकन किया जा सकता है। उदाहरण:


   बराबर
   PAR
     पी()
     p()
     क्यू()
     q()


<code>ALT</code> गार्ड (कंप्यूटर विज्ञान) की एक सूची निर्दिष्ट करता है। गार्ड एक बूलियन स्थिति और एक इनपुट अभिव्यक्ति का एक संयोजन है, दोनों वैकल्पिक हैं। प्रत्येक गार्ड जिसके लिए स्थिति सही है और इनपुट चैनल तैयार है, सफल है। निष्पादन के लिए सफल विकल्पों में से एक का चयन किया जाता है। उदाहरण:
<code>ALT</code> गार्ड कमांड की एक सूची निर्दिष्ट करता है। वह गार्ड एक बूलियन स्थिति और एक इनपुट व्यंजक का संयोजन है, दोनों वैकल्पिक। प्रत्येक गार्ड जिसके लिए शर्त सत्य है और इनपुट चैनल तैयार है, सफल है। निष्पादन के लिए सफल विकल्पों में से एक का चयन किया जाता है। उदाहरण:


  ऑल्ट
ALT
     गिनती 1 <100 और सी 1? आंकड़े
     count1 < 100 & c1 ? data
       स्व-परीक्षा प्रश्न
       SEQ
         काउंट 1: = काउंट 1 + 1
         count1 := count1 + 1
         विलय होना ! आंकड़े
         merged ! data
     गिनती 2 <100 और सी 2? आंकड़े
     count2 < 100 & c2 ? data
       स्व-परीक्षा प्रश्न
       SEQ
         काउंट2 := काउंट2 + 1
         count2 := count2 + 1
         विलय होना ! आंकड़े
         merged ! data
     दर्जा ? अनुरोध
     status ? request
       स्व-परीक्षा प्रश्न
       SEQ
         बाहर ! गिनती1
         out ! count1
         बाहर ! गिनती2
         out ! count2


यह चैनल c1 या c2 (जो भी तैयार हो) से डेटा पढ़ेगा और इसे मर्ज किए गए चैनल में भेज देगा। यदि काउंटएन 100 तक पहुंचता है, तो संबंधित चैनल से पढ़ना अक्षम हो जाएगा। स्टेटस चैनल पर एक अनुरोध का जवाब काउंट्स को आउटपुट करके दिया जाता है <code>out</code>.
यह चैनल c1 या c2 (जो भी तैयार हो) से डेटा पढ़ेगा और इसे एक मर्ज किए गए चैनल में पास करेगा। अगर काउंटN 100 तक पहुंचता है, तो संबंधित चैनल से पढ़ना बंद कर दिया जाएगा। स्टेटस चैनल पर एक अनुरोध का उत्तर काउंट <code>out</code>को आउटपुट करके दिया जाता है।


== भाषा संशोधन ==
== भाषा संशोधन ==

Revision as of 08:07, 5 June 2023

occam
1983 1988 Trademark occam and occam 2 INMOS Limited.jpg
ParadigmImperative, procedural, concurrent
द्वारा डिज़ाइन किया गयाDavid May
DeveloperInmos
पहली प्रस्तुति1983; 41 years ago (1983)
Stable release
2.1 (official), 2.5 (unofficial), 3 (not fully implemented) / 1994; 30 years ago (1994)
Dialects
occam-π (pi)
Influenced by
Communicating sequential processes
Influenced
Ease, Go, Python

ओकैम एक प्रोग्रामिंग भाषा है जो समवर्ती है और कम्युनिकेटिंग सीक्वेंशियल प्रोसेस (संचार अनुक्रमिक प्रक्रियाओं ) (सीएसपी) प्रक्रिया बीजगणित पर निर्मित है,[1]और इसकी कई विशेषताएं साझा करती हैं। इसका नाम ओखम के दार्शनिक विलियम के नाम पर रखा गया है, जिनके नाम पर ओकाम के रेज़र का नाम रखा गया है।

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

सिंहावलोकन

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

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

keyboard ? c
screen ! c

SEQ व्यंजक की एक सूची प्रस्तुत करता है जिसका मूल्यांकन क्रमिक रूप से किया जाता है। यह अंतर्निहित नहीं है क्योंकि यह अन्य प्रोग्रामिंग भाषाओं में है। उदाहरण :

SEQ
   x := x + 1
   y := x * x

PAR उन व्यंजकों की सूची प्रारंभ करता है जिनका समवर्ती रूप से मूल्यांकन किया जा सकता है। उदाहरण:

 PAR
   p()
   q()

ALT गार्ड कमांड की एक सूची निर्दिष्ट करता है। वह गार्ड एक बूलियन स्थिति और एक इनपुट व्यंजक का संयोजन है, दोनों वैकल्पिक। प्रत्येक गार्ड जिसके लिए शर्त सत्य है और इनपुट चैनल तैयार है, सफल है। निष्पादन के लिए सफल विकल्पों में से एक का चयन किया जाता है। उदाहरण:

ALT
   count1 < 100 & c1 ? data
     SEQ
       count1 := count1 + 1
       merged ! data
   count2 < 100 & c2 ? data
     SEQ
       count2 := count2 + 1
       merged ! data
   status ? request
     SEQ
       out ! count1
       out ! count2

यह चैनल c1 या c2 (जो भी तैयार हो) से डेटा पढ़ेगा और इसे एक मर्ज किए गए चैनल में पास करेगा। अगर काउंटN 100 तक पहुंचता है, तो संबंधित चैनल से पढ़ना बंद कर दिया जाएगा। स्टेटस चैनल पर एक अनुरोध का उत्तर काउंट outको आउटपुट करके दिया जाता है।

भाषा संशोधन

1983 INMOS लिमिटेड द्वारा ओकाम

अवसर 1

अवसर 1[2] (1983 में जारी) भाषा का एक प्रारंभिक संस्करण था जिसे ईपीएल और टोनी होरे के सीएसपी पर डेविड मे (कंप्यूटर वैज्ञानिक) के काम से उधार लिया गया था। यह केवल VAR डेटा प्रकार का समर्थन करता है, जो लक्ष्य आर्किटेक्चर की मूल शब्द लंबाई के अनुरूप एक अभिन्न प्रकार था, और केवल एक आयाम की सरणियाँ।

अवसर 2

अवसर 2[3] 1987 में इनमोस लिमिटेड द्वारा निर्मित एक एक्सटेंशन है जो तैरनेवाला स्थल सपोर्ट, फ़ंक्शंस, बहु-आयामी सरणियाँ और अधिक डेटा प्रकार जैसे कि पूर्णांकों के अलग-अलग आकार (INT16, INT32) और बाइट्स जोड़ता है।

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

ओकम 2.1

अवसर 2.1[1]इनमोस द्वारा योगदान किए गए ओकम भाषा के विकास की श्रृंखला का अंतिम था। 1994 में परिभाषित, यह 1990 के दशक की शुरुआत में इनमोस में ज्योफ बैरेट द्वारा बनाई गई ओकम 3 भाषा (इसके शुरुआती विकास के दौरान ओकैम91 के रूप में भी संदर्भित) के लिए पहले के प्रस्ताव से प्रभावित था। समुदाय टिप्पणी के लिए ओकैम 3 का वर्णन करने वाला एक संशोधित संदर्भ मैनुअल वितरित किया गया था,[5] लेकिन एक कंपाइलर में भाषा को कभी भी पूरी तरह लागू नहीं किया गया था।

ओकैम 2.1 ने ऑकैम 2 में कई नई विशेषताएं पेश कीं, जिनमें शामिल हैं:

  • नामित डेटा प्रकार (डेटा प्रकार x IS y)
  • नामित रिकॉर्ड
  • पैक्ड रिकॉर्ड
  • कुछ प्रकार के रूपांतरण नियमों में छूट
  • नए ऑपरेटर (जैसे बाइटेसिन)
  • चैनल रीटाइपिंग और चैनल सरणी
  • फ़ंक्शन से निश्चित-लंबाई सरणी वापस करने की क्षमता।

परिवर्तनों की पूरी सूची के लिए Inmos occam 2.1 संदर्भ मैनुअल का परिशिष्ट P देखें।

ओकम-π

ओकम-π[6] केंट रिटारगेटेबल ओकम कंपाइलर (केआरओसी) के बाद के संस्करणों द्वारा लागू किए गए ओकैम संस्करण के लिए सामान्य नाम है। ओकैम नाम में पाई (अक्षर)|π (पी) प्रतीक को जोड़ना KRoC ओकैम के लिए एक भ्रम है जिसमें π-कैलकुलस से प्रेरित कई विचार शामिल हैं। इसमें ओकैम 2.1 कंपाइलर के लिए कई महत्वपूर्ण एक्सटेंशन शामिल हैं, उदाहरण के लिए:

यह भी देखें

संदर्भ

  1. 1.0 1.1 occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd. 1995-05-12. Inmos document 72 occ 45 03
  2. Occam प्रोग्रामिंग मैनुअल. Prentice-Hall. 1984. ISBN 0-13-629296-8.
  3. Ericsson-Zenith, Steven (1988). occam 2 Reference Manual. Prentice-Hall. ISBN 0-13-629312-3.
  4. Cook, Barry M; Peel, RMA (1999-04-11). "फील्ड-प्रोग्रामेबल गेट एरेज़ पर आ जाओ". In Cook, Barry M. (ed.). Architectures, Languages and Techniques for Concurrent Systems. 22nd World Occam and Transputer User Group Technical Meeting. Keele, United Kingdom: IOS Press. p. 219. ISBN 90-5199-480-X. Retrieved 2016-11-28.
  5. Barrett, Geoff; Ericsson-Zenith, Steven (1992-03-31). "occam 3 Reference Manual" (PDF). Inmos. Retrieved 2008-03-24. {{cite journal}}: Cite journal requires |journal= (help)
  6. Barnes, Fred; Welch, Peter (2006-01-14). "occam-pi: Blending the best of CSP and the pi-calculus". Retrieved 2006-11-24.


अग्रिम पठन


बाहरी संबंध