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

From Vigyanwiki
(Created page with "{{more citations needed|date=February 2013}} {{Infobox programming language |name = CLU |logo = |paradigm = multi-paradigm: Object-or...")
 
No edit summary
Line 1: Line 1:
{{more citations needed|date=February 2013}}
{{Infobox programming language
{{Infobox programming language
|name = CLU
|name = CLU
Line 17: Line 16:
|influenced = [[Ada (programming language)|Ada]], [[Argus (programming language)|Argus]], [[C++]],<ref name="history-of-cpp">{{cite book |last1=Stroustrup |first1=Bjarne |title=A History of C++: 1979--1991 |date=1996 |publisher=Association for Computing Machinery |location=New York, NY, USA |page=699–769 |url=https://doi.org/10.1145/234286.1057836 |access-date=25 March 2022}}</ref> [[Lua (programming language)|Lua]], [[Python (programming language)|Python]],<ref name="effbot-call-by-object">{{cite web |url=http://effbot.org/zone/call-by-object.htm |title=Call By Object |work=effbot.org |last=Lundh |first=Fredrik |quote=replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model. |access-date=21 November 2017 |archive-date=23 November 2019 |archive-url=https://web.archive.org/web/20191123043655/http://effbot.org/zone/call-by-object.htm |url-status=dead }}</ref> [[Ruby (programming language)|Ruby]], [[Sather]], [[Swift (programming language)|Swift]]<ref name="lattner2014">{{cite web |url=http://nondot.org/sabre/ |title=Chris Lattner's Homepage |last=Lattner |first=Chris |date=2014-06-03|access-date=2014-06-03 |publisher=Chris Lattner |quote=The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.}}</ref>
|influenced = [[Ada (programming language)|Ada]], [[Argus (programming language)|Argus]], [[C++]],<ref name="history-of-cpp">{{cite book |last1=Stroustrup |first1=Bjarne |title=A History of C++: 1979--1991 |date=1996 |publisher=Association for Computing Machinery |location=New York, NY, USA |page=699–769 |url=https://doi.org/10.1145/234286.1057836 |access-date=25 March 2022}}</ref> [[Lua (programming language)|Lua]], [[Python (programming language)|Python]],<ref name="effbot-call-by-object">{{cite web |url=http://effbot.org/zone/call-by-object.htm |title=Call By Object |work=effbot.org |last=Lundh |first=Fredrik |quote=replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model. |access-date=21 November 2017 |archive-date=23 November 2019 |archive-url=https://web.archive.org/web/20191123043655/http://effbot.org/zone/call-by-object.htm |url-status=dead }}</ref> [[Ruby (programming language)|Ruby]], [[Sather]], [[Swift (programming language)|Swift]]<ref name="lattner2014">{{cite web |url=http://nondot.org/sabre/ |title=Chris Lattner's Homepage |last=Lattner |first=Chris |date=2014-06-03|access-date=2014-06-03 |publisher=Chris Lattner |quote=The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.}}</ref>
}}
}}
CLU [[मैसाचुसेट्स की तकनीकी संस्था]] (MIT) में [[बारबरा लिस्कोव]] और उनके छात्रों द्वारा 1973 में शुरू की गई एक [[प्रोग्रामिंग भाषा]] है।<ref name="History">Liskov, Barbara (1992). "A history of CLU". The second ACM SIGPLAN conference on History of programming languages.</ref> हालांकि इसे व्यापक उपयोग नहीं मिला, इसने कई विशेषताएं पेश कीं जो अब व्यापक रूप से उपयोग की जाती हैं, और इसे [[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] (OOP) के विकास में एक कदम के रूप में देखा जाता है।
सीएलयू [[मैसाचुसेट्स की तकनीकी संस्था|मैसाचुसेट्स इंस्टिट्यूट ऑफ़ टेक्नोलॉजी]] (एमआईटी) में [[बारबरा लिस्कोव]] और उनके छात्रों द्वारा 1973 में शुरू की गई एक [[प्रोग्रामिंग भाषा]] है।<ref name="History">Liskov, Barbara (1992). "A history of CLU". The second ACM SIGPLAN conference on History of programming languages.</ref> यद्यापि इसे व्यापक प्रयोग नहीं मिला, इसने कई विशेषताएं पेश कीं जो अब व्यापक रूप से उपयोग की जाती हैं, और इसे [[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] (ओओपी) के विकास में एक कदम के रूप में देखा जाता है।


मुख्य योगदान में [[सार डेटा प्रकार]] शामिल हैं,<ref>{{Cite conference |doi= 10.1145/800233.807045 |chapter= Programming with abstract data types |title= Proceedings of the ACM SIGPLAN symposium on Very high level languages |pages= 50–59 |year= 1974 |last1= Liskov |first1= Barbara |author-link1= Barbara Liskov |last2= Zilles |first2= Stephen |citeseerx= 10.1.1.136.3043 }}</ref> [[कॉल-बाय-शेयरिंग]], [[इटरेटर]]्स, मल्टीपल रिटर्न वैल्यू ([[समानांतर असाइनमेंट]] का एक रूप), टाइप-सेफ [[पैरामीटरयुक्त प्रकार]] और टाइप-सेफ [[भिन्न प्रकार]]। यह [[कंस्ट्रक्टर (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] और विधियों के साथ [[वर्ग (कंप्यूटर प्रोग्रामिंग)]] के उपयोग के लिए भी उल्लेखनीय है, लेकिन [[वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)]] के बिना।
मुख्य योगदान में [[सार डेटा प्रकार]] सम्मिलित हैं,<ref>{{Cite conference |doi= 10.1145/800233.807045 |chapter= Programming with abstract data types |title= Proceedings of the ACM SIGPLAN symposium on Very high level languages |pages= 50–59 |year= 1974 |last1= Liskov |first1= Barbara |author-link1= Barbara Liskov |last2= Zilles |first2= Stephen |citeseerx= 10.1.1.136.3043 }}</ref> [[कॉल-बाय-शेयरिंग]], [[इटरेटर|इंटररेटर्स]], एकाधिक रिटर्न मान ([[समानांतर असाइनमेंट]] का एक रूप), प्रकार-सेफ [[पैरामीटरयुक्त प्रकार]] और प्रकार-सुरक्षित संस्करण प्रकार सम्मिलित है। यह [[कंस्ट्रक्टर (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] और विधियों के साथ [[वर्ग (कंप्यूटर प्रोग्रामिंग)|कक्षाओं (कंप्यूटर प्रोग्रामिंग)]] के उपयोग के लिए भी उल्लेखनीय है, परन्तु [[वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)]] के बिना।


== क्लस्टर ==
== क्लस्टर ==
CLU का वाक्य-विन्यास [[ALGOL]] पर आधारित था, जो तब अधिकांश नए भाषा डिजाइनों के लिए शुरुआती बिंदु था। मुख्य जोड़ क्लस्टर की अवधारणा, सीएलयू की प्रकार विस्तार प्रणाली और भाषा के नाम की जड़ (सीएलयूस्टर) थी।<ref name=Liskov1977>{{Cite journal |last1= Liskov |first1= B. |author-link1= Barbara Liskov |last2= Snyder |first2= A. |last3= Atkinson |first3= R. |last4= Schaffert |first4= C. |title= Abstraction mechanisms in CLU |doi= 10.1145/359763.359789 |journal= [[Communications of the ACM]] |volume= 20 |issue= 8 |pages= 564–576 |date=August 1977 |citeseerx=10.1.1.112.656 |s2cid= 17343380 }}</ref> क्लस्टर आम तौर पर ओओ भाषा में कक्षा की अवधारणा के अनुरूप होते हैं। उदाहरण के लिए, यहाँ एक क्लस्टर के लिए CLU सिंटैक्स है जो [[जटिल संख्या]]ओं को लागू करता है:
सीएलयू का वाक्य-विन्यास [[ALGOL]] पर आधारित था, जो तब अधिकांश नए भाषा प्रारूपों के लिए प्रारंभिक बिंदु था। मुख्य जोड़ क्लस्टर की अवधारणा, सीएलयू की प्रकार विस्तार प्रणाली और भाषा के नाम की जड़ थी।<ref name=Liskov1977>{{Cite journal |last1= Liskov |first1= B. |author-link1= Barbara Liskov |last2= Snyder |first2= A. |last3= Atkinson |first3= R. |last4= Schaffert |first4= C. |title= Abstraction mechanisms in CLU |doi= 10.1145/359763.359789 |journal= [[Communications of the ACM]] |volume= 20 |issue= 8 |pages= 564–576 |date=August 1977 |citeseerx=10.1.1.112.656 |s2cid= 17343380 }}</ref> क्लस्टर सामान्यतः ओओ भाषा में कक्षा की अवधारणा के अनुरूप होते हैं। उदाहरण के लिए, यहाँ एक क्लस्टर के लिए सीएलयू सिंटैक्स है जो [[जटिल संख्या]]ओं को लागू करता है:
<!-- Not actually Algol 68, but this attribute is required-->
     complex_number = cluster is add, subtract, multiply, ...
<पूर्व>
     complex_number = क्लस्टर जोड़ना, घटाना, गुणा करना, ...
        प्रतिनिधि = रिकॉर्ड [वास्तविक_भाग: वास्तविक, कल्पना_भाग: वास्तविक]
        जोड़ें = खरीद ... अंत जोड़ें;
        घटाना = खरीद ... अंत घटाना;
        गुणा = प्रोक ... अंत गुणा;
        ...
    अंत जटिल_संख्या;
</पूर्व>


एक क्लस्टर एक मॉड्यूल है जो इसके सभी घटकों को समाहित करता है सिवाय उन लोगों के जिन्हें स्पष्ट रूप से खंड में नामित किया गया है। ये हाल ही की ओओ भाषाओं में कक्षा के सार्वजनिक घटकों से मेल खाते हैं। एक क्लस्टर एक प्रकार को भी परिभाषित करता है जिसे क्लस्टर के बाहर नाम दिया जा सकता है (इस मामले में, complex_number), लेकिन इसका प्रतिनिधित्व प्रकार (प्रतिनिधि) बाहरी ग्राहकों से छिपा हुआ है।
        rep = record [ real_part: real, imag_part: real ]
        add = proc ... end add;
        subtract = proc ... end subtract;
        multiply = proc ... end multiply;
        ...
    end complex_number;
क्लस्टर एक प्रारूप है जो इसके सभी घटकों को समाहित करता है सिवाय उन लोगों के जिन्हें स्पष्ट रूप से खंड में नामित किया गया है। ये हाल ही की ओओ भाषाओं में कक्षा के सार्वजनिक घटकों से मेल खाते हैं। एक क्लस्टर एक प्रकार को भी परिभाषित करता है जिसे क्लस्टर के बाहर नाम दिया जा सकता है (इस मामले में, कॉम्प्लेक्स_नंबर), परन्तु इसका प्रतिनिधित्व प्रकार बाहरी ग्राहकों से छिपा हुआ है।


क्लस्टर नाम वैश्विक हैं, और समूह समूहों को कोई नामस्थान तंत्र प्रदान नहीं किया गया था या उन्हें अन्य समूहों के अंदर स्थानीय रूप से बनाने की अनुमति नहीं दी गई थी।
क्लस्टर नाम वैश्विक हैं, और समूहों को कोई नाम स्थान तंत्र प्रदान नहीं किया गया था या उन्हें अन्य समूहों के अंदर स्थानीय रूप से बनाने की अनुमति नहीं दी गई थी।
 
एक क्लस्टर में, स्पष्ट प्रकार के रूपांतरण सार प्रकार और प्रतिनिधित्व के बीच ऊपर और नीचे बदलते हैं; इन प्रकारों के बीच निहित रूपांतरणों को विशेष प्रकार के सीवीटी का उपयोग करके दर्शाया गया है। सीएलयू अन्यथा निहित प्रकार के रूपांतरण नहीं करता है। एक सार्वभौमिक प्रकार कोई भी है, और एक प्रक्रिया बल यह जांचने के लिए कि कोई वस्तु एक निश्चित प्रकार है। वस्तुएं परस्पर या अपरिवर्तनीय हो सकती हैं, बाद वाले आधार प्रकार जैसे पूर्णांक, बूलियन, वर्ण और तार।<ref name="Liskov1977" />


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




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


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


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


CLU में एक अंतिम विशिष्ट विशेषता समानांतर असाइनमेंट (बहु असाइनमेंट) है, जहां एक [[असाइनमेंट (कंप्यूटर विज्ञान)]] ऑपरेटर के बाईं ओर एक से अधिक चर दिखाई दे सकते हैं। उदाहरण के लिए, लेखन <code>x,y := y,x</code> के मूल्यों का आदान-प्रदान करेगा <code>x</code> और <code>y</code>. उसी तरह, फ़ंक्शन कई मान लौटा सकते हैं, जैसे {{CLU|1=x,y,z := f(t)}}. समानांतर असाइनमेंट (हालांकि कई वापसी मान नहीं) CLU से पहले का है, CPL (प्रोग्रामिंग लैंग्वेज) (1963) में दिखाई देता है, जिसका नाम समकालिक असाइनमेंट है,<ref>{{cite journal |first1= D. W. |last1= Barron |first2= J. N. |last2= Buxton |first3= D. F. |last3= Hartley |first4= E. |last4= Nixon |first5= C. |last5= Strachey |title= The main features of CPL |journal= Computer Journal |volume= 6 |issue= 2 |pages= 134–143 |date= 1963 |doi= 10.1093/comjnl/6.2.134|doi-access= free }}</ref> लेकिन सीएलयू ने इसे लोकप्रिय बनाया और अक्सर बाद की भाषाओं में समानांतर असाइनमेंट के प्रत्यक्ष प्रभाव के रूप में इसका श्रेय दिया जाता है।
सीएलयू में एक अंतिम विशिष्ट विशेषता समानांतर असाइनमेंट (बहु असाइनमेंट) है, जहां एक [[असाइनमेंट (कंप्यूटर विज्ञान)]] ऑपरेटर के बाईं ओर एक से अधिक चर दिखाई दे सकते हैं। उदाहरण के लिए, लेखन <code>x,y := y,x</code> के मूल्यों का आदान-प्रदान करेगा <code>x</code> और <code>y</code>. उसी तरह, फ़ंक्शन कई मान लौटा सकते हैं, जैसे {{CLU|1=x,y,z := f(t)}}. समानांतर असाइनमेंट (हालांकि कई वापसी मान नहीं) सीएलयू से पहले का है, CPL (प्रोग्रामिंग लैंग्वेज) (1963) में दिखाई देता है, जिसका नाम समकालिक असाइनमेंट है,<ref>{{cite journal |first1= D. W. |last1= Barron |first2= J. N. |last2= Buxton |first3= D. F. |last3= Hartley |first4= E. |last4= Nixon |first5= C. |last5= Strachey |title= The main features of CPL |journal= Computer Journal |volume= 6 |issue= 2 |pages= 134–143 |date= 1963 |doi= 10.1093/comjnl/6.2.134|doi-access= free }}</ref> लेकिन सीएलयू ने इसे लोकप्रिय बनाया और अक्सर बाद की भाषाओं में समानांतर असाइनमेंट के प्रत्यक्ष प्रभाव के रूप में इसका श्रेय दिया जाता है।


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


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


== प्रभाव ==
== प्रभाव ==
CLU और Ada (प्रोग्रामिंग भाषा) [[C++]] [[Template (C++)]] के लिए प्रमुख प्रेरणा थे।<ref name="history-of-cpp"/>
सीएलयू और Ada (प्रोग्रामिंग भाषा) [[C++]] [[Template (C++)]] के लिए प्रमुख प्रेरणा थे।<ref name="history-of-cpp"/>


CLU के अपवाद प्रबंधन तंत्र ने बाद की भाषाओं जैसे C++ को प्रभावित किया<ref name="history-of-cpp"/>और [[जावा (प्रोग्रामिंग भाषा)]]।{{Citation needed|date=August 2020}}
सीएलयू के अपवाद प्रबंधन तंत्र ने बाद की भाषाओं जैसे C++ को प्रभावित किया<ref name="history-of-cpp"/>और [[जावा (प्रोग्रामिंग भाषा)]]।{{Citation needed|date=August 2020}}
[[Sather]], Python (प्रोग्रामिंग लैंग्वेज), और C Sharp (प्रोग्रामिंग लैंग्वेज) | C# में इटरेटर शामिल हैं, जो पहली बार CLU में दिखाई दिए।<ref name="History"/>
[[Sather]], Python (प्रोग्रामिंग लैंग्वेज), और C Sharp (प्रोग्रामिंग लैंग्वेज) | C# में इटरेटर शामिल हैं, जो पहली बार सीएलयू में दिखाई दिए।<ref name="History"/>


[[पर्ल]] और [[लुआ (प्रोग्रामिंग भाषा)]] ने सीएलयू से फंक्शन कॉल्स से कई असाइनमेंट और मल्टीपल रिटर्न लिए।<ref>{{Cite conference |last1= Ierusalimschy |first1= R. |last2= De Figueiredo |first2= L. H. |last3= Celes |first3= W. |doi= 10.1145/1238844.1238846 |chapter= The evolution of Lua |title= Proceedings of the third ACM SIGPLAN conference on History of programming languages – HOPL III |pages= 2-1–2-26 |year= 2007 |isbn= 978-1-59593-766-7 |chapter-url=http://www.lua.org/doc/hopl.pdf |archive-url=https://web.archive.org/web/20100703022703/http://www.lua.org/doc/hopl.pdf |archive-date=2010-07-03 |url-status=live}}</ref>
[[पर्ल]] और [[लुआ (प्रोग्रामिंग भाषा)]] ने सीएलयू से फंक्शन कॉल्स से कई असाइनमेंट और मल्टीपल रिटर्न लिए।<ref>{{Cite conference |last1= Ierusalimschy |first1= R. |last2= De Figueiredo |first2= L. H. |last3= Celes |first3= W. |doi= 10.1145/1238844.1238846 |chapter= The evolution of Lua |title= Proceedings of the third ACM SIGPLAN conference on History of programming languages – HOPL III |pages= 2-1–2-26 |year= 2007 |isbn= 978-1-59593-766-7 |chapter-url=http://www.lua.org/doc/hopl.pdf |archive-url=https://web.archive.org/web/20100703022703/http://www.lua.org/doc/hopl.pdf |archive-date=2010-07-03 |url-status=live}}</ref>
Line 71: Line 68:
* {{Official website|pmg.csail.mit.edu/CLU.html}}
* {{Official website|pmg.csail.mit.edu/CLU.html}}
* {{cite web |url=http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-561.pdf |title=A History of CLU |first=Barbara |last=Liskov |date=April 1992 |archive-url=https://web.archive.org/web/20030917041834/http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-561.pdf |archive-date=2003-09-17 |id=MIT-LCS-TR-561 }}
* {{cite web |url=http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-561.pdf |title=A History of CLU |first=Barbara |last=Liskov |date=April 1992 |archive-url=https://web.archive.org/web/20030917041834/http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-561.pdf |archive-date=2003-09-17 |id=MIT-LCS-TR-561 }}
* [http://woodsheep.jp/clu2c.html clu2c]: a program to compile CLU code to [[C (programming language)|C]]
* [http://woodsheep.jp/clu2c.html सीएलयू2c]: a program to compile सीएलयू code to [[C (programming language)|C]]
* [http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_key=CLU Dictionary of Programming Languages]
* [http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_key=CLU Dictionary of Programming Languages]
* [http://99-bottles-of-beer.net/language-clu-133.html CLU] comparison at '99 bottles of beer' multi-language demo algorithm site
* [http://99-bottles-of-beer.net/language-clu-133.html सीएलयू] comparison at '99 bottles of beer' multi-language demo algorithm site
* {{cite book |first1=B. |last1=Liskov |first2=R. |last2=Atkinson |first3=T. |last3=Bloom |first4=E. |last4=Moss |first5=J.C. |last5=Schaffert |first6=R. |last6=Scheifler |first7=A. |last7=Snyder |title=CLU Reference Manual |publisher=Springer |date=1981 |isbn=9783540108368 |series=Lecture Notes in Computer Science |volume=114 |doi=10.1007/BFb0035014|s2cid=27382594 }}
* {{cite book |first1=B. |last1=Liskov |first2=R. |last2=Atkinson |first3=T. |last3=Bloom |first4=E. |last4=Moss |first5=J.C. |last5=Schaffert |first6=R. |last6=Scheifler |first7=A. |last7=Snyder |title=CLU Reference Manual |publisher=Springer |date=1981 |isbn=9783540108368 |series=Lecture Notes in Computer Science |volume=114 |doi=10.1007/BFb0035014|s2cid=27382594 }}



Revision as of 02:56, 1 March 2023

CLU
Paradigmmulti-paradigm: object-oriented, procedural
द्वारा डिज़ाइन किया गयाBarbara Liskov and her students
DeveloperMassachusetts Institute of Technology
पहली प्रस्तुति1975; 49 years ago (1975)
Stable release
Native CLU 1.5 (SPARC, VAX) / May 26, 1989; 35 years ago (1989-05-26)[1]

Portable CLU / November 6, 2009; 14 years ago (2009-11-06)[2]

टाइपिंग अनुशासनstrong
वेबसाइटpmg.csail.mit.edu/CLU.html
Major implementations
PDP-10 CLU,[3] Native CLU,[1] Portable CLU,[2] clu2c[4]
Influenced by
ALGOL 60, Lisp, Simula, Alphard
Influenced
Ada, Argus, C++,[5] Lua, Python,[6] Ruby, Sather, Swift[7]

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

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

क्लस्टर

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

   complex_number = cluster is add, subtract, multiply, ...
        rep = record [ real_part: real, imag_part: real ]
        add = proc ... end add;
        subtract = proc ... end subtract;
        multiply = proc ... end multiply;
        ...
    end complex_number;

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

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

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


अन्य विशेषताएं

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

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

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

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

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

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

प्रभाव

सीएलयू और Ada (प्रोग्रामिंग भाषा) C++ Template (C++) के लिए प्रमुख प्रेरणा थे।[5]

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

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


संदर्भ

  1. 1.0 1.1 Curtis, Dorothy (2009-11-06). "CLU home page". Programming Methodology Group, Computer Science and Artificial Intelligence Laboratory. Massachusetts Institute of Technology. Retrieved 2016-05-26.
  2. 2.0 2.1 Curtis, Dorothy (2009-11-06). "Index of /pub/pclu". Programming Methodology Group, Computer Science and Artificial Intelligence Laboratory. Massachusetts Institute of Technology. Retrieved 2016-05-26.
  3. "CLU files, 1976–1989". Tapes of Tech Square (ToTS) collection, MC-0741. Department of Distinctive Collections, Massachusetts Institute of Technology. swh:1:dir:5dc935d1c236b15a99b0750cf236b2d89ec951d0.
  4. Ushijima, Tetsu. "clu2c". clu2c. woodsheep.jp. Retrieved 2016-05-26.
  5. 5.0 5.1 5.2 Stroustrup, Bjarne (1996). A History of C++: 1979--1991. New York, NY, USA: Association for Computing Machinery. p. 699–769. Retrieved 25 March 2022.
  6. Lundh, Fredrik. "Call By Object". effbot.org. Archived from the original on 23 November 2019. Retrieved 21 November 2017. replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model.
  7. Lattner, Chris (2014-06-03). "Chris Lattner's Homepage". Chris Lattner. Retrieved 2014-06-03. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
  8. 8.0 8.1 Liskov, Barbara (1992). "A history of CLU". The second ACM SIGPLAN conference on History of programming languages.
  9. Liskov, Barbara; Zilles, Stephen (1974). "Programming with abstract data types". Proceedings of the ACM SIGPLAN symposium on Very high level languages. pp. 50–59. CiteSeerX 10.1.1.136.3043. doi:10.1145/800233.807045.
  10. 10.0 10.1 10.2 Liskov, B.; Snyder, A.; Atkinson, R.; Schaffert, C. (August 1977). "Abstraction mechanisms in CLU". Communications of the ACM. 20 (8): 564–576. CiteSeerX 10.1.1.112.656. doi:10.1145/359763.359789. S2CID 17343380.
  11. Barron, D. W.; Buxton, J. N.; Hartley, D. F.; Nixon, E.; Strachey, C. (1963). "The main features of CPL". Computer Journal. 6 (2): 134–143. doi:10.1093/comjnl/6.2.134.
  12. Ierusalimschy, R.; De Figueiredo, L. H.; Celes, W. (2007). "The evolution of Lua" (PDF). Proceedings of the third ACM SIGPLAN conference on History of programming languages – HOPL III. pp. 2-1–2-26. doi:10.1145/1238844.1238846. ISBN 978-1-59593-766-7. Archived (PDF) from the original on 2010-07-03.
  13. "Ruby's Roots and Matz's Leadership". Appfolio Engineering. 2019-11-08. Retrieved 2019-11-15. Matz feels that blocks are the greatest invention of Ruby (I agree.) He got the idea from a 1970s language called CLU from MIT, which called them 'iterators'...
  14. "Functional Programming HOWTO — Python 3.8.3 documentation". docs.python.org. Retrieved 2020-05-25.


बाहरी संबंध