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

From Vigyanwiki
ओकैम
1983 1988 Trademark occam and occam 2 INMOS Limited.jpg
Paradigmअनिवार्य, प्रक्रियात्मक, समवर्ती
द्वारा डिज़ाइन किया गयाडेविड मे
Developerइनमोस
Stable release
2.1 (आधिकारिक), 2.5 (अनौपचारिक), 3 (पूरी तरह से लागू नहीं) / Template:आरंभ तिथि और आयु
Dialects
ओकैम-π (पाई)
Influenced by
अनुक्रमिक प्रक्रियाओं का संचार
Influenced
ईज, गो, पायथन

ओकैम एक प्रोग्रामिंग भाषा है जो समवर्ती है और कम्युनिकेटिंग सीक्वेंशियल प्रोसेस (संचार अनुक्रमिक प्रक्रियाओं ) (सीएसपी) प्रक्रिया बीजगणित पर निर्मित है,[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ओकैम इनमोस लिमिटेड द्वारा

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

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

ओकैम-π

ओकैम-π[6] केंट रिटारगेटेबल ओकैम कंपाइलर (केआरओसी) के बाद के संस्करणों द्वारा लागू किए गए ओकैम वेरिएंट के लिए सामान्य नाम है। ओकैम नाम में प्रतीक π को जोड़ना केआरओसी ओकैम के लिए एक भ्रम है जिसमें π-कैलकुलस से प्रेरित कई विचार सम्मिलित हैं। इसमें ओकैम 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.


अग्रिम पठन


बाहरी संबंध