क्लीन (प्रोग्रामिंग लैंग्वेज): Difference between revisions
(text) |
No edit summary |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Infobox programming language | {{Infobox programming language | ||
| name = | | name = क्लीन | ||
| logo = Clean 3.0 (programming language) logo.svg | | logo = Clean 3.0 (programming language) logo.svg | ||
| paradigm = [[Functional programming|functional]] | | paradigm = [[Functional programming|functional]] | ||
Line 17: | Line 16: | ||
}} | }} | ||
क्लीन सामान्य-उद्देश्यीय पूर्णतया [[विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग|कार्यात्मक]] कंप्यूटर [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] है | | '''क्लीन''' सामान्य-उद्देश्यीय पूर्णतया [[विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग|कार्यात्मक]] कंप्यूटर [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] है | इसे '''समवर्ती क्लीन सिस्टम''' (स्वच्छ प्रणाली) कहा गया,<ref>{{cite web |url=https://ftp.cs.ru.nl/Clean/old/Clean07/Sun4/README |title=Clean 0.7: Readme |archive-url=https://web.archive.org/web/20190524121044/https://ftp.cs.ru.nl/Clean/old/Clean07/Sun4/README |archive-date=2019-05-24}}</ref> फिर '''क्लीन सिस्टम''',<ref>{{cite web |url=https://ftp.cs.ru.nl/Clean/old/Clean10/README |title=Clean 1.0: Readme |archive-url=https://web.archive.org/web/20190505113256/https://ftp.cs.ru.nl/Clean/old/Clean10/README |archive-date=2019-05-05}}</ref><ref>{{cite web |url=https://ftp.cs.ru.nl/Clean/Clean13/README |title=Clean 1.3: Readme |archive-url=https://web.archive.org/web/20190427194714/https://ftp.cs.ru.nl/Clean/Clean13/README |archive-date=2019-04-27}}</ref> बाद में केवल '''क्लीन''' कहा गया। क्लीन को 1987 से निजमेजेन में रेडबौड विश्वविद्यालय के शोधकर्ताओं के समूह द्वारा विकसित किया गया है।<ref>{{cite web |url=https://www.mbsd.cs.ru.nl/Software |title=Radboud University Nijmegen: Department of Software Science: Software}}</ref> | ||
==सुविधाएँ== | ==सुविधाएँ== | ||
क्लीन लैंग्वेज पहली बार 1987 में सामने आई।<ref>{{cite web |url=http://wiki.clean.cs.ru.nl/सामान्य प्रश्न|access-date=2021-11-26 |title=सामान्य प्रश्न|website=Clean}}</ref> | क्लीन लैंग्वेज पहली बार 1987 में सामने आई।<ref>{{cite web |url=http://wiki.clean.cs.ru.nl/सामान्य प्रश्न|access-date=2021-11-26 |title=सामान्य प्रश्न|website=Clean}}</ref> चूंकि लैंग्वेज का विकास धीमा हो गया है, कुछ शोधकर्ता अभी भी लैंग्वेज पर काम कर रहे हैं।<ref>{{cite web |url=https://clean.cs.ru.nl/प्रकाशनों|access-date=2021-11-26 |title=प्रकाशनों|website=Clean}}</ref> 2018 में, स्पिन-ऑफ कंपनी की स्थापना की गई जो क्लीन का उपयोग करती है।<ref>{{cite web |url=https://www.top-software.nl/ |title=घर|website=TOP Software Technology |access-date=26 November 2021}}</ref> | ||
क्लीन अपनी छोटी सहोदर लैंग्वेज, [[हास्केल]] के साथ कई गुण और सिंटेक्स (वाक्य विन्यास) (प्रोग्रामिंग भाषाएं) साझा करता है: [[संदर्भात्मक पारदर्शिता]], [[सूची समझ]], [[गार्ड (कंप्यूटिंग)]], कचरा संग्रह (कंप्यूटर विज्ञान), [[उच्च क्रम के कार्य]], [[करी]]इंग और [[आलसी मूल्यांकन]] है। | क्लीन अपनी छोटी सहोदर लैंग्वेज, [[हास्केल]] के साथ कई गुण और सिंटेक्स (वाक्य विन्यास) (प्रोग्रामिंग भाषाएं) साझा करता है: [[संदर्भात्मक पारदर्शिता]], [[सूची समझ]], [[गार्ड (कंप्यूटिंग)]], कचरा संग्रह (कंप्यूटर विज्ञान), [[उच्च क्रम के कार्य]], [[करी]]इंग और [[आलसी मूल्यांकन]] है। चूंकि, हास्केल के [[मोनाड (कार्यात्मक प्रोग्रामिंग)]] के उपयोग के विपरीत, क्लीन [[विशिष्टता प्रकार|विशिष्टता टाइप]] प्रणाली के माध्यम से परिवर्तनशील स्थिति और इनपुट/आउटपुट (I/O) से संबंधित है। [[ संकलक |कंपाइलर]] (अनुभाषक) अधिक कुशल कोड उत्पन्न करने के लिए विशिष्टता टाइप प्रणाली का लाभ उठाता है, क्योंकि वह जानता है कि प्रोग्राम के निष्पादन के दौरान किसी भी बिंदु पर, अद्वितीय टाइप के मान के लिए केवल एक संदर्भ सम्मिलित हो सकता है। इसलिए, अद्वितीय मान को स्थान पर बदला जा सकता है।<ref name="CleanHaskellGuide">ftp://ftp.cs.ru.nl/pub/Clean/papers/2007/achp2007-CleanHaskellQuickGuide.pdf</ref> | ||
[[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] के लिए एकीकृत विकास वातावरण (आईडीई) क्लीन वितरण में | [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] के लिए एकीकृत विकास वातावरण (आईडीई) क्लीन वितरण में सम्मिलित है। | ||
==उदाहरण== | ==उदाहरण== | ||
Line 89: | Line 88: | ||
=== एबीसी मशीन === | === एबीसी मशीन === | ||
ऊपर उल्लिखित एबीसी कोड [[अमूर्त मशीन]] के लिए [[मध्यवर्ती प्रतिनिधित्व]] है। क्योंकि एबीसी कोड के लिए मशीन कोड जनरेशन अपेक्षाकृत सरल है, इससे नए संरचना का समर्थन करना आसान हो जाता है। एबीसी मशीन [[अनिवार्य प्रोग्रामिंग|आदेशसूचक प्रोग्रामिंग]] अमूर्त ग्राफ पुनर्लेखन मशीन है।<ref>{{cite thesis|type=PhD|last1=Koopman|first1=Pieter|title=निष्पादन योग्य विशिष्टताओं के रूप में कार्यात्मक कार्यक्रम|date=December 10, 1990|publisher=Katholieke Universiteit Nijmegen|isbn=90-9003689-X|page=35}}</ref> इसमें दोबारा लिखे जा रहे क्लीन ग्राफ़ को रखने के लिए ग्राफ़ स्टोर और तीन स्टैक | ऊपर उल्लिखित एबीसी कोड [[अमूर्त मशीन]] के लिए [[मध्यवर्ती प्रतिनिधित्व]] है। क्योंकि एबीसी कोड के लिए मशीन कोड जनरेशन अपेक्षाकृत सरल है, इससे नए संरचना का समर्थन करना आसान हो जाता है। एबीसी मशीन [[अनिवार्य प्रोग्रामिंग|आदेशसूचक प्रोग्रामिंग]] अमूर्त ग्राफ पुनर्लेखन मशीन है।<ref>{{cite thesis|type=PhD|last1=Koopman|first1=Pieter|title=निष्पादन योग्य विशिष्टताओं के रूप में कार्यात्मक कार्यक्रम|date=December 10, 1990|publisher=Katholieke Universiteit Nijmegen|isbn=90-9003689-X|page=35}}</ref> इसमें दोबारा लिखे जा रहे क्लीन ग्राफ़ को रखने के लिए ग्राफ़ स्टोर और तीन स्टैक सम्मिलित हैं। A(rgument)-स्टैक में ऐसे तर्क होते हैं जो ग्राफ़ स्टोर में नोड्स को संदर्भित करते हैं। B(asic मान)-स्टैक में बुनियादी मान (पूर्णांक, वर्ण, वास्तविक, आदि) होते हैं। चूंकि यह बिल्कुल आवश्यक नहीं है (ये सभी तत्व ग्राफ़ स्टोर में भी नोड हो सकते हैं), एक अलग स्टैक का उपयोग करना अधिक कुशल है। C(ontrol)-स्टैक प्रवाह नियंत्रण के लिए निर्वाचित एड्रेस रखता है। [[रनटाइम सिस्टम|कार्यावधि सिस्टम]], जो प्रत्येक निष्पादन योग्य से जुड़ा हुआ है, एक<code>Start</code> बनाता है ग्राफ़ स्टोर में नोड और इसे ए-स्टैक पर जोर देता है। फिर यह आवश्यकतानुसार इसका मूल्यांकन करते हुए इसे प्रिंट करना प्रारंभ कर देता है। | ||
=== ब्राउज़र में क्लीन चलाना === | === ब्राउज़र में क्लीन चलाना === | ||
चूंकि क्लीन का उपयोग सामान्यतः देशी निष्पादन योग्य बनाने के लिए किया जाता है, कई परियोजनाओं ने [[वेब ब्राउज़र]] में अनुप्रयोगों को सक्षम किया है। अब परित्यक्त [https://clean.cs.ru.nl/SAPL SAPL] प्रोजेक्ट ने कोर क्लीन को [[जावास्क्रिप्ट]] में संकलित किया और एबीसी कोड का उपयोग नहीं किया। 2019 से, [[WebAssembly|वेबअसेंबली]] में लिखे गए एबीसी कोड के लिए दुभाषिया का उपयोग किया जाता है।<ref>{{cite web |title=Clean and iTasks / ABC Interpreter · GitLab |url=https://gitlab.com/clean-and-itasks/abc-interpreter |website=Clean and iTasks on GitLab |access-date=13 April 2023 |language=en}}</ref><ref>{{cite journal |last1=Staps |first1=Camil |last2=van Groningen |first2=John |last3=Plasmeijer |first3=Rinus |title=सैंडबॉक्सिंग और वितरित सिस्टम के लिए संकलित और व्याख्या किए गए कोड की आलसी इंटरवर्किंग|journal=Proceedings of the 31st Symposium on Implementation and Application of Functional Languages |date=15 July 2021 |pages=1–12 |doi=10.1145/3412932.3412941}}</ref> | |||
==प्लेटफ़ॉर्म== | ==प्लेटफ़ॉर्म== | ||
क्लीन माइक्रोसॉफ्ट विंडोज ([[IA-32]] और [[X86-64]]), [[macOS|मैक ओएस]] (X86-64), और [[Linux|लिनक्स]] (IA-32, X86-64, और [[AArch64]]) के लिए उपलब्ध है। | क्लीन माइक्रोसॉफ्ट विंडोज ([[IA-32]] और [[X86-64]]), [[macOS|मैक ओएस]] (X86-64), और [[Linux|लिनक्स]] (IA-32, X86-64, और [[AArch64]]) के लिए उपलब्ध है। | ||
Line 102: | Line 101: | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! rowspan=2 | | ! rowspan=2 |संस्करण | ||
! rowspan=2 | | ! rowspan=2 |तारीख | ||
! colspan=3 | [[Linux|लिनक्स]] | ! colspan=3 | [[Linux|लिनक्स]] | ||
! colspan=3 | [[macOS|मैक ओएस]] | ! colspan=3 | [[macOS|मैक ओएस]] | ||
! [[Oracle Solaris]] | ! [[Oracle Solaris|ओरेकल सोलारिस]] | ||
! colspan=2 | [[Windows]] | ! colspan=2 | [[Windows|विंडोज]] | ||
! rowspan=2 | | ! rowspan=2 |विविध | ||
|- | |- | ||
! [[IA-32]] | ! [[IA-32]] | ||
! [[x86-64]] | ! [[x86-64]] | ||
! [[AArch64]] | ! [[AArch64]] | ||
! [[Motorola 68040]] | ! [[Motorola 68040|मोटोरोला 68040]] | ||
! [[PowerPC]] | ! [[PowerPC|पावरपीसी]] | ||
! [[x86-64]] | ! [[x86-64]] | ||
! [[SPARC]] | ! [[SPARC|स्पार्क]] | ||
! [[IA-32]] | ! [[IA-32]] | ||
! [[x86-64]] | ! [[x86-64]] | ||
|- | |- | ||
| 3.1 || | | 3.1 ||5 जनवरी 2022 | ||
| {{Yes}} || {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} | ||
| {{No}} || {{No}} || {{Yes}} | | {{No}} || {{No}} || {{Yes}} | ||
Line 127: | Line 126: | ||
| | | | ||
|- | |- | ||
| 3.0 || | | 3.0 ||2 अक्टूबर 2018 | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
| {{No}} || {{No}} || {{Yes}} | | {{No}} || {{No}} || {{Yes}} | ||
Line 134: | Line 133: | ||
| | | | ||
|- | |- | ||
| 2.4 || | | 2.4 ||23 दिसंबर 2011 | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
| {{No}} || {{No}} || {{Yes}} | | {{No}} || {{No}} || {{Yes}} | ||
Line 141: | Line 140: | ||
| | | | ||
|- | |- | ||
| 2.3 || | | 2.3 ||22 दिसंबर 2010 | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
Line 148: | Line 147: | ||
| | | | ||
|- | |- | ||
| 2.2 || | | 2.2 ||19 दिसंबर 2006 | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 155: | Line 154: | ||
| | | | ||
|- | |- | ||
| 2.1.1 || | | 2.1.1 ||31 मई 2005 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 162: | Line 161: | ||
| | | | ||
|- | |- | ||
| 2.1.0 || | | 2.1.0 ||31 अक्टूबर 2003 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 169: | Line 168: | ||
| | | | ||
|- | |- | ||
| 2.0.2 || | | 2.0.2 ||12 दिसंबर 2002 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 176: | Line 175: | ||
| | | | ||
|- | |- | ||
| 2.0.1 || | | 2.0.1 ||4 जुलाई 2002 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 183: | Line 182: | ||
| | | | ||
|- | |- | ||
| 2.0 || | | 2.0 ||21 दिसंबर 2001 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
Line 190: | Line 189: | ||
| | | | ||
|- | |- | ||
| 1.3.3 || | | 1.3.3 ||13 सितंबर 2000 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 197: | Line 196: | ||
| | | | ||
|- | |- | ||
| 1.3.2 || | | 1.3.2 ||1 जुलाई 1999 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
Line 204: | Line 203: | ||
| | | | ||
|- | |- | ||
| 1.3.1 || | | 1.3.1 ||जनवरी 1999 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 211: | Line 210: | ||
| | | | ||
|- | |- | ||
| 1.3 || | | 1.3 ||22 मई 1998 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{Yes}} || {{No}} | | {{No}} || {{Yes}} || {{No}} | ||
Line 218: | Line 217: | ||
| | | | ||
|- | |- | ||
| 1.2.4 || | | 1.2.4 ||जून 1997 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
Line 225: | Line 224: | ||
| | | | ||
|- | |- | ||
| 1.2.3 || | | 1.2.3 ||मई 1997 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
Line 232: | Line 231: | ||
| | | | ||
|- | |- | ||
| 1.2 || | | 1.2 ||13 जनवरी 1997 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{Yes}} || {{No}} | | {{Yes}} || {{Yes}} || {{No}} | ||
Line 239: | Line 238: | ||
| | | | ||
|- | |- | ||
| 1.1.3 || | | 1.1.3 ||अक्टूबर 1996 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} | | {{Yes}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| [[OS/2 | | [[OS/2|ओएस/2 (i80386)]] | ||
|- | |- | ||
| 1.1.2 || | | 1.1.2 ||सितंबर 1996 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} | | {{Yes}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| [[SunOS | | [[SunOS|सनओएस 4 (स्पार्क)]] | ||
|- | |- | ||
| 1.1 || | | 1.1 ||मार्च 1996 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
Line 260: | Line 259: | ||
| | | | ||
|- | |- | ||
| 1.0.2 || | | 1.0.2 ||सितंबर 1995 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{Yes}} | | {{Yes}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| [[OS/2 | | [[OS/2|ओएस/2 (i80386)]]; सनओएस 4 (स्पार्क) | ||
|- | |- | ||
| 1.0 || | | 1.0 ||मई 1995 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} | | {{No}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| [[OS/2 | | [[OS/2|ओएस/2 (i80386)]] | ||
|- | |- | ||
| 0.8.4 || | | 0.8.4 ||11 मई 1993 | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} | | {{No}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| | | प्रायोगिक [[Transputer#T8:_floating_point|T800 ट्रांसप्यूटर]] रिलीज़ | ||
|- | |- | ||
| 0.8.3 || | | 0.8.3 ||26 फ़रवरी 1993 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
Line 288: | Line 287: | ||
| | | | ||
|- | |- | ||
| 0.8.1 || | | 0.8.1 ||19 अक्टूबर 1992 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
Line 295: | Line 294: | ||
| | | | ||
|- | |- | ||
| 0.8 || | | 0.8 ||13 जुलाई 1992 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} | | {{No}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| [[OS/2 | | [[OS/2|ओएस/2 (i80386)]]; [[SunOS|सनओएस 3-4 (स्पार्क)]] | ||
|- | |- | ||
| 0.7 || | | 0.7 ||मई 1991 | ||
| {{No}} || {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} | ||
| {{Yes}} || {{No}} || {{No}} | | {{Yes}} || {{No}} || {{No}} | ||
| {{No}} | | {{No}} | ||
| {{No}} || {{No}} | | {{No}} || {{No}} | ||
| [[SunOS | | [[SunOS|सनओएस 3-4 (स्पार्क)]] | ||
|} | |} | ||
'''<big>हास्केल से तुलना</big>''' | |||
2008 के [[बेंचमार्क (कंप्यूटिंग)]] से पता चला कि क्लीन नेटिव कोड बेंचमार्क के आधार पर हास्केल ([[ग्लासगो हास्केल कंपाइलर]] (जीएचसी)) के समान प्रदर्शन करता है।<ref>{{cite journal |last1=Jansen |first1=Jan Martin |last2=Koopman |first2=Pieter |last3=Plasmeijer |first3=Rinus |date=2008 |title=व्याख्या से संकलन तक|url=ftp://ftp.cs.ru.nl/pub/Clean/papers/2008/janj08-CEFP07-InterpretationToCompilation.pdf |access-date=2016-05-21}}</ref> | |||
===वाक्यगत अंतर=== | ===वाक्यगत अंतर=== | ||
क्लीन का सिंटैक्स कुछ उल्लेखनीय अंतरों के साथ, हास्केल के समान है:<ref name="CleanHaskellGuide" /> | क्लीन का सिंटैक्स कुछ उल्लेखनीय अंतरों के साथ, हास्केल के समान है:<ref name="CleanHaskellGuide" /> | ||
Line 320: | Line 319: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! हास्केल | ||
! | !क्लीन | ||
! | !टिप्पणियां | ||
|- | |- | ||
| <syntaxhighlight lang="haskell">[ x | x <- [1..10] , isOdd x]</syntaxhighlight> | | <syntaxhighlight lang="haskell">[ x | x <- [1..10] , isOdd x]</syntaxhighlight> | ||
| <syntaxhighlight lang="clean">[ x \\ x <- [1..10] | isOdd x]</syntaxhighlight> | | <syntaxhighlight lang="clean">[ x \\ x <- [1..10] | isOdd x]</syntaxhighlight> | ||
| [[list comprehension]] | | [[list comprehension|सूची समझ]] | ||
|- | |- | ||
| <syntaxhighlight lang="haskell">x:xs</syntaxhighlight> | | <syntaxhighlight lang="haskell">x:xs</syntaxhighlight> | ||
| <syntaxhighlight lang="clean">[x:xs]</syntaxhighlight> | | <syntaxhighlight lang="clean">[x:xs]</syntaxhighlight> | ||
| [[cons]] | | [[cons|विपक्ष]] ऑपरेटर | ||
|- | |- | ||
| <syntaxhighlight lang="haskell"> | | <syntaxhighlight lang="haskell"> | ||
Line 342: | Line 341: | ||
| Node (Tree a) a (Tree a) | | Node (Tree a) a (Tree a) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| [[algebraic data type]] | | [[algebraic data type|बीजगणितीय डेटा प्रकार]] | ||
|- | |- | ||
| <syntaxhighlight lang="haskell">(Eq a, Eq b) => ...</syntaxhighlight> | | <syntaxhighlight lang="haskell">(Eq a, Eq b) => ...</syntaxhighlight> | ||
| <syntaxhighlight lang="clean">... | Eq a & Eq b</syntaxhighlight> | | <syntaxhighlight lang="clean">... | Eq a & Eq b</syntaxhighlight> | ||
| | |वर्ग के दावे और संदर्भ | ||
|- | |- | ||
| <syntaxhighlight lang="haskell">fun t@(Node l x r) = ...</syntaxhighlight> | | <syntaxhighlight lang="haskell">fun t@(Node l x r) = ...</syntaxhighlight> | ||
| <syntaxhighlight lang="clean">fun t=:(Node l x r) = ...</syntaxhighlight> | | <syntaxhighlight lang="clean">fun t=:(Node l x r) = ...</syntaxhighlight> | ||
| | |जैसे-पैटर्न | ||
|- | |- | ||
| <syntaxhighlight lang="haskell">if x > 10 then 10 else x</syntaxhighlight> | | <syntaxhighlight lang="haskell">if x > 10 then 10 else x</syntaxhighlight> | ||
| <syntaxhighlight lang="clean">if (x > 10) 10 x</syntaxhighlight> | | <syntaxhighlight lang="clean">if (x > 10) 10 x</syntaxhighlight> | ||
| | |यदि | ||
|} | |} | ||
सामान्य तौर पर, हास्केल ने क्लीन की तुलना में अधिक [[वाक्यात्मक शर्करा]] पेश की है। | सामान्य तौर पर, हास्केल ने क्लीन की तुलना में अधिक [[वाक्यात्मक शर्करा]] पेश की है। | ||
Line 369: | Line 368: | ||
{{Programming languages}} | {{Programming languages}} | ||
[[Category: | [[Category:CS1 English-language sources (en)]] | ||
[[Category:CS1 errors]] | |||
[[Category:CS1 maint]] | |||
[[Category:Collapse templates]] | |||
[[Category:Created On 24/07/2023]] | [[Category:Created On 24/07/2023]] | ||
[[Category:Machine Translated Page]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Pages with broken file links]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Wikipedia metatemplates]] | |||
[[Category:कार्यात्मक भाषाएँ]] | |||
[[Category:क्रॉस-प्लेटफ़ॉर्म मुफ़्त सॉफ़्टवेयर]] | |||
[[Category:टर्म-पुनर्लेखन प्रोग्रामिंग भाषाएँ]] | |||
[[Category:प्रोग्रामिंग भाषाएँ 1987 में बनाई गईं]] | |||
[[Category:मुफ़्त संकलक और दुभाषिए]] |
Latest revision as of 17:01, 21 August 2023
File:Clean 3.0 (programming language) logo.svg | |
Paradigm | functional |
---|---|
द्वारा डिज़ाइन किया गया | Software Technology Research Group of Radboud University Nijmegen |
पहली प्रस्तुति | 1987 |
Stable release | 3.1
/ 5 January 2022 |
टाइपिंग अनुशासन | strong, static, dynamic |
ओएस | Cross-platform |
लाइसेंस | Simplified BSD[1] |
फ़ाइल नाम एक्सटेंशनएस | .icl, .dcl, .abc |
वेबसाइट | clean |
Influenced by | |
Lean, Miranda, Haskell | |
Influenced | |
Haskell, Idris[2] |
क्लीन सामान्य-उद्देश्यीय पूर्णतया कार्यात्मक कंप्यूटर प्रोग्रामिंग लैंग्वेज है | इसे समवर्ती क्लीन सिस्टम (स्वच्छ प्रणाली) कहा गया,[3] फिर क्लीन सिस्टम,[4][5] बाद में केवल क्लीन कहा गया। क्लीन को 1987 से निजमेजेन में रेडबौड विश्वविद्यालय के शोधकर्ताओं के समूह द्वारा विकसित किया गया है।[6]
सुविधाएँ
क्लीन लैंग्वेज पहली बार 1987 में सामने आई।[7] चूंकि लैंग्वेज का विकास धीमा हो गया है, कुछ शोधकर्ता अभी भी लैंग्वेज पर काम कर रहे हैं।[8] 2018 में, स्पिन-ऑफ कंपनी की स्थापना की गई जो क्लीन का उपयोग करती है।[9]
क्लीन अपनी छोटी सहोदर लैंग्वेज, हास्केल के साथ कई गुण और सिंटेक्स (वाक्य विन्यास) (प्रोग्रामिंग भाषाएं) साझा करता है: संदर्भात्मक पारदर्शिता, सूची समझ, गार्ड (कंप्यूटिंग), कचरा संग्रह (कंप्यूटर विज्ञान), उच्च क्रम के कार्य, करीइंग और आलसी मूल्यांकन है। चूंकि, हास्केल के मोनाड (कार्यात्मक प्रोग्रामिंग) के उपयोग के विपरीत, क्लीन विशिष्टता टाइप प्रणाली के माध्यम से परिवर्तनशील स्थिति और इनपुट/आउटपुट (I/O) से संबंधित है। कंपाइलर (अनुभाषक) अधिक कुशल कोड उत्पन्न करने के लिए विशिष्टता टाइप प्रणाली का लाभ उठाता है, क्योंकि वह जानता है कि प्रोग्राम के निष्पादन के दौरान किसी भी बिंदु पर, अद्वितीय टाइप के मान के लिए केवल एक संदर्भ सम्मिलित हो सकता है। इसलिए, अद्वितीय मान को स्थान पर बदला जा सकता है।[10]
माइक्रोसॉफ़्ट विंडोज़ के लिए एकीकृत विकास वातावरण (आईडीई) क्लीन वितरण में सम्मिलित है।
उदाहरण
Start = "Hello, world!"
तथ्यात्मक:
fac :: Int -> Int
fac 0 = 1
fac n = n * fac (n-1)
Start = fac 10
|
fac :: Int -> Int
fac n = prod [1..n] // The product of the numbers 1 to n
Start = fac 10
|
fib :: Int -> Int
fib 0 = 1
fib 1 = 1
fib n = fib (n - 2) + fib (n - 1)
Start = fib 7
|
fibs :: Int Int -> [Int]
fibs x_2 x_1 = [x_2:fibs x_1 (x_2 + x_1)]
fib :: Int -> Int
fib n = (fibs 1 1) !! n
Start = fib 7
|
इन्फिक्स संकेतन ऑपरेटर:
(^) infixr 8 :: Int Int -> Int
(^) x 0 = 1
(^) x n = x * x ^ (n-1)
टाइप की घोषणा बताती है कि फ़ंक्शन प्राथमिकता 8 के साथ राइट एसोसिएटिव इन्फ़िक्स ऑपरेटर है: यह बताता है कि x*x^(n-1),
x*(x^(n-1))
के विपरीत (x*x)^(n-1)
के बराबर है। यह ऑपरेटर क्लीन मानक लाइब्रेरी StdEnv में पूर्व-परिभाषित है।
क्लीन कैसे काम करता है
कंप्यूटिंग ग्राफ पुनर्लेखन और ग्राफ कटौती पर आधारित है। संख्याएँ जैसे स्थिरांक ग्राफ़ हैं और फ़ंक्शंस ग्राफ़ पुनर्लेखन सूत्र हैं। यह, मूल कोड के कम्पीलिंग के साथ मिलकर, क्लीन प्रोग्राम बनाता है जो कंप्यूटर लैंग्वेज बेंचमार्क गेम के अनुसार उच्च अमूर्तता का उपयोग अपेक्षाकृत तेजी से चलाते हैं।[11]
कम्पीलिंग (अनुभाषक)
क्लीन टू मशीन कोड का कम्पीलिंग निम्नानुसार किया जाता है:
- स्रोत फ़ाइलें (.icl) और परिभाषा फ़ाइलें (.dcl) को क्लीन में लिखे गए कंपाइलर फ्रंटएंड द्वारा क्लीन के मूल संस्करण, कोर क्लीन में व्याख्या किया जाता है।
- व्याख्याकोर क्लीन को क्लीन और सी (प्रोग्रामिंग लैंग्वेज) में लिखे गए कंपाइलर बैकएंड द्वारा क्लीन की प्लेटफ़ॉर्म-स्वतंत्र मध्यवर्ती लैंग्वेज (.एबीसी) में परिवर्तित किया जाता है।
- इंटरमीडिएट एबीसी कोड को सी (प्रोग्रामिंग लैंग्वेज) में लिखे कोड जनरेटर द्वारा ऑब्जेक्ट कोड (.o) में परिवर्तित किया जाता है।
- ऑब्जेक्ट कोड को मॉड्यूल और कार्यावधि सिस्टम में अन्य फ़ाइलों के साथ जोड़ा जाता है और सिस्टम लिंकर (कंप्यूटिंग) (जब उपलब्ध हो) या विंडोज़ पर क्लीन में लिखे समर्पित लिंकर का उपयोग करके सामान्य निष्पादन योग्य में परिवर्तित किया जाता है।
क्लीन कंपाइलर के पहले संस्करण पूरी तरह से सी (प्रोग्रामिंग लैंग्वेज) में लिखे गए थे, इस टाइप बूटस्ट्रैपिंग (स्वोत्थान) समस्याओं से बचा गया था।
एबीसी मशीन
ऊपर उल्लिखित एबीसी कोड अमूर्त मशीन के लिए मध्यवर्ती प्रतिनिधित्व है। क्योंकि एबीसी कोड के लिए मशीन कोड जनरेशन अपेक्षाकृत सरल है, इससे नए संरचना का समर्थन करना आसान हो जाता है। एबीसी मशीन आदेशसूचक प्रोग्रामिंग अमूर्त ग्राफ पुनर्लेखन मशीन है।[12] इसमें दोबारा लिखे जा रहे क्लीन ग्राफ़ को रखने के लिए ग्राफ़ स्टोर और तीन स्टैक सम्मिलित हैं। A(rgument)-स्टैक में ऐसे तर्क होते हैं जो ग्राफ़ स्टोर में नोड्स को संदर्भित करते हैं। B(asic मान)-स्टैक में बुनियादी मान (पूर्णांक, वर्ण, वास्तविक, आदि) होते हैं। चूंकि यह बिल्कुल आवश्यक नहीं है (ये सभी तत्व ग्राफ़ स्टोर में भी नोड हो सकते हैं), एक अलग स्टैक का उपयोग करना अधिक कुशल है। C(ontrol)-स्टैक प्रवाह नियंत्रण के लिए निर्वाचित एड्रेस रखता है। कार्यावधि सिस्टम, जो प्रत्येक निष्पादन योग्य से जुड़ा हुआ है, एकStart
बनाता है ग्राफ़ स्टोर में नोड और इसे ए-स्टैक पर जोर देता है। फिर यह आवश्यकतानुसार इसका मूल्यांकन करते हुए इसे प्रिंट करना प्रारंभ कर देता है।
ब्राउज़र में क्लीन चलाना
चूंकि क्लीन का उपयोग सामान्यतः देशी निष्पादन योग्य बनाने के लिए किया जाता है, कई परियोजनाओं ने वेब ब्राउज़र में अनुप्रयोगों को सक्षम किया है। अब परित्यक्त SAPL प्रोजेक्ट ने कोर क्लीन को जावास्क्रिप्ट में संकलित किया और एबीसी कोड का उपयोग नहीं किया। 2019 से, वेबअसेंबली में लिखे गए एबीसी कोड के लिए दुभाषिया का उपयोग किया जाता है।[13][14]
प्लेटफ़ॉर्म
क्लीन माइक्रोसॉफ्ट विंडोज (IA-32 और X86-64), मैक ओएस (X86-64), और लिनक्स (IA-32, X86-64, और AArch64) के लिए उपलब्ध है।
कुछ लाइब्रेरी सभी प्लेटफ़ॉर्म पर उपलब्ध नहीं हैं, जैसे ऑब्जेक्टआईओ जो केवल विंडोज़ पर उपलब्ध है। साथ ही फ़ाइलों में गतिकी लिखने की सुविधा केवल विंडोज़ पर उपलब्ध है।
प्रति प्लेटफ़ॉर्म क्लीन की उपलब्धता प्रत्येक संस्करण के साथ भिन्न होती है:[15][16]
संस्करण | तारीख | लिनक्स | मैक ओएस | ओरेकल सोलारिस | विंडोज | विविध | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
IA-32 | x86-64 | AArch64 | मोटोरोला 68040 | पावरपीसी | x86-64 | स्पार्क | IA-32 | x86-64 | |||
3.1 | 5 जनवरी 2022 | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | |
3.0 | 2 अक्टूबर 2018 | Yes | Yes | No | No | No | Yes | No | Yes | Yes | |
2.4 | 23 दिसंबर 2011 | Yes | Yes | No | No | No | Yes | No | Yes | Yes | |
2.3 | 22 दिसंबर 2010 | Yes | Yes | No | No | No | No | No | Yes | Yes | |
2.2 | 19 दिसंबर 2006 | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes | |
2.1.1 | 31 मई 2005 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
2.1.0 | 31 अक्टूबर 2003 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
2.0.2 | 12 दिसंबर 2002 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
2.0.1 | 4 जुलाई 2002 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
2.0 | 21 दिसंबर 2001 | No | No | No | No | No | No | No | Yes | No | |
1.3.3 | 13 सितंबर 2000 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
1.3.2 | 1 जुलाई 1999 | No | No | No | Yes | Yes | No | Yes | Yes | No | |
1.3.1 | जनवरी 1999 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
1.3 | 22 मई 1998 | Yes | No | No | No | Yes | No | Yes | Yes | No | |
1.2.4 | जून 1997 | No | No | No | Yes | Yes | No | No | Yes | No | |
1.2.3 | मई 1997 | No | No | No | Yes | Yes | No | No | Yes | No | |
1.2 | 13 जनवरी 1997 | No | No | No | Yes | Yes | No | No | No | No | |
1.1.3 | अक्टूबर 1996 | No | No | No | No | No | No | Yes | No | No | ओएस/2 (i80386) |
1.1.2 | सितंबर 1996 | Yes | No | No | No | No | No | Yes | No | No | सनओएस 4 (स्पार्क) |
1.1 | मार्च 1996 | Yes | No | No | Yes | No | No | No | No | No | |
1.0.2 | सितंबर 1995 | Yes | No | No | Yes | No | No | Yes | No | No | ओएस/2 (i80386); सनओएस 4 (स्पार्क) |
1.0 | मई 1995 | No | No | No | Yes | No | No | No | No | No | ओएस/2 (i80386) |
0.8.4 | 11 मई 1993 | Yes | No | No | Yes | No | No | No | No | No | प्रायोगिक T800 ट्रांसप्यूटर रिलीज़ |
0.8.3 | 26 फ़रवरी 1993 | No | No | No | Yes | No | No | No | No | No | |
0.8.1 | 19 अक्टूबर 1992 | No | No | No | Yes | No | No | No | No | No | |
0.8 | 13 जुलाई 1992 | No | No | No | Yes | No | No | No | No | No | ओएस/2 (i80386); सनओएस 3-4 (स्पार्क) |
0.7 | मई 1991 | No | No | No | Yes | No | No | No | No | No | सनओएस 3-4 (स्पार्क) |
हास्केल से तुलना
2008 के बेंचमार्क (कंप्यूटिंग) से पता चला कि क्लीन नेटिव कोड बेंचमार्क के आधार पर हास्केल (ग्लासगो हास्केल कंपाइलर (जीएचसी)) के समान प्रदर्शन करता है।[17]
वाक्यगत अंतर
क्लीन का सिंटैक्स कुछ उल्लेखनीय अंतरों के साथ, हास्केल के समान है:[10]
हास्केल | क्लीन | टिप्पणियां |
---|---|---|
[ x | x <- [1..10] , isOdd x]
|
[ x \\ x <- [1..10] | isOdd x]
|
सूची समझ |
x:xs
|
[x:xs]
|
विपक्ष ऑपरेटर |
data Tree a
= Empty
| Node (Tree a) a (Tree a)
|
:: Tree a
= Empty
| Node (Tree a) a (Tree a)
|
बीजगणितीय डेटा प्रकार |
(Eq a, Eq b) => ...
|
... | Eq a & Eq b
|
वर्ग के दावे और संदर्भ |
fun t@(Node l x r) = ...
|
fun t=:(Node l x r) = ...
|
जैसे-पैटर्न |
if x > 10 then 10 else x
|
if (x > 10) 10 x
|
यदि |
सामान्य तौर पर, हास्केल ने क्लीन की तुलना में अधिक वाक्यात्मक शर्करा पेश की है।
संदर्भ
- ↑ "Download Clean". Clean. Retrieved 23 July 2019.
- ↑ "Idris - Uniqueness Types". Retrieved 2018-11-20.
- ↑ "Clean 0.7: Readme". Archived from the original on 2019-05-24.
- ↑ "Clean 1.0: Readme". Archived from the original on 2019-05-05.
- ↑ "Clean 1.3: Readme". Archived from the original on 2019-04-27.
- ↑ "Radboud University Nijmegen: Department of Software Science: Software".
- ↑ प्रश्न "सामान्य प्रश्न". Clean. Retrieved 2021-11-26.
{{cite web}}
: Check|url=
value (help) - ↑ "प्रकाशनों". Clean. Retrieved 2021-11-26.
- ↑ "घर". TOP Software Technology. Retrieved 26 November 2021.
- ↑ 10.0 10.1 ftp://ftp.cs.ru.nl/pub/Clean/papers/2007/achp2007-CleanHaskellQuickGuide.pdf
- ↑ "Which programming languages are fastest?". Computer Language Benchmarks Game. Archived from the original on 28 June 2011.
{{cite web}}
: CS1 maint: bot: original URL status unknown (link) - ↑ Koopman, Pieter (December 10, 1990). निष्पादन योग्य विशिष्टताओं के रूप में कार्यात्मक कार्यक्रम (PhD). Katholieke Universiteit Nijmegen. p. 35. ISBN 90-9003689-X.
- ↑ "Clean and iTasks / ABC Interpreter · GitLab". Clean and iTasks on GitLab (in English). Retrieved 13 April 2023.
- ↑ Staps, Camil; van Groningen, John; Plasmeijer, Rinus (15 July 2021). "सैंडबॉक्सिंग और वितरित सिस्टम के लिए संकलित और व्याख्या किए गए कोड की आलसी इंटरवर्किंग". Proceedings of the 31st Symposium on Implementation and Application of Functional Languages: 1–12. doi:10.1145/3412932.3412941.
- ↑ "रिलीज़ इतिहास". Clean. Retrieved 7 January 2022.
- ↑ "Index of /Clean". Retrieved 7 January 2022.
- ↑ Jansen, Jan Martin; Koopman, Pieter; Plasmeijer, Rinus (2008). "व्याख्या से संकलन तक" (PDF). Retrieved 2016-05-21.
{{cite journal}}
: Cite journal requires|journal=
(help)
बाहरी संबंध
- Clean Wiki
- clean-lang.org: public registry with Clean packages
- cloogle.org: a search engine to search in Clean packages