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

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

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

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

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

कीबोर्ड ? सी

स्क्रीन ! सी

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

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

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

बराबर पी क्यू

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

ऑल्ट गिनती 1 <100 और सी 1? आंकड़े स्व-परीक्षा प्रश्न काउंट 1: = काउंट 1 + 1 विलय होना ! आंकड़े गिनती 2 <100 और सी 2? आंकड़े स्व-परीक्षा प्रश्न काउंट2 := काउंट2 + 1 विलय होना ! आंकड़े दर्जा ? अनुरोध स्व-परीक्षा प्रश्न बाहर ! गिनती1 बाहर ! गिनती2

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

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

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

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

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

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

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

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

यह भी देखें

 * XC प्रोग्रामिंग लैंग्वेज, जो occam पर आधारित है लेकिन C-स्टाइल सिंटैक्स के साथ है।
 * समवर्ती कंप्यूटिंग # समवर्ती प्रोग्रामिंग का समर्थन करने वाली भाषाएँ
 * समवर्ती और समानांतर प्रोग्रामिंग भाषाओं की सूची

अग्रिम पठन

 * 
 * 
 * 
 * Egorov, A., Technical University – Sofia, (1983-2011) Записки по Компютърни архитектури
 * Egorov, A., Technical University – Sofia, (1983-2011) Записки по Компютърни архитектури
 * Egorov, A., Technical University – Sofia, (1983-2011) Записки по Компютърни архитектури

बाहरी संबंध

 * Information, compilers, editors and utilities at the WoTUG occam pages
 * Compilers, documentation, examples, projects and utilities at the Internet Parallel Computing Archive (no longer maintained)
 * Occam books on Transputer.net
 * The occam-pi language.
 * Tock occam compiler – (translator from occam to C from Kent) a Haskell-based compiler for occam and related languages.