सीएलयू (प्रोग्रामिंग लैंग्वेज)

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

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

क्लस्टर
CLU का वाक्य-विन्यास ALGOL पर आधारित था, जो तब अधिकांश नए भाषा डिजाइनों के लिए शुरुआती बिंदु था। मुख्य जोड़ क्लस्टर की अवधारणा, सीएलयू की प्रकार विस्तार प्रणाली और भाषा के नाम की जड़ (सीएलयूस्टर) थी। क्लस्टर आम तौर पर ओओ भाषा में कक्षा की अवधारणा के अनुरूप होते हैं। उदाहरण के लिए, यहाँ एक क्लस्टर के लिए CLU सिंटैक्स है जो जटिल संख्याओं को लागू करता है:

 complex_number = क्लस्टर जोड़ना, घटाना, गुणा करना, ... प्रतिनिधि = रिकॉर्ड [वास्तविक_भाग: वास्तविक, कल्पना_भाग: वास्तविक] जोड़ें = खरीद ... अंत जोड़ें; घटाना = खरीद ... अंत घटाना; गुणा = प्रोक ... अंत गुणा; ...   अंत जटिल_संख्या; 

एक क्लस्टर एक मॉड्यूल है जो इसके सभी घटकों को समाहित करता है सिवाय उन लोगों के जिन्हें स्पष्ट रूप से खंड में नामित किया गया है। ये हाल ही की ओओ भाषाओं में कक्षा के सार्वजनिक घटकों से मेल खाते हैं। एक क्लस्टर एक प्रकार को भी परिभाषित करता है जिसे क्लस्टर के बाहर नाम दिया जा सकता है (इस मामले में, complex_number), लेकिन इसका प्रतिनिधित्व प्रकार (प्रतिनिधि) बाहरी ग्राहकों से छिपा हुआ है।

क्लस्टर नाम वैश्विक हैं, और समूह समूहों को कोई नामस्थान तंत्र प्रदान नहीं किया गया था या उन्हें अन्य समूहों के अंदर स्थानीय रूप से बनाने की अनुमति नहीं दी गई थी।

एक क्लस्टर में, स्पष्ट प्रकार के रूपांतरण सार प्रकार और प्रतिनिधित्व के बीच ऊपर और नीचे बदलते हैं; इन प्रकारों के बीच निहित रूपांतरणों को विशेष प्रकार के cvt का उपयोग करके दर्शाया गया है। CLU अन्यथा निहित प्रकार के रूपांतरण नहीं करता है। एक सार्वभौमिक प्रकार कोई भी है, और एक प्रक्रिया बल [] यह जांचने के लिए कि कोई वस्तु एक निश्चित प्रकार है। वस्तुएं परस्पर या अपरिवर्तनीय हो सकती हैं, बाद वाले आधार प्रकार जैसे पूर्णांक, बूलियन, वर्ण और तार।

अन्य विशेषताएं
सीएलयू प्रकार प्रणाली की एक अन्य प्रमुख विशेषता पुनरावर्तक हैं, जो एक के बाद एक संग्रह से क्रमिक रूप से वस्तुओं को लौटाते हैं। Iterators एक समान अप्लिकेशन प्रोग्रामिंग अंतरफलक (API) प्रदान करते हैं, चाहे वे किसी भी डेटा के साथ उपयोग किए जा रहे हों। इस प्रकार के संग्रह के लिए इटरेटर की एक सरणी के लिए s का परस्पर उपयोग किया जा सकता है  एस। सीएलयू पुनरावृत्तियों की एक विशिष्ट विशेषता यह है कि वे कोरूटीन के रूप में कार्यान्वित किए जाते हैं, जिसमें प्रत्येक मूल्य एक यील्ड स्टेटमेंट के माध्यम से कॉलर को प्रदान किया जाता है। CLU जैसे इटरेटर अब कई आधुनिक भाषाओं जैसे C#, रूबी और पायथन की एक सामान्य विशेषता है, हालांकि हाल ही में उन्हें अक्सर जनरेटर के रूप में संदर्भित किया जाता है।

सीएलयू में अन्य भाषाओं में विभिन्न प्रयासों के आधार पर अपवाद प्रबंधन भी शामिल है; अपवादों का उपयोग करके उठाया जाता है  और साथ संभाला. अपवाद से निपटने वाली अधिकांश अन्य भाषाओं के विपरीत, अपवादों को कॉलिंग श्रृंखला में स्पष्ट रूप से इस्तीफा नहीं दिया जाता है। इसके अलावा अधिकांश अन्य भाषाओं के विपरीत जो अपवाद प्रबंधन प्रदान करती हैं, CLU में अपवादों को सामान्य निष्पादन प्रवाह का हिस्सा माना जाता है और लूप से बाहर निकलने या कार्यों से लौटने के लिए एक सामान्य और कुशल प्रकार-सुरक्षित तरीका माना जाता है; यह रिटर्न वैल्यू के सीधे असाइनमेंट की अनुमति देता है, सिवाय इसके कि जब अन्य शर्तें लागू हों। अपवाद जो न तो पकड़े जाते हैं और न ही स्पष्ट रूप से इस्तीफा दिए जाते हैं, तुरंत एक विशेष विफलता अपवाद में परिवर्तित हो जाते हैं जो आमतौर पर कार्यक्रम को समाप्त कर देते हैं।

भाषा ML (प्रोग्रामिंग भाषा) के पास होने से पहले, CLU को अक्सर टाइप-सेफ वैरिएंट प्रकारों वाली पहली भाषा होने का श्रेय दिया जाता है, जिसे oneofs कहा जाता है।

CLU में एक अंतिम विशिष्ट विशेषता समानांतर असाइनमेंट (बहु असाइनमेंट) है, जहां एक असाइनमेंट (कंप्यूटर विज्ञान) ऑपरेटर के बाईं ओर एक से अधिक चर दिखाई दे सकते हैं। उदाहरण के लिए, लेखन  के मूल्यों का आदान-प्रदान करेगा   और. उसी तरह, फ़ंक्शन कई मान लौटा सकते हैं, जैसे. समानांतर असाइनमेंट (हालांकि कई वापसी मान नहीं) CLU से पहले का है, CPL (प्रोग्रामिंग लैंग्वेज) (1963) में दिखाई देता है, जिसका नाम समकालिक असाइनमेंट है, लेकिन सीएलयू ने इसे लोकप्रिय बनाया और अक्सर बाद की भाषाओं में समानांतर असाइनमेंट के प्रत्यक्ष प्रभाव के रूप में इसका श्रेय दिया जाता है।

CLU प्रोग्राम में सभी ऑब्जेक्ट हीप में रहते हैं, और मेमोरी प्रबंधन स्वचालित होता है।

CLU सामान्य प्रोग्रामिंग का समर्थन करता है | टाइप-पैरामीटरीकृत उपयोगकर्ता-परिभाषित डेटा सार। वास्तविक प्रकार के तर्कों पर बाधाओं को व्यक्त करने के लिए क्लॉज़ का उपयोग करते हुए, टाइप-सेफ बाउंडेड पैरामिट्रीकृत प्रकारों की पेशकश करने वाली यह पहली भाषा थी। टेम्प्लेट-आधारित जेनरिक वाली भाषाओं के विपरीत, इस तरह के डेटा एब्स्ट्रैक्शन का उपयोग अमूर्त के कार्यान्वयन तक पहुंच के बिना टाइप-चेक किया जा सकता है।

प्रभाव
CLU और Ada (प्रोग्रामिंग भाषा) C++ Template (C++) के लिए प्रमुख प्रेरणा थे।

CLU के अपवाद प्रबंधन तंत्र ने बाद की भाषाओं जैसे C++ को प्रभावित किया और जावा (प्रोग्रामिंग भाषा)। Sather, Python (प्रोग्रामिंग लैंग्वेज), और C Sharp (प्रोग्रामिंग लैंग्वेज) | C# में इटरेटर शामिल हैं, जो पहली बार CLU में दिखाई दिए।

पर्ल और लुआ (प्रोग्रामिंग भाषा) ने सीएलयू से फंक्शन कॉल्स से कई असाइनमेंट और मल्टीपल रिटर्न लिए। पायथन (प्रोग्रामिंग लैंग्वेज) और रूबी (प्रोग्रामिंग भाषा) शेयरिंग द्वारा उधार ली गई कॉल, यील्ड स्टेटमेंट, और एकाधिक असाइनमेंट।

बाहरी संबंध

 * clu2c: a program to compile CLU code to C
 * Dictionary of Programming Languages
 * CLU comparison at '99 bottles of beer' multi-language demo algorithm site
 * Dictionary of Programming Languages
 * CLU comparison at '99 bottles of beer' multi-language demo algorithm site