अनुक्रम एल: Difference between revisions

From Vigyanwiki
No edit summary
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Infobox programming language
{{Infobox programming language
| name = SequenceL
| name = अनुक्रम एल
| logo = <!-- (filename) -->
| logo = <!-- (फ़ाइल का नाम) -->
| logo caption =  
| logo caption =  
| screenshot = <!-- (filename) -->
| screenshot = <!-- (फ़ाइल का नाम) -->
| screenshot caption =  
| screenshot caption =  
| paradigms = [[Parallel computing]], [[Functional programming|Functional]], [[Purely functional programming|Purely functional]], [[Declarative programming]]
| paradigms = [[Parallel computing]], [[Functional programming|Functional]], [[Purely functional programming|Purely functional]], [[Declarative programming]]
| family =   
| family =   
| designers = Dr. Daniel Cooke,<br/>Dr. Nelson Rushton,<br/>Dr. Brad Nemanich
| designers = डॉ. डेनियल कुक,<br/>डॉ. नेल्सन रशटन,<br/>डॉ. ब्रैड नेमनिच
| developers = Texas Tech University,<br/>Texas Multicore Technologies
| developers = टेक्सास टेक विश्वविद्यालय,<br/>टेक्सास मल्टीकोर प्रौद्योगिकियों
| released = {{Start date and age|1989}}
| released = {{प्रारंभ तिथि और आयु|1989}}
| latest release version =  
| latest release version =  
| latest release date = <!-- {{Start date and age|2016|MM|DD|df=yes/no}} -->
| latest release date = <!-- {{प्रारंभ तिथि और उम्र|2016|एमएम|डीडी|डीएफ=हां/नहीं}} -->
| latest preview version =  
| latest preview version =  
| latest preview date = <!-- {{Start date and age|2016|MM|DD|df=yes/no}} -->
| latest preview date = <!-- {{प्रारंभ तिथि और उम्र|2016|MM|DD|df=yes/no}} -->
| typing = [[Type system#Static type checking|Static]], [[type inference]]
| typing = [[टाइप सिस्टम#स्टेटिक टाइप चेकिंग|स्टेटिक]], [[टाइप अनुमान]]
| scope =  
| scope =  
| programming language =  
| programming language =  
| platform = [[x86]], [[IBM Power microprocessors|Power]], [[ARM architecture|ARM]]
| platform = [[x86]], [[आईबीएम पावर माइक्रोप्रोसेसर|पावर]], [[एआरएम आर्किटेक्चर|एआरएम]]
| operating system = [[Microsoft Windows|Windows]], [[macOS]], [[Linux]]
| operating system = [[माइक्रोसॉफ्ट विंडोज|विंडोज]], [[मैकओएस]], [[लिनक्स]]
| file ext =  
| file ext =  
| file format = <!-- or: | file formats = -->
| file format = <!-- or: | फ़ाइल प्रारूप = -->
| website = {{URL|texasmulticore.com}}{{Dead link|date=May 2018}}
| website = {{URL|texasmulticore.com}}{{डेड लिंक|दिनांक=मई 2018}}
| implementations =  
| implementations =  
| dialects =  
| dialects =  
| influenced by =  
| influenced by =  
| influenced =  
| influenced =  
| license = [[Proprietary software|Proprietary]]<ref name=Licensing>{{cite web |url=https://texasmulticore.com/products/sequencel-licenses/ |title=SequenceL Licensing |access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202045317/https://texasmulticore.com/products/sequencel-licenses/ |archive-date=2017-02-02 |url-status=dead }}</ref>
| license = [[स्वामित्व सॉफ्टवेयर|स्वामित्व]]<ref नाम=लाइसेंसिंग>{{साइट वेब |url=https://texasmulticore.com/products/sequencel-licenses/ |title=SequenceL Licensing |access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202045317/https://texasmulticore.com/products/sequencel-licenses/ |archive-date=2017-02-02 |url-status=dead }}</ref>
}}
}}
अनुक्रम एल एक सामान्य उद्देश्य [[कार्यात्मक प्रोग्रामिंग]] भाषा और [[स्वचालित समानांतरकरण]] ([[समानांतर कंप्यूटिंग]]) संकलक और टूल सेट है, जिसका प्राथमिक अभिकल्पना उद्देश्य [[मल्टी-कोर प्रोसेसर]] हार्डवेयर पर प्रदर्शन, प्रोग्रामिंग में आसानी, प्लेटफ़ॉर्म पोर्टेबिलिटी/ऑप्टिमाइज़ेशन, और कोड स्पष्टता और पठनीयता है। इसका मुख्य लाभ यह है कि इसका उपयोग सीधा कोड लिखने के लिए किया जा सकता है जो स्वचालित रूप से उपलब्ध सभी प्रसंस्करण शक्ति का पूरा लाभ उठाता है, [[प्रोग्रामर|प्रोग्रामर्स]] को समानताओं की पहचान करने, [[स्वचालित वैश्वीकरण]] को निर्दिष्ट करने, [[दौड़ की स्थिति|दौड़ की स्थितियों]] से बचने और [[OpenMP|ओपनएमपी]] जैसे मैनुअल डायरेक्टिव-आधारित प्रोग्रामिंग दृष्टिकोण की अन्य चुनौतियों से संबंधित होने की आवश्यकता के बिना।
अनुक्रम एल एक सामान्य उद्देश्य [[कार्यात्मक प्रोग्रामिंग]] भाषा और [[स्वचालित समानांतरकरण]] ([[समानांतर कंप्यूटिंग]]) संकलक और टूल सेट है, जिसकी प्राथमिक अभिकल्पना उद्देश्य [[मल्टी-कोर प्रोसेसर|बहु-कोर प्रोसेसर]] हार्डवेयर पर प्रदर्शन, प्रोग्रामिंग में आसानी, प्लेटफ़ॉर्म सुवाह्यता/अनुकूलन, और कोड स्पष्टता और पठनीयता है। इसका मुख्य लाभ यह है कि इसका उपयोग सीधा कोड लिखने के लिए किया जा सकता है जो स्वचालित रूप से उपलब्ध सभी प्रसंस्करण शक्ति का पूरा लाभ उठाता है, [[प्रोग्रामर|प्रोग्रामर्स]] को समानताओं की पहचान करने, [[स्वचालित वैश्वीकरण]] को निर्दिष्ट करने, [[दौड़ की स्थिति|दौड़ की स्थितियों]] से बचने और [[OpenMP|ओपनएमपी]] जैसे मैनुअल निर्देश-आधारित प्रोग्रामिंग दृष्टिकोण की अन्य चुनौतियों से संबंधित होने की आवश्यकता के बिना।


अनुक्रम एल में लिखे गए प्रोग्राम को [[थ्रेड (कंप्यूटिंग)]] कोड में संकलित किया जा सकता है जो समानांतर में चलता है, प्रोग्रामर से कोई स्पष्ट संकेत नहीं मिलता है कि कैसे या क्या समानांतर करना है। {{As of|2015}}, अनुक्रम एल [[संकलक]] के संस्करण [[C++]] और [[OpenCL|ओपनसीएल]] में समानांतर कोड उत्पन्न करते हैं, जो इसे C (प्रोग्रामिंग भाषा), C ++, C # (प्रोग्रामिंग भाषा), [[फोरट्रान]], [[जावा (प्रोग्रामिंग भाषा)]] और  [[पायथन (प्रोग्रामिंग भाषा)]] सहित सबसे लोकप्रिय प्रोग्रामिंग भाषाओं के साथ काम करने की अनुमति देता है। और [[पायथन (प्रोग्रामिंग भाषा)]]। एक प्लेटफ़ॉर्म-विशिष्ट रनटाइम थ्रेड्स को सुरक्षित रूप से प्रबंधित करता है, स्वचालित रूप से उपलब्ध कोर की संख्या के अनुसार समानांतर प्रदर्शन प्रदान करता है, वर्तमान में x[[86]], [[POWER8|पावर8]] और [[एआरएम वास्तुकला|एआरएम]] प्लेटफ़ॉर्म का समर्थन करता है।
अनुक्रम एल में लिखे गए प्रोग्राम को [[थ्रेड (कंप्यूटिंग)]] कोड में संकलित किया जा सकता है जो समानांतर में चलता है, प्रोग्रामर से कोई स्पष्ट संकेत नहीं मिलता है कि कैसे या क्या समानांतर करना है। {{As of|2015}}, अनुक्रम एल [[संकलक]] के संस्करण [[C++]] और [[OpenCL|ओपनसीएल]] में समानांतर कोड उत्पन्न करते हैं, जो इसे C (प्रोग्रामिंग भाषा), C ++, C # (प्रोग्रामिंग भाषा), [[फोरट्रान]], [[जावा (प्रोग्रामिंग भाषा)]] और  [[पायथन (प्रोग्रामिंग भाषा)]] सहित सबसे लोकप्रिय प्रोग्रामिंग भाषाओं के साथ काम करने की अनुमति देता है। एक प्लेटफ़ॉर्म-विशिष्ट रनटाइम थ्रेड्स को सुरक्षित रूप से प्रबंधित करता है, स्वचालित रूप से उपलब्ध कोर की संख्या के अनुसार समानांतर प्रदर्शन प्रदान करता है, और वर्तमान में x[[86]], [[POWER8|पावर8]] और [[एआरएम वास्तुकला|एआरएम]] प्लेटफ़ॉर्म का समर्थन करता है।


== इतिहास ==
== इतिहास ==
अनुक्रम एल को शुरू में 1989 में शुरू होने वाली 20 साल की अवधि में विकसित किया गया था, ज्यादातर [[टेक्सास टेक यूनिवर्सिटी]] में। प्राथमिक धन [[नासा]] से था, जो मूल रूप से एक विशिष्ट भाषा विकसित करना चाहता था जो स्व-सत्यापन थी; अर्थात्, एक बार लिखे जाने के बाद, आवश्यकताओं को निष्पादित किया जा सकता है, और परिणाम वांछित परिणाम के विरुद्ध सत्यापित किए जा सकते हैं।
अनुक्रम एल को शुरू में 1989 में शुरू होने वाली 20 साल की अवधि में विकसित किया गया था, ज्यादातर [[टेक्सास टेक यूनिवर्सिटी]] में। प्राथमिक धन [[नासा]] से था, जो मूल रूप से एक विशिष्ट भाषा विकसित करना चाहता था जो स्व-सत्यापन थी; अर्थात्, एक बार लिखे जाने के पश्चात, आवश्यकताओं को निष्पादित किया जा सकता है, और परिणाम वांछित परिणाम के विरुद्ध सत्यापित किए जा सकते हैं।


परियोजना के प्रमुख शोधकर्ता प्रारंभ में डॉ. डेनियल कुक थे,<ref>{{Cite web |url=http://www.texasmulticoretechnologies.com/about/inventors/ |title=टेक्सास मल्टीकोर टेक्नोलॉजीज में डॉ। डैनियल कुक|access-date=2016-02-24 |archive-url=https://web.archive.org/web/20160304111952/http://www.texasmulticoretechnologies.com/about/inventors/ |archive-date=2016-03-04 |url-status=dead }}</ref> जो जल्द ही डॉ. नेल्सन रशटन (टेक्सास के एक अन्य टेक प्रोफेसर) और बाद में डॉ. ब्रैड नेमनिच (तब कुक के अधीन एक पीएचडी छात्र) से जुड़ गए। एक ऐसी भाषा बनाने का लक्ष्य जो पठनीय होने के लिए पर्याप्त सरल था, लेकिन निष्पादन योग्य होने के लिए पर्याप्त स्पष्ट नहीं था, आविष्कारकों को एक कार्यात्मक प्रोग्रामिंग, [[घोषणात्मक प्रोग्रामिंग]] भाषा दृष्टिकोण पर व्यवस्थित करने के लिए प्रेरित किया, जहां एक प्रोग्रामर उन्हें प्राप्त करने के साधनों के बजाय वांछित परिणामों का वर्णन करता है। भाषा तब समस्या को सबसे कुशल तरीके से हल करने के लिए स्वतंत्र है जो इसे खोज सकती है।
परियोजना के प्रमुख शोधकर्ता प्रारंभ में डॉ. डेनियल कुक थे,<ref>{{Cite web |url=http://www.texasmulticoretechnologies.com/about/inventors/ |title=टेक्सास मल्टीकोर टेक्नोलॉजीज में डॉ। डैनियल कुक|access-date=2016-02-24 |archive-url=https://web.archive.org/web/20160304111952/http://www.texasmulticoretechnologies.com/about/inventors/ |archive-date=2016-03-04 |url-status=dead }}</ref> जो जल्द ही डॉ. नेल्सन रशटन (टेक्सास के एक अन्य टेक प्रोफेसर) और पश्चात में डॉ. ब्रैड नेमनिच (तब कुक के अधीन एक पीएचडी छात्र) से जुड़ गए। एक ऐसी भाषा बनाने का लक्ष्य जो पठनीय होने के लिए पर्याप्त सरल था, लेकिन निष्पादन योग्य होने के लिए पर्याप्त स्पष्ट नहीं था, आविष्कारकों को एक कार्यात्मक प्रोग्रामिंग, [[घोषणात्मक प्रोग्रामिंग]] भाषा दृष्टिकोण पर व्यवस्थित करने के लिए प्रेरित किया, जहां एक प्रोग्रामर उन्हें प्राप्त करने के साधनों के अतिरिक्त वांछित परिणामों का वर्णन करता है। भाषा तब समस्या को सबसे कुशल उपायों से हल करने के लिए स्वतंत्र है जो इसे जाँच सकती है।


जैसे-जैसे भाषा विकसित हुई, शोधकर्ताओं ने उपभोग-सरलीकृत-उत्पादन (सीएसपी) सहित नए कम्प्यूटेशनल दृष्टिकोण विकसित किए।<ref>{{Cite web |url=https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |title=उपभोग-सरलीकृत-उत्पादन (सीएसपी)|access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202050125/https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |archive-date=2017-02-02 |url-status=dead }}</ref> 1998 में, समानांतर कंप्यूटिंग के लिए अनुक्रम एल को लागू करने के लिए अनुसंधान शुरू हुआ। इसकी परिणति 2004 में हुई जब इसने सामान्यीकृत-स्थानांतरण (NT) सिमेंटिक के साथ अपना और अधिक पूर्ण रूप ले लिया,<ref>{{Citation |last1=Nemanich |first1=Brad |last2=Cooke |first2=Daniel |last3=Rushton |first3=Nelson |title=SequenceL: Transparency And Multi-Core Parallelisms |series=DAMP '10 Proceedings of the 5th ACM SIGPLAN workshop on Declarative Aspects of Multicore Programming |publisher=ACM |year=2010 |pages=45–52 |location=New York, NY, US |url=https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202050125/https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |archive-date=2017-02-02 |url-status=dead }}</ref><ref>{{Citation |last1=Cooke |first1=Daniel |last2=Rushton |first2=Nelson |last3=Nemanich |first3=Brad |last4=Watson |first4=Robert G. |last5=Andersen |first5=Per |title=Normalize, Transpose, and Distribute: An Automatic Approach for Handling Nonscalars |journal=ACM Transactions on Programming Languages and Systems |volume=30 |issue=2 |pages=1–49 |date=March 2008 |doi=10.1145/1330017.1330020 |s2cid=6833254 }}</ref> जो केंद्रीय प्रसंस्करण इकाइयों (सीपीयू) के प्रमुख विक्रेताओं के साथ घड़ी की गति को बढ़ाने के बजाय मल्टी-कोर प्रोसेसर में एक प्रमुख बदलाव के साथ मेल खाता है। NT सिमेंटिक वर्क-हॉर्स है, जिसका उपयोग  गामा  और एनईएसएल के समान [[डेटा प्रवाह]] जैसी निष्पादन रणनीति के आधार पर संरचनाओं को सरल और विघटित करने के लिए किया जा रहा है।<ref>{{Citation |last1=Banater |first1=J-P |last2=Le Metayer |first2=D. |title=Programming by Multiset Transformation |journal=Communications of the ACM |date=January 1993 |volume=36 |issue=1 |pages=98–111 |doi= 10.1145/151233.151242|s2cid=17076396 |url=https://hal.inria.fr/inria-00075353/file/RR-1205.pdf }}</ref> <ref>{{Citation |last1=Blelloch |first1=Guy |title=Programming Parallel Algorithms |journal=Communications of the ACM |date=March 1996 |volume=39 |issue= 3 |pages=85–97 |doi=10.1145/227234.227246|citeseerx=10.1.1.141.5884 |s2cid=12118850 }}</ref> NT सिमेंटिक लैमेल और पेयटन-जोन्स के बॉयलरप्लेट उन्मूलन के समान लक्ष्य प्राप्त करता है।<ref>{{Citation |last1=Lämmel |first1=Ralf |last2=Peyton-Jones |first2=Simon |title=Scrap your boilerplate: a practical design pattern for generic programming |journal=Proceedings of TLDI 2003 |year=2003}}</ref><ref>{{Citation |last1=Lämmel |first1=Ralf |last2=Peyton-Jones |first2=Simon |title=Scrap more boilerplate: reflection, zips, and generalised casts |journal=Proceedings of ICFP 2004 |year=2004}}</ref> भाषा की अन्य सभी विशेषताओं को इन दो नियामो से परिभाषित किया जा सकता है - जिसमें [[रिकर्सन (कंप्यूटर विज्ञान)]], सबस्क्रिप्टिंग संरचनाएं, फ़ंक्शन संदर्भ और फ़ंक्शन निकायों का मूल्यांकन शामिल है।<ref>{{Citation |last1=Cooke |first1=Daniel |last2=Rushton |first2=Nelson |title=Iterative and Parallel Algorithm Design from High Level Language Traces |journal=ICCS'05 Proceedings of the 5th International Conference on Computational Science |date=January 1993 |volume=Part III |pages=891–894 |doi=10.1007/11428862_132 |isbn=978-3-540-26044-8 |doi-access=free }}</ref><ref>{{Citation |last1=Cooke |first1=Daniel |last2=Rushton |first2=Nelson |title=SequenceL – An Overview of a Simple Language |journal=Proceedings of the 2005 International Conference on Programming Languages and Compilers, PLC 2005 |date=June 27–30, 2005 }}</ref>
जैसे-जैसे भाषा विकसित हुई, शोधकर्ताओं ने उपभोग-सरलीकृत-उत्पादन (सीएसपी) सहित नए कम्प्यूटेशनल दृष्टिकोण विकसित किए।<ref>{{Cite web |url=https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |title=उपभोग-सरलीकृत-उत्पादन (सीएसपी)|access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202050125/https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |archive-date=2017-02-02 |url-status=dead }}</ref> 1998 में, समानांतर कंप्यूटिंग के लिए अनुक्रम एल को लागू करने के लिए अनुसंधान प्रारंभ हुआ। इसकी परिणति 2004 में हुई जब इसने सामान्यीकृत-स्थानांतरण (NT) सिमेंटिक के साथ अपना और अधिक पूर्ण रूप ले लिया,<ref>{{Citation |last1=Nemanich |first1=Brad |last2=Cooke |first2=Daniel |last3=Rushton |first3=Nelson |title=SequenceL: Transparency And Multi-Core Parallelisms |series=DAMP '10 Proceedings of the 5th ACM SIGPLAN workshop on Declarative Aspects of Multicore Programming |publisher=ACM |year=2010 |pages=45–52 |location=New York, NY, US |url=https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202050125/https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |archive-date=2017-02-02 |url-status=dead }}</ref><ref>{{Citation |last1=Cooke |first1=Daniel |last2=Rushton |first2=Nelson |last3=Nemanich |first3=Brad |last4=Watson |first4=Robert G. |last5=Andersen |first5=Per |title=Normalize, Transpose, and Distribute: An Automatic Approach for Handling Nonscalars |journal=ACM Transactions on Programming Languages and Systems |volume=30 |issue=2 |pages=1–49 |date=March 2008 |doi=10.1145/1330017.1330020 |s2cid=6833254 }}</ref> जो केंद्रीय प्रसंस्करण इकाइयों (सीपीयू) के प्रमुख विक्रेताओं के साथ घड़ी की गति को बढ़ाने के अतिरिक्त बहु-कोर प्रोसेसर में एक प्रमुख बदलाव के साथ मेल खाता है। NT सिमेंटिक वर्क-हॉर्स है, जिसका उपयोग  गामा  और एनईएसएल के समान [[डेटा प्रवाह]] जैसी निष्पादन रणनीति के आधार पर संरचनाओं को सरल और विघटित करने के लिए किया जा रहा है।<ref>{{Citation |last1=Banater |first1=J-P |last2=Le Metayer |first2=D. |title=Programming by Multiset Transformation |journal=Communications of the ACM |date=January 1993 |volume=36 |issue=1 |pages=98–111 |doi= 10.1145/151233.151242|s2cid=17076396 |url=https://hal.inria.fr/inria-00075353/file/RR-1205.pdf }}</ref> <ref>{{Citation |last1=Blelloch |first1=Guy |title=Programming Parallel Algorithms |journal=Communications of the ACM |date=March 1996 |volume=39 |issue= 3 |pages=85–97 |doi=10.1145/227234.227246|citeseerx=10.1.1.141.5884 |s2cid=12118850 }}</ref> NT सिमेंटिक लैमेल और पेयटन-जोन्स के बॉयलरप्लेट उन्मूलन के समान लक्ष्य प्राप्त करता है।<ref>{{Citation |last1=Lämmel |first1=Ralf |last2=Peyton-Jones |first2=Simon |title=Scrap your boilerplate: a practical design pattern for generic programming |journal=Proceedings of TLDI 2003 |year=2003}}</ref><ref>{{Citation |last1=Lämmel |first1=Ralf |last2=Peyton-Jones |first2=Simon |title=Scrap more boilerplate: reflection, zips, and generalised casts |journal=Proceedings of ICFP 2004 |year=2004}}</ref> भाषा की अन्य सभी विशेषताओं को इन दो नियामो से परिभाषित किया जा सकता है - जिसमें [[रिकर्सन (कंप्यूटर विज्ञान)]], सबस्क्रिप्टिंग संरचनाएं, फ़ंक्शन संदर्भ और फ़ंक्शन निकायों का मूल्यांकन सम्मलित है।<ref>{{Citation |last1=Cooke |first1=Daniel |last2=Rushton |first2=Nelson |title=Iterative and Parallel Algorithm Design from High Level Language Traces |journal=ICCS'05 Proceedings of the 5th International Conference on Computational Science |date=January 1993 |volume=Part III |pages=891–894 |doi=10.1007/11428862_132 |isbn=978-3-540-26044-8 |doi-access=free }}</ref><ref>{{Citation |last1=Cooke |first1=Daniel |last2=Rushton |first2=Nelson |title=SequenceL – An Overview of a Simple Language |journal=Proceedings of the 2005 International Conference on Programming Languages and Compilers, PLC 2005 |date=June 27–30, 2005 }}</ref>


हालांकि यह मूल उद्देश्य नहीं था, लेकिन इन नए दृष्टिकोणों ने प्रोग्रामर को पारदर्शी रूप से प्रदर्शन किए गए संचालन के एक बड़े अंश को समानांतर करने के लिए भाषा की अनुमति दी। 2006 में, टेक्सास टेक यूनिवर्सिटी में एक प्रोटोटाइप ऑटो-पैरेललाइजिंग कंपाइलर विकसित किया गया था। 2009 में, टेक्सास टेक ने टेक्सास मल्टीकोर टेक्नोलॉजीज (टीएमटी) को बौद्धिक संपदा का लाइसेंस दिया,<ref>[http://www.texasmulticoretechnologies.com Texas Multicore Technologies, Inc.]</ref> जनवरी 2017 में टीएमटी ने वी3 जारी किया, जिसमें व्यावसायिक संस्करण के अलावा डाउनलोड के लिए एक मुफ्त सामुदायिक संस्करण भी शामिल है।
चूंकि यह मूल उद्देश्य नहीं था, लेकिन इन नए दृष्टिकोणों ने प्रोग्रामर को पारदर्शी रूप से प्रदर्शन किए गए संचालन के एक बड़े अंश को समानांतर करने के लिए भाषा की अनुमति दी। 2006 में, टेक्सास टेक यूनिवर्सिटी में एक प्रोटोटाइप ऑटो-पैरेललाइजिंग संकलक विकसित किया गया था। 2009 में, टेक्सास टेक ने टेक्सास बहुकोर टेक्नोलॉजीज (टीएमटी) को बौद्धिक संपदा का लाइसेंस दिया,<ref>[http://www.texasmulticoretechnologies.com Texas Multicore Technologies, Inc.]</ref> जनवरी 2017 में टीएमटी ने वी3 जारी किया, जिसमें व्यावसायिक संस्करण के अतिरिक्त डाउनलोड के लिए एक मुफ्त सामुदायिक संस्करण भी सम्मलित है।


== डिजाइन ==
== डिजाइन ==
अनुक्रम एल को एल्गोरिथम कोड पर ध्यान केंद्रित करते हुए सीखने और उपयोग करने के लिए जितना संभव हो उतना सरल बनाया गया है, जहां यह मूल्य जोड़ता है, उदाहरण के लिए, आविष्कारक ने I/O को फिर से शुरू नहीं करने का फैसला किया क्योंकि C ने इसे अच्छी तरह से संभाला। नतीजतन, पूर्ण [https://web.archive.org/web/20170202050741/https://texasmulticore.com/documentation/3.0/0710language_ref.html अनुक्रम एल के लिए भाषा संदर्भ] प्रचुर उदाहरणों के साथ केवल 40 पृष्ठ हैं, और इसके औपचारिक व्याकरण में लगभग 15 उत्पादन नियम हैं।<ref>{{Citation |last1=Nemanich |first1=Brad |last2=Cooke |first2=Daniel |last3=Rushton |first3=Nelson |title=SequenceL: Transparency And Multi-Core Parallelisms |series=DAMP '10 Proceedings of the 5th ACM SIGPLAN workshop on Declarative Aspects of Multicore Programming |publisher=ACM |year=2010 |pages=45–52 |location=New York, NY, US |url=https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202050125/https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |archive-date=2017-02-02 |url-status=dead }}</ref>
अनुक्रम एल को एल्गोरिथम कोड पर ध्यान केंद्रित करते हुए सीखने और उपयोग करने के लिए जितना संभव हो उतना सरल बनाया गया है, जहां यह मूल्य जोड़ता है, उदाहरण के लिए, आविष्कारक ने I/O को फिर से शुरू नहीं करने का फैसला किया क्योंकि C ने इसे अच्छी तरह से संभाला। परिणामस्वरूप, पूर्ण [https://web.archive.org/web/20170202050741/https://texasmulticore.com/documentation/3.0/0710language_ref.html अनुक्रम एल के लिए भाषा संदर्भ] प्रचुर उदाहरणों के साथ केवल 40 पृष्ठ हैं, और इसके औपचारिक व्याकरण में लगभग 15 उत्पादन नियम हैं।<ref>{{Citation |last1=Nemanich |first1=Brad |last2=Cooke |first2=Daniel |last3=Rushton |first3=Nelson |title=SequenceL: Transparency And Multi-Core Parallelisms |series=DAMP '10 Proceedings of the 5th ACM SIGPLAN workshop on Declarative Aspects of Multicore Programming |publisher=ACM |year=2010 |pages=45–52 |location=New York, NY, US |url=https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |access-date=2017-01-26 |archive-url=https://web.archive.org/web/20170202050125/https://texasmulticore.com/wp-content/uploads/2016/05/2004-ttudamp.pdf |archive-date=2017-02-02 |url-status=dead }}</ref>
अनुक्रम एल का सख़्ती से मूल्यांकन किया जाता है (जैसे [[ लिस्प (प्रोग्रामिंग भाषा) ]]), सांख्यिकीय रूप से प्रकार [[अनुमान टाइप करें|अनुमान]] (जैसे [[ हास्केल (प्रोग्रामिंग भाषा) |हास्केल (प्रोग्रामिंग भाषा)]] ) के साथ टाइप किया जाता है, और इन्फिक्स और उपसर्ग ऑपरेटरों के संयोजन का उपयोग करता है जो मानक, अनौपचारिक गणितीय संकेतन (जैसे सी, [[पास्कल (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग भाषा), आदि)। के समान होता है। यह विशुद्ध रूप से घोषणात्मक भाषा है, जिसका अर्थ है कि एक प्रोग्रामर कार्यों को गणितीय अर्थ में परिभाषित करता है, उनके कार्यान्वयन के लिए निर्देश दिए बिना। उदाहरण के लिए, मैट्रिक्स गुणन की गणितीय परिभाषा इस प्रकार है:


: p×n मैट्रिक्स B के साथ m×p मैट्रिक्स A का गुणनफल m×n मैट्रिक्स है जिसकी (i,j)'वीं प्रविष्टि है
अनुक्रम एल का सख़्ती से मूल्यांकन किया जाता है (जैसे [[ लिस्प (प्रोग्रामिंग भाषा) | लिस्प (प्रोग्रामिंग भाषा)]] ), सांख्यिकीय रूप से प्रकार [[अनुमान टाइप करें|अनुमान]] (जैसे [[ हास्केल (प्रोग्रामिंग भाषा) |हास्केल (प्रोग्रामिंग भाषा)]] ) के साथ टाइप किया जाता है, और इन्फिक्स और उपसर्ग संचालको के संयोजन का उपयोग करता है जो मानक, अनौपचारिक गणितीय संकेतन (जैसे सी, [[पास्कल (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग भाषा), आदि)। के समान होता है। यह विशुद्ध रूप से घोषणात्मक भाषा है, जिसका अर्थ है कि एक प्रोग्रामर कार्यों को गणितीय अर्थ में परिभाषित करता है, उनके कार्यान्वयन के लिए निर्देश दिए बिना। उदाहरण के लिए, आव्यूह गुणन की गणितीय परिभाषा इस प्रकार है:
 
: p×n आव्यूह B के साथ m×p आव्यूह A का गुणनफल m×n आव्यूह है जिसकी (i,j)'वीं प्रविष्टि है
::<math>\sum_{k=1}^p A(i,k)B(k,j)</math>
::<math>\sum_{k=1}^p A(i,k)B(k,j)</math>
अनुक्रम एल परिभाषा उस परिभाषा को न्यूनाधिक सटीक रूप से दर्शाती है:
अनुक्रम एल परिभाषा उस परिभाषा को न्यूनाधिक सटीक रूप से दर्शाती है:
Line 53: Line 54:
       let k := 1...size(B);  
       let k := 1...size(B);  
       in  sum( A[i,k] * B[k,j] );
       in  sum( A[i,k] * B[k,j] );
</syntaxhighlight>परिभाषा के बाईं ओर प्रत्येक पैरामीटर ए और बी के बाद के सबस्क्रिप्ट इंगित करते हैं कि ए और बी गहराई -2 संरचनाएं हैं (यानी, स्केलर्स की सूचियों की सूची), जिन्हें यहां मैट्रिसेस के रूप में माना जाता है। इस औपचारिक परिभाषा से, अनुक्रम एल अपनी (i, j)'वीं प्रविष्टि के सूत्र से परिभाषित उत्पाद के आयामों का अनुमान लगाता है (जोड़े के सेट के रूप में (i, j) जिसके लिए दाहिने हाथ की ओर परिभाषित किया गया है) और प्रत्येक प्रविष्टि की गणना करता है उपरोक्त अनौपचारिक परिभाषा के समान सूत्र द्वारा। ध्यान दें कि इस परिभाषा में पुनरावृत्ति के लिए कोई स्पष्ट निर्देश नहीं हैं, या उस क्रम के लिए जिसमें संचालन किए जाने हैं। इस वजह से, अनुक्रम एल कंपाइलर किसी भी क्रम (समानांतर क्रम सहित) में संचालन कर सकता है जो परिभाषित समीकरण को संतुष्ट करता है। इस उदाहरण में, उत्पाद में निर्देशांकों की गणना इस तरह समानांतर की जाएगी कि, बड़े मेट्रिसेस के लिए, प्रोसेसर की संख्या के साथ रैखिक रूप से स्केल करें।
</syntaxhighlight>परिभाषा के बाईं ओर प्रत्येक पैरामीटर ए और बी के पश्चात के सबस्क्रिप्ट इंगित करते हैं कि ए और बी गहराई -2 संरचनाएं हैं (अर्थात, स्केलर्स की सूचियों की सूची), जिन्हें यहां मैट्रिसेस के रूप में माना जाता है। इस औपचारिक परिभाषा से, अनुक्रम एल अपनी (i, j)'वीं प्रविष्टि के सूत्र से परिभाषित उत्पाद के आयामों का अनुमान लगाता है (जोड़े के सेट के रूप में (i, j) जिसके लिए दाहिने हाथ की ओर परिभाषित किया गया है) और प्रत्येक प्रविष्टि की गणना करता है उपरोक्त अनौपचारिक परिभाषा के समान सूत्र द्वारा। ध्यान दें कि इस परिभाषा में पुनरावृत्ति के लिए कोई स्पष्ट निर्देश नहीं हैं, या उस क्रम के लिए जिसमें संचालन किए जाने हैं। इस वजह से, अनुक्रम एल संकलक किसी भी क्रम (समानांतर क्रम सहित) में संचालन कर सकता है जो परिभाषित समीकरण को संतुष्ट करता है। इस उदाहरण में, उत्पाद में निर्देशांकों की गणना इस तरह समानांतर की जाएगी कि, बड़े मेट्रिसेस के लिए, प्रोसेसर की संख्या के साथ रैखिक रूप से स्केल करें।


जैसा कि ऊपर उल्लेख किया गया है, अनुक्रम एल में इनपुट/आउटपुट (I/O) के लिए कोई अंतर्निहित निर्माण नहीं है क्योंकि इसे अन्य प्रोग्रामिंग भाषाओं के साथ एक योगात्मक उपायो से काम करने के लिए अभिकल्पित किया गया था। मल्टीथ्रेडेड C++ को संकलित करने और 20+ सरलीकृत रैपर और इंटरफ़ेस जेनरेटर ([[SWIG|स्विग]]) भाषाओं (C, C++, C#, जावा, पाइथन, आदि) का समर्थन करने का निर्णय का अर्थ है कि यह उपस्थित अभिकल्पित प्रवाह, प्रशिक्षण और टूल में आसानी से फ़िट हो जाता है। इसका उपयोग मौजूदा अनुप्रयोगों को बढ़ाने, मल्टीकोर लाइब्रेरी बनाने और परिणामी कोड को अन्य कोड के साथ जोड़कर स्टैंडअलोन एप्लिकेशन बनाने के लिए किया जा सकता है जो I/O कार्य करता है। अनुक्रम एल फ़ंक्शंस को दिए गए इनपुट के साथ [[ दुभाषिया (कंप्यूटिंग) |दुभाषिया (कंप्यूटिंग)]] से भी पूछा जा सकता है, जैसे कि पायथन और अन्य व्याख्या की गई भाषाएँ।
जैसा कि ऊपर उल्लेख किया गया है, अनुक्रम एल में इनपुट/आउटपुट (I/O) के लिए कोई अंतर्निहित निर्माण नहीं है क्योंकि इसे अन्य प्रोग्रामिंग भाषाओं के साथ एक योगात्मक उपायो से काम करने के लिए अभिकल्पित किया गया था। बहुथ्रेडेड C++ को संकलित करने और 20+ सरलीकृत रैपर और इंटरफ़ेस जेनरेटर ([[SWIG|स्विग]]) भाषाओं (C, C++, C#, जावा, पाइथन, आदि) का समर्थन करने का निर्णय का अर्थ है कि यह उपस्थित अभिकल्पित प्रवाह, प्रशिक्षण और टूल में आसानी से फ़िट हो जाता है। इसका उपयोग उपस्थिता अनुप्रयोगों को बढ़ाने, बहुकोर लाइब्रेरी बनाने और परिणामी कोड को अन्य कोड के साथ जोड़कर स्टैंडअलोन एप्लिकेशन बनाने के लिए किया जा सकता है जो I/O कार्य करता है। अनुक्रम एल फ़ंक्शंस को दिए गए इनपुट के साथ [[ दुभाषिया (कंप्यूटिंग) |दुभाषिया (कंप्यूटिंग)]] से भी पूछा जा सकता है, जैसे कि पायथन और अन्य व्याख्या की गई भाषाएँ।


== सामान्यीकरण-स्थानांतरण ==
== सामान्यीकरण-स्थानांतरण ==
Line 66: Line 67:
उदाहरण के लिए, एक बार में कई तर्कों के लिए NT निर्माण का उपयोग किया जा सकता है
उदाहरण के लिए, एक बार में कई तर्कों के लिए NT निर्माण का उपयोग किया जा सकता है
:<math>[1,2,3] + [10,20,30] == [11,22,33]</math>
:<math>[1,2,3] + [10,20,30] == [11,22,33]</math>
यह तब भी काम करता है जब अपेक्षित तर्क किसी भी प्रकार के टी का गैर-अदिश होता है, और वास्तविक तर्क प्रकार टी की वस्तुओं की एक सूची है (या, अधिक सामान्यता में, कोई डेटा संरचना जिसका निर्देशांक प्रकार T के हैं)। उदाहरण के लिए, यदि '''''A''''' एक मैट्रिक्स है और '''''X<sub>s</sub>''''' मैट्रिक्स [X<sub>1</sub>, ..., X<sub>n</sub>],की एक सूची है, और मैट्रिक्स गुणा की उपरोक्त परिभाषा दी गई है, तो अनुक्रम एल में हमारे पास होगा<syntaxhighlight lang="alloy">
यह तब भी काम करता है जब अपेक्षित तर्क किसी भी प्रकार के टी का गैर-अदिश होता है, और वास्तविक तर्क प्रकार टी की वस्तुओं की एक सूची है (या, अधिक सामान्यता में, कोई डेटा संरचना जिसका निर्देशांक प्रकार T के हैं)। उदाहरण के लिए, यदि '''''A''''' एक आव्यूह है और '''''X<sub>s</sub>''''' आव्यूह [X<sub>1</sub>, ..., X<sub>n</sub>],की एक सूची है, और आव्यूह गुणा की उपरोक्त परिभाषा दी गई है, तो अनुक्रम एल में हमारे पास होगा<syntaxhighlight lang="alloy">
  matmul(A,Xs) = [matmul(A,X1),...,matmul(A,Xn)]
  matmul(A,Xs) = [matmul(A,X1),...,matmul(A,Xn)]
</syntaxhighlight>
</syntaxhighlight>
Line 75: Line 76:
यह पुनरावृत्ति और पुनरावर्तन के अधिकांश उपयोगों के लिए खाता है।
यह पुनरावृत्ति और पुनरावर्तन के अधिकांश उपयोगों के लिए खाता है।


== उदाहरण: [[अभाज्य संख्या]]एँ ==
== उदाहरण: [[अभाज्य संख्या|अभाज्य संख्याएँ]] ==
एक अच्छा उदाहरण जो उपरोक्त अवधारणाओं को प्रदर्शित करता है, अभाज्य संख्याओं को ढूंढने में होगा। एक प्रमुख संख्या के रूप में परिभाषित किया गया है
एक अच्छा उदाहरण जो उपरोक्त अवधारणाओं को प्रदर्शित करता है, अभाज्य संख्याओं को ढूंढने में होगा। एक प्रमुख संख्या के रूप में परिभाषित किया गया है


: एक पूर्णांक 1 से अधिक है, जिसमें स्वयं और 1 के अलावा कोई सकारात्मक विभाजक नहीं है।
: एक पूर्णांक 1 से अधिक है, जिसमें स्वयं और 1 के अतिरिक्त कोई सकारात्मक विभाजक नहीं है।


तो एक धनात्मक पूर्णांक z अभाज्य है यदि 2 से लेकर z-1 तक कोई भी संख्या, समावेशी, समान रूप से विभाजित न हो। इस समस्या को शाब्दिक रूप से उपरोक्त परिभाषा को भाषा में लिप्यंतरित करके प्रोग्राम करने की अनुमति देता है।
तो एक धनात्मक पूर्णांक z अभाज्य है यदि 2 से लेकर z-1 तक कोई भी संख्या, समावेशी, समान रूप से विभाजित न हो। इस समस्या को शाब्दिक रूप से उपरोक्त परिभाषा को भाषा में लिप्यंतरित करके प्रोग्राम करने की अनुमति देता है।
Line 98: Line 99:
   cmd:>prime(18)
   cmd:>prime(18)
   empty
   empty
</syntaxhighlight>प्रोग्राम में 100 और 200 के बीच की स्ट्रिंग दिखाई नहीं देती है। बल्कि, एक प्रोग्रामर आम तौर पर उस हिस्से को तर्क के रूप में पास करेगा। चूंकि प्रोग्राम एक तर्क के रूप में एक स्केलर की अपेक्षा करता है, इसके बजाय संख्याओं के अनुक्रम को पारित करने से अनुक्रम एल अनुक्रम के प्रत्येक भाग पर स्वचालित रूप से संचालन करने का कारण बनता है। चूंकि फ़ंक्शन असफल मूल्यों के लिए खाली लौटाता है, परिणाम इनपुट अनुक्रम होगा, लेकिन केवल उन संख्याओं को वापस करने के लिए फ़िल्टर किया जाता है जो प्राइम के मानदंडों को पूरा करते हैं:
</syntaxhighlight>प्रोग्राम में 100 और 200 के बीच की स्ट्रिंग दिखाई नहीं देती है। बल्कि, एक प्रोग्रामर सामान्यतः उस भाग को तर्क के रूप में पास करेगा। चूंकि प्रोग्राम एक तर्क के रूप में एक स्केलर की अपेक्षा करता है, इसके अतिरिक्त संख्याओं के अनुक्रम को पारित करने से अनुक्रम एल अनुक्रम के प्रत्येक भाग पर स्वचालित रूप से संचालन करने का कारण बनता है। चूंकि फ़ंक्शन असफल मूल्यों के लिए खाली लौटाता है, परिणाम इनपुट अनुक्रम होगा, लेकिन केवल उन संख्याओं को वापस करने के लिए फ़िल्टर किया जाता है जो प्राइम के मानदंडों को पूरा करते हैं:


    
    
Line 104: Line 105:
cmd:>prime(100...200)
cmd:>prime(100...200)
   [101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199]
   [101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199]
</syntaxhighlight>एक बहुत ही कम और पठनीय प्रोग्राम के साथ इस समस्या को हल करने के अलावा, नेस्टेड अनुक्रमों के अनुक्रम एल का मूल्यांकन सभी समानांतर में किया जाएगा।
</syntaxhighlight>एक बहुत ही कम और पठनीय प्रोग्राम के साथ इस समस्या को हल करने के अतिरिक्त, नेस्टेड अनुक्रमों के अनुक्रम एल का मूल्यांकन सभी समानांतर में किया जाएगा।


== अवयव ==
== अवयव ==
Line 110: Line 111:


=== दुभाषिया ===
=== दुभाषिया ===
एक [[कमांड लाइन इंटरफेस|एक कमांड-लाइन दुभाषिया]] कोड को सीधे कमांड शेल में लिखने या पूर्व-लिखित पाठ फ़ाइलों से कोड लोड करने की अनुमति देता है। इस कोड को निष्पादित किया जा सकता है, और परिणामों का मूल्यांकन किया जा सकता है, कोड शुद्धता की जाँच करने में सहायता करने के लिए, या त्वरित उत्तर खोजने में। यह लोकप्रिय [[ ग्रहण (सॉफ्टवेयर) ]] [[एकीकृत विकास पर्यावरण]] (आईडीई) के माध्यम से भी उपलब्ध है। दुभाषिया में निष्पादित कोड समानांतर में नहीं चलता है; यह एक धागे में क्रियान्वित करता है।
एक [[कमांड लाइन इंटरफेस|एक कमांड-लाइन दुभाषिया]] कोड को सीधे कमांड शेल में लिखने या पूर्व-लिखित पाठ फ़ाइलों से कोड लोड करने की अनुमति देता है। इस कोड को निष्पादित किया जा सकता है, और परिणामों का मूल्यांकन किया जा सकता है, कोड शुद्धता की जाँच करने में सहायता करने के लिए, या त्वरित उत्तर जाँचने में। यह लोकप्रिय [[ ग्रहण (सॉफ्टवेयर) ]] [[एकीकृत विकास पर्यावरण]] (आईडीई) के माध्यम से भी उपलब्ध है। दुभाषिया में निष्पादित कोड समानांतर में नहीं चलता है; यह एक धागे में क्रियान्वित करता है।


=== संकलक ===
=== संकलक ===
एक कमांड-लाइन कंपाइलर अनुक्रम एल कोड पढ़ता है और अत्यधिक समानांतर, स्वचालित वैश्वीकरण, C++ और वैकल्पिक रूप से OpenCL उत्पन्न करता है, जिसे निष्पादित करने के लिए अनुक्रम एल रनटाइम लाइब्रेरी से जोड़ा जाना चाहिए।
एक कमांड-लाइन संकलक अनुक्रम एल कोड पढ़ता है और अत्यधिक समानांतर, स्वत: वैश्वीकरण, C++ और वैकल्पिक रूप से ओपनसीएल उत्पन्न करता है, जिसे निष्पादित करने के लिए अनुक्रम एल रनटाइम लाइब्रेरी से जोड़ा जाना चाहिए।


=== रनटाइम ===
=== रनटाइम ===
रनटाइम वातावरण पुस्तकालयों का एक पूर्व-संकलित सेट है जो लक्ष्य प्लेटफॉर्म पर इष्टतम रूप से निष्पादित करने के लिए संकलित समांतर सी ++ कोड के साथ काम करता है। यह Intel थ्रेडेड बिल्डिंग ब्लॉक्स (TBB) पर बनाता है<ref>[https://www.threadingbuildingblocks.org/ Intel Threaded Building Blocks (TBB)]</ref> और कैश ऑप्टिमाइज़ेशन, मेमोरी मैनेजमेंट, वर्क क्यू-स्टीलिंग और परफॉर्मेंस मॉनिटरिंग जैसी चीजों को हैंडल करता है।
रनटाइम वातावरण पुस्तकालयों का एक पूर्व-संकलित सेट है जो लक्ष्य प्लेटफॉर्म पर इष्टतम रूप से निष्पादित करने के लिए संकलित समांतर सी ++ कोड के साथ काम करता है। यह इंटेल थ्रेडेड बिल्डिंग ब्लॉक्स (TBB) पर बनाता है और कैश (टेम्परेरी स्पेशल स्टॉरिज स्पेस फाइल ) अनुकूलन, मेमोरी प्रबंध, काम कतार-स्टीलिंग और प्रदर्शन निगरानी जैसी चीजों को हैंडल करता है।<ref>[https://www.threadingbuildingblocks.org/ Intel Threaded Building Blocks (TBB)]</ref>


=== ग्रहण आईडीई प्लग-इन डीबगर === के साथ
=== डिबगर के साथ ग्रहण आईडीई प्लग-इन ===
एक एक्लिप्स (सॉफ्टवेयर) एकीकृत विकास पर्यावरण [[प्लग-इन (कंप्यूटिंग)]]|प्लग-इन मानक संपादन क्षमताएं (फंक्शन रोलअप, क्रोमाकोडिंग, आदि), और एक अनुक्रम एल डिबगिंग वातावरण प्रदान करता है। यह प्लग-इन अनुक्रम एल इंटरप्रेटर के विरुद्ध चलता है, इसलिए मल्टीथ्रेडेड कोड को डीबग करने के लिए उपयोग नहीं किया जा सकता है; हालाँकि, स्वचालित समांतरता प्रदान करके, समानांतर अनुक्रम एल कोड की डिबगिंग वास्तव में अनुक्रमिक अनुक्रम एल कोड की शुद्धता की पुष्टि कर रही है। यही है, अगर यह क्रमिक रूप से सही ढंग से चलता है, तो इसे समानांतर में सही ढंग से चलना चाहिए - इसलिए दुभाषिया में डिबगिंग पर्याप्त है।
एक ग्रहण एकीकृत विकास पर्यावरण (आईडीई) (एक सॉफ्टवेयर अनुप्रयोग है) [[प्लग-इन (कंप्यूटिंग)]] मानक संपादन क्षमताएं (फ़ंक्शन रोलअप, क्रोमकोडिंग, आदि), और एक अनुक्रम एल डिबगिंग वातावरण प्रदान करता है। यह प्लग-इन अनुक्रम एल इंटरप्रेटर के विरुद्ध चलता है, इसलिए बहुथ्रेडेड कोड को डीबग करने के लिए उपयोग नहीं किया जा सकता है; हालाँकि, स्वचालित समांतरता प्रदान करके, समानांतर अनुक्रम एल कोड की डिबगिंग वास्तव में अनुक्रमिक अनुक्रम एल कोड की शुद्धता की पुष्टि कर रही है। यही है, यदि यह क्रमिक रूप से सही ढंग से चलता है, तो इसे समानांतर में सही ढंग से चलना चाहिए - इसलिए दुभाषिया में डिबगिंग पर्याप्त है।


=== पुस्तकालय ===
=== पुस्तकालय ===
प्रोग्रामिंग प्रक्रिया को सुव्यवस्थित करने और सर्वोत्तम अभ्यास उदाहरणों के रूप में सेवा करने के लिए विभिन्न गणित और अन्य मानक फ़ंक्शन पुस्तकालयों को अनुक्रम एल स्रोत कोड के रूप में शामिल किया गया है। इन्हें आयात किया जा सकता है, ठीक उसी तरह जैसे C या C++ लाइब्रेरी #शामिल हैं।
प्रोग्रामिंग प्रक्रिया को सुव्यवस्थित करने और सर्वोत्तम अभ्यास उदाहरणों के रूप में सेवा करने के लिए विभिन्न गणित और अन्य मानक फ़ंक्शन पुस्तकालयों को अनुक्रम एल स्रोत कोड के रूप में सम्मलित किया गया है। इन्हें आयातित किया जा सकता है, ठीक उसी तरह जैसे C या C++ लाइब्रेरी # सम्मलित हैं।


== यह भी देखें ==
== यह भी देखें ==
* समानांतर कंप्यूटिंग
* समानांतर कंप्यूटिंग
* [[स्वचालित समांतरता उपकरण]]
* [[स्वचालित समांतरता उपकरण]]
* मल्टी-कोर प्रोसेसर
* बहु-कोर प्रोसेसर
* [[ बहु ]]
* [[ बहु |बहुप्रोसेसिंग]]
* कार्यात्मक प्रोग्रामिंग
* कार्यात्मक प्रोग्रामिंग
* [[विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग]]
* [[विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग]]
Line 139: Line 140:
==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}


==बाहरी संबंध==
==बाहरी संबंध==
* {{Official website|texasmulticore.com}}{{Dead link|date=May 2018}} Texas Multicore Technologies
* {{Official website|texasmulticore.com}}{{Dead link|date=May 2018}}टेक्सास बहुकोर प्रौद्योगिकियों
* [https://web.archive.org/web/20170415165711/https://texasmulticore.com/technology/multicore-performance/ Why अनुक्रम एल Works]
* [https://web.archive.org/web/20170415165711/https://texasmulticore.com/technology/multicore-performance/ अनुक्रम एल वर्क क्यों]
* [https://web.archive.org/web/20170415181140/https://texasmulticore.com/technology/openmp-comparison/ OpenMP compared to अनुक्रम एल]
* [https://web.archive.org/web/20170415181140/https://texasmulticore.com/technology/openmp-comparison/ अनुक्रम एल की तुलना में ओपनएमपी]
* [https://web.archive.org/web/20170412062102/https://texasmulticore.com/products/features/ अनुक्रम एल Features]
* [https://web.archive.org/web/20170412062102/https://texasmulticore.com/products/features/ अनुक्रम एल विशेषताएं]
* [https://web.archive.org/web/20170412063032/https://texasmulticore.com/technology/patented-auto-parallel/ Overview: Patented Automatic Parallelization in अनुक्रम एल]
* [https://web.archive.org/web/20170412063032/https://texasmulticore.com/technology/patented-auto-parallel/ अवलोकन: अनुक्रम एल में पेटेंट स्वचालित समांतरता]
* [https://www.youtube.com/channel/UCb6JyUsAuS_vmBAE3gXVKzQ YouTube: Texas Multicore Technologies]
* [https://www.youtube.com/channel/UCb6JyUsAuS_vmBAE3gXVKzQ यूट्यूब: टेक्सास बहुकोर प्रौद्योगिकियों]
* [https://web.archive.org/web/20170107005833/https://texasmulticore.com/resources/downloads/ Free Downloads]
* [https://web.archive.org/web/20170107005833/https://texasmulticore.com/resources/downloads/ मुफ्त डाउनलोड]
* [https://web.archive.org/web/20170424091304/https://texasmulticore.com/documentation/ Programmer Resources and Education]
* [https://web.archive.org/web/20170424091304/https://texasmulticore.com/documentation/ प्रोग्रामर संसाधन और शिक्षा]
* [https://web.archive.org/web/20170116162400/https://texasmulticore.com/wp-content/uploads/2016/05/2008-ACM-paper_NTD-Auto-Approach-for-Handling-Nonscalars-1.pdf Normalize, Transpose and Distribute: An Automatic Approach for Handling Nonscalars]
* [https://web.archive.org/web/20170116162400/https://texasmulticore.com/wp-content/uploads/2016/05/2008-ACM-paper_NTD-Auto-Approach-for-Handling-Nonscalars-1.pdf नॉर्मलाइज़, ट्रांसपोज़ और डिस्ट्रीब्यूट: नॉनस्केलर्स को संभालने के लिए एक स्वचालित दृष्टिकोण]
* [https://patents.google.com/patent/US8839212B2/en?oq=US+8839212 US Patent 8,839,212, Method, apparatus and computer program product for automatically generating a computer program using consume, simplify and produce semantics with normalize, transpose and distribute operations]
* [https://patents.google.com/patent/US8839212B2/en?oq=US+8839212 यूएस पेटेंट 8,839,212, विधि, उपकरण और कंप्यूटर प्रोग्राम उत्पाद स्वचालित रूप से उपभोग, सरलीकरण और सामान्यीकरण, स्थानांतरण और वितरण संचालन के साथ शब्दार्थ का उपयोग करके एक कंप्यूटर प्रोग्राम उत्पन्न करने के लिए]
* [https://rosettacode.org/wiki/Category:SequenceL अनुक्रम एल examples on Rosetta Code wiki]
* [https://rosettacode.org/wiki/Category:SequenceL रोसेटा कोड विकि पर अनुक्रम एल उदाहरण]
[[Category: उच्च स्तरीय प्रोग्रामिंग भाषाएं]] [[Category: समानांतर कंप्यूटिंग]] [[Category: ऐरे प्रोग्रामिंग भाषाएँ]] [[Category: क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]] [[Category: घोषणात्मक प्रोग्रामिंग भाषाएँ]] [[Category: कार्यात्मक प्रोग्रामिंग]] [[Category: कार्यात्मक भाषाएँ]] [[Category: वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषाएँ]] [[Category: विषम कंप्यूटिंग]] [[Category: समवर्ती प्रोग्रामिंग भाषाएँ]] [[Category: गणितीय सॉफ्टवेयर]] [[Category: विंडोज के लिए संख्यात्मक विश्लेषण सॉफ्टवेयर]] [[Category: MacOS के लिए संख्यात्मक विश्लेषण सॉफ्टवेयर]] [[Category: लिनक्स के लिए संख्यात्मक विश्लेषण सॉफ्टवेयर]] [[Category: संख्यात्मक रैखिक बीजगणित]] [[Category: संख्यात्मक प्रोग्रामिंग भाषाएँ]] [[Category: संख्यात्मक सॉफ्टवेयर]] [[Category: विंडोज के लिए विज्ञान सॉफ्टवेयर]] [[Category: MacOS के लिए विज्ञान सॉफ्टवेयर]] [[Category: लिनक्स के लिए विज्ञान सॉफ्टवेयर]] [[Category: जीपीजीपीयू]]
 
 


[[Category: Machine Translated Page]]
[[Category:All articles containing potentially dated statements]]
[[Category:All articles with dead external links]]
[[Category:Articles containing potentially dated statements from 2015]]
[[Category:Articles with dead external links from May 2018]]
[[Category:CS1]]
[[Category:Created On 26/05/2023]]
[[Category:Created On 26/05/2023]]
[[Category:MacOS के लिए विज्ञान सॉफ्टवेयर]]
[[Category:MacOS के लिए संख्यात्मक विश्लेषण सॉफ्टवेयर]]
[[Category:Machine Translated Page]]
[[Category:Official website not in Wikidata]]
[[Category:Pages with script errors]]
[[Category:Pages with syntax highlighting errors]]
[[Category:Templates Vigyan Ready]]
[[Category:उच्च स्तरीय प्रोग्रामिंग भाषाएं]]
[[Category:ऐरे प्रोग्रामिंग भाषाएँ]]
[[Category:कार्यात्मक प्रोग्रामिंग]]
[[Category:कार्यात्मक भाषाएँ]]
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
[[Category:गणितीय सॉफ्टवेयर]]
[[Category:घोषणात्मक प्रोग्रामिंग भाषाएँ]]
[[Category:जीपीजीपीयू]]
[[Category:लिनक्स के लिए विज्ञान सॉफ्टवेयर]]
[[Category:लिनक्स के लिए संख्यात्मक विश्लेषण सॉफ्टवेयर]]
[[Category:विंडोज के लिए विज्ञान सॉफ्टवेयर]]
[[Category:विंडोज के लिए संख्यात्मक विश्लेषण सॉफ्टवेयर]]
[[Category:विषम कंप्यूटिंग]]
[[Category:वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषाएँ]]
[[Category:संख्यात्मक प्रोग्रामिंग भाषाएँ]]
[[Category:संख्यात्मक रैखिक बीजगणित]]
[[Category:संख्यात्मक सॉफ्टवेयर]]
[[Category:समवर्ती प्रोग्रामिंग भाषाएँ]]
[[Category:समानांतर कंप्यूटिंग]]

Latest revision as of 16:54, 12 June 2023

अनुक्रम एल
ParadigmsParallel computing, Functional, Purely functional, Declarative programming
द्वारा डिज़ाइन किया गयाडॉ. डेनियल कुक,
डॉ. नेल्सन रशटन,
डॉ. ब्रैड नेमनिच
Developersटेक्सास टेक विश्वविद्यालय,
टेक्सास मल्टीकोर प्रौद्योगिकियों
टाइपिंग अनुशासनस्टेटिक, टाइप अनुमान
प्लेटफॉर्मx86, पावर, एआरएम
ओएसविंडोज, मैकओएस, लिनक्स
लाइसेंसस्वामित्व[1]
वेबसाइटtexasmulticore.comTemplate:डेड लिंक

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

अनुक्रम एल में लिखे गए प्रोग्राम को थ्रेड (कंप्यूटिंग) कोड में संकलित किया जा सकता है जो समानांतर में चलता है, प्रोग्रामर से कोई स्पष्ट संकेत नहीं मिलता है कि कैसे या क्या समानांतर करना है। As of 2015, अनुक्रम एल संकलक के संस्करण C++ और ओपनसीएल में समानांतर कोड उत्पन्न करते हैं, जो इसे C (प्रोग्रामिंग भाषा), C ++, C # (प्रोग्रामिंग भाषा), फोरट्रान, जावा (प्रोग्रामिंग भाषा) और पायथन (प्रोग्रामिंग भाषा) सहित सबसे लोकप्रिय प्रोग्रामिंग भाषाओं के साथ काम करने की अनुमति देता है। एक प्लेटफ़ॉर्म-विशिष्ट रनटाइम थ्रेड्स को सुरक्षित रूप से प्रबंधित करता है, स्वचालित रूप से उपलब्ध कोर की संख्या के अनुसार समानांतर प्रदर्शन प्रदान करता है, और वर्तमान में x86, पावर8 और एआरएम प्लेटफ़ॉर्म का समर्थन करता है।

इतिहास

अनुक्रम एल को शुरू में 1989 में शुरू होने वाली 20 साल की अवधि में विकसित किया गया था, ज्यादातर टेक्सास टेक यूनिवर्सिटी में। प्राथमिक धन नासा से था, जो मूल रूप से एक विशिष्ट भाषा विकसित करना चाहता था जो स्व-सत्यापन थी; अर्थात्, एक बार लिखे जाने के पश्चात, आवश्यकताओं को निष्पादित किया जा सकता है, और परिणाम वांछित परिणाम के विरुद्ध सत्यापित किए जा सकते हैं।

परियोजना के प्रमुख शोधकर्ता प्रारंभ में डॉ. डेनियल कुक थे,[2] जो जल्द ही डॉ. नेल्सन रशटन (टेक्सास के एक अन्य टेक प्रोफेसर) और पश्चात में डॉ. ब्रैड नेमनिच (तब कुक के अधीन एक पीएचडी छात्र) से जुड़ गए। एक ऐसी भाषा बनाने का लक्ष्य जो पठनीय होने के लिए पर्याप्त सरल था, लेकिन निष्पादन योग्य होने के लिए पर्याप्त स्पष्ट नहीं था, आविष्कारकों को एक कार्यात्मक प्रोग्रामिंग, घोषणात्मक प्रोग्रामिंग भाषा दृष्टिकोण पर व्यवस्थित करने के लिए प्रेरित किया, जहां एक प्रोग्रामर उन्हें प्राप्त करने के साधनों के अतिरिक्त वांछित परिणामों का वर्णन करता है। भाषा तब समस्या को सबसे कुशल उपायों से हल करने के लिए स्वतंत्र है जो इसे जाँच सकती है।

जैसे-जैसे भाषा विकसित हुई, शोधकर्ताओं ने उपभोग-सरलीकृत-उत्पादन (सीएसपी) सहित नए कम्प्यूटेशनल दृष्टिकोण विकसित किए।[3] 1998 में, समानांतर कंप्यूटिंग के लिए अनुक्रम एल को लागू करने के लिए अनुसंधान प्रारंभ हुआ। इसकी परिणति 2004 में हुई जब इसने सामान्यीकृत-स्थानांतरण (NT) सिमेंटिक के साथ अपना और अधिक पूर्ण रूप ले लिया,[4][5] जो केंद्रीय प्रसंस्करण इकाइयों (सीपीयू) के प्रमुख विक्रेताओं के साथ घड़ी की गति को बढ़ाने के अतिरिक्त बहु-कोर प्रोसेसर में एक प्रमुख बदलाव के साथ मेल खाता है। NT सिमेंटिक वर्क-हॉर्स है, जिसका उपयोग गामा और एनईएसएल के समान डेटा प्रवाह जैसी निष्पादन रणनीति के आधार पर संरचनाओं को सरल और विघटित करने के लिए किया जा रहा है।[6] [7] NT सिमेंटिक लैमेल और पेयटन-जोन्स के बॉयलरप्लेट उन्मूलन के समान लक्ष्य प्राप्त करता है।[8][9] भाषा की अन्य सभी विशेषताओं को इन दो नियामो से परिभाषित किया जा सकता है - जिसमें रिकर्सन (कंप्यूटर विज्ञान), सबस्क्रिप्टिंग संरचनाएं, फ़ंक्शन संदर्भ और फ़ंक्शन निकायों का मूल्यांकन सम्मलित है।[10][11]

चूंकि यह मूल उद्देश्य नहीं था, लेकिन इन नए दृष्टिकोणों ने प्रोग्रामर को पारदर्शी रूप से प्रदर्शन किए गए संचालन के एक बड़े अंश को समानांतर करने के लिए भाषा की अनुमति दी। 2006 में, टेक्सास टेक यूनिवर्सिटी में एक प्रोटोटाइप ऑटो-पैरेललाइजिंग संकलक विकसित किया गया था। 2009 में, टेक्सास टेक ने टेक्सास बहुकोर टेक्नोलॉजीज (टीएमटी) को बौद्धिक संपदा का लाइसेंस दिया,[12] जनवरी 2017 में टीएमटी ने वी3 जारी किया, जिसमें व्यावसायिक संस्करण के अतिरिक्त डाउनलोड के लिए एक मुफ्त सामुदायिक संस्करण भी सम्मलित है।

डिजाइन

अनुक्रम एल को एल्गोरिथम कोड पर ध्यान केंद्रित करते हुए सीखने और उपयोग करने के लिए जितना संभव हो उतना सरल बनाया गया है, जहां यह मूल्य जोड़ता है, उदाहरण के लिए, आविष्कारक ने I/O को फिर से शुरू नहीं करने का फैसला किया क्योंकि C ने इसे अच्छी तरह से संभाला। परिणामस्वरूप, पूर्ण अनुक्रम एल के लिए भाषा संदर्भ प्रचुर उदाहरणों के साथ केवल 40 पृष्ठ हैं, और इसके औपचारिक व्याकरण में लगभग 15 उत्पादन नियम हैं।[13]

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

p×n आव्यूह B के साथ m×p आव्यूह A का गुणनफल m×n आव्यूह है जिसकी (i,j)'वीं प्रविष्टि है

अनुक्रम एल परिभाषा उस परिभाषा को न्यूनाधिक सटीक रूप से दर्शाती है:

matmul(A(2), B(2)) [i,j] := 
       let k := 1...size(B); 
       in  sum( A[i,k] * B[k,j] );

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

जैसा कि ऊपर उल्लेख किया गया है, अनुक्रम एल में इनपुट/आउटपुट (I/O) के लिए कोई अंतर्निहित निर्माण नहीं है क्योंकि इसे अन्य प्रोग्रामिंग भाषाओं के साथ एक योगात्मक उपायो से काम करने के लिए अभिकल्पित किया गया था। बहुथ्रेडेड C++ को संकलित करने और 20+ सरलीकृत रैपर और इंटरफ़ेस जेनरेटर (स्विग) भाषाओं (C, C++, C#, जावा, पाइथन, आदि) का समर्थन करने का निर्णय का अर्थ है कि यह उपस्थित अभिकल्पित प्रवाह, प्रशिक्षण और टूल में आसानी से फ़िट हो जाता है। इसका उपयोग उपस्थिता अनुप्रयोगों को बढ़ाने, बहुकोर लाइब्रेरी बनाने और परिणामी कोड को अन्य कोड के साथ जोड़कर स्टैंडअलोन एप्लिकेशन बनाने के लिए किया जा सकता है जो I/O कार्य करता है। अनुक्रम एल फ़ंक्शंस को दिए गए इनपुट के साथ दुभाषिया (कंप्यूटिंग) से भी पूछा जा सकता है, जैसे कि पायथन और अन्य व्याख्या की गई भाषाएँ।

सामान्यीकरण-स्थानांतरण

अनुक्रम एल का मुख्य गैर-स्केलर निर्माण अनुक्रम है, जो अनिवार्य रूप से एक सूची है। अनुक्रमो को किसी भी स्तर पर नेस्टेड किया जा सकता है। कई विशुद्ध रूप से कार्यात्मक भाषाओं में सामान्य पुनरावर्तन के नियमित उपयोग से बचने के लिए, अनुक्रम एल सामान्यीकृत-ट्रांसपोज़ (NT) नामक एक तकनीक का उपयोग करता है, जिसमें स्केलर संचालन स्वचालित रूप से अनुक्रम के तत्वों पर वितरित होते हैं।[14] उदाहरण के लिए, अनुक्रम एल में हमारे पास है

इसका परिणाम '+' संक्रियक को ओवरलोड करने से नहीं, बल्कि NT के प्रभाव से होता है, जो निर्मित में और उपयोगकर्ता परिभाषित में दोनों तरह के सभी संचालन तक फैला होता है।

एक अन्य उदाहरण के रूप में, यदि f() एक 3-तर्क फ़ंक्शंस है जिसके तर्क अदिश हैं, तो किसी भी उपयुक्त x और z के लिए हमारे पास होगा

उदाहरण के लिए, एक बार में कई तर्कों के लिए NT निर्माण का उपयोग किया जा सकता है

यह तब भी काम करता है जब अपेक्षित तर्क किसी भी प्रकार के टी का गैर-अदिश होता है, और वास्तविक तर्क प्रकार टी की वस्तुओं की एक सूची है (या, अधिक सामान्यता में, कोई डेटा संरचना जिसका निर्देशांक प्रकार T के हैं)। उदाहरण के लिए, यदि A एक आव्यूह है और Xs आव्यूह [X1, ..., Xn],की एक सूची है, और आव्यूह गुणा की उपरोक्त परिभाषा दी गई है, तो अनुक्रम एल में हमारे पास होगा

 matmul(A,Xs) = [matmul(A,X1),...,matmul(A,Xn)]

एक नियम के रूप में, एनटी पुनरावृत्ति, पुनरावर्तन, या उच्च स्तरीय कार्यात्मक संक्रियको की आवश्यकता को समाप्त कर देता है

  1. डेटा संरचना के प्रत्येक भाग के लिए समान कार्य करें, या करने के लिए
  2. समान आकार की संरचनाओं के संबंधित भागों को एक साथ प्रोसेस करें।

यह पुनरावृत्ति और पुनरावर्तन के अधिकांश उपयोगों के लिए खाता है।

उदाहरण: अभाज्य संख्याएँ

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

एक पूर्णांक 1 से अधिक है, जिसमें स्वयं और 1 के अतिरिक्त कोई सकारात्मक विभाजक नहीं है।

तो एक धनात्मक पूर्णांक z अभाज्य है यदि 2 से लेकर z-1 तक कोई भी संख्या, समावेशी, समान रूप से विभाजित न हो। इस समस्या को शाब्दिक रूप से उपरोक्त परिभाषा को भाषा में लिप्यंतरित करके प्रोग्राम करने की अनुमति देता है।

अनुक्रम एल में, 2 से z-1 तक की संख्याओं का एक क्रम, समावेशी, सिर्फ (2...(z-1)) है, इसलिए 100 और 200 के बीच सभी अभाज्य संख्याओं को ढूंढने के लिए एक प्रोग्राम लिखा जा सकता है:

    prime(z) := z when none(z mod (2...(z-1)) = 0);

जो, अंग्रेजी में सिर्फ कहते हैं,

... तर्क वापस करें यदि 2 के बीच कोई भी संख्या नहीं है, और तर्क से 1 कम है, इसमें समान रूप से विभाजित करें।

यदि वह शर्त पूरी नहीं होती है, तो फ़ंक्शन कुछ भी नहीं लौटाता है।


 cmd:>prime(17)
   17
   cmd:>prime(18)
   empty

प्रोग्राम में 100 और 200 के बीच की स्ट्रिंग दिखाई नहीं देती है। बल्कि, एक प्रोग्रामर सामान्यतः उस भाग को तर्क के रूप में पास करेगा। चूंकि प्रोग्राम एक तर्क के रूप में एक स्केलर की अपेक्षा करता है, इसके अतिरिक्त संख्याओं के अनुक्रम को पारित करने से अनुक्रम एल अनुक्रम के प्रत्येक भाग पर स्वचालित रूप से संचालन करने का कारण बनता है। चूंकि फ़ंक्शन असफल मूल्यों के लिए खाली लौटाता है, परिणाम इनपुट अनुक्रम होगा, लेकिन केवल उन संख्याओं को वापस करने के लिए फ़िल्टर किया जाता है जो प्राइम के मानदंडों को पूरा करते हैं:


cmd:>prime(100...200)
   [101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199]

एक बहुत ही कम और पठनीय प्रोग्राम के साथ इस समस्या को हल करने के अतिरिक्त, नेस्टेड अनुक्रमों के अनुक्रम एल का मूल्यांकन सभी समानांतर में किया जाएगा।

अवयव

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

दुभाषिया

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

संकलक

एक कमांड-लाइन संकलक अनुक्रम एल कोड पढ़ता है और अत्यधिक समानांतर, स्वत: वैश्वीकरण, C++ और वैकल्पिक रूप से ओपनसीएल उत्पन्न करता है, जिसे निष्पादित करने के लिए अनुक्रम एल रनटाइम लाइब्रेरी से जोड़ा जाना चाहिए।

रनटाइम

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

डिबगर के साथ ग्रहण आईडीई प्लग-इन

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

पुस्तकालय

प्रोग्रामिंग प्रक्रिया को सुव्यवस्थित करने और सर्वोत्तम अभ्यास उदाहरणों के रूप में सेवा करने के लिए विभिन्न गणित और अन्य मानक फ़ंक्शन पुस्तकालयों को अनुक्रम एल स्रोत कोड के रूप में सम्मलित किया गया है। इन्हें आयातित किया जा सकता है, ठीक उसी तरह जैसे C या C++ लाइब्रेरी # सम्मलित हैं।

यह भी देखें

संदर्भ

  1. Template:साइट वेब
  2. "टेक्सास मल्टीकोर टेक्नोलॉजीज में डॉ। डैनियल कुक". Archived from the original on 2016-03-04. Retrieved 2016-02-24.
  3. "उपभोग-सरलीकृत-उत्पादन (सीएसपी)" (PDF). Archived from the original (PDF) on 2017-02-02. Retrieved 2017-01-26.
  4. Nemanich, Brad; Cooke, Daniel; Rushton, Nelson (2010), SequenceL: Transparency And Multi-Core Parallelisms (PDF), DAMP '10 Proceedings of the 5th ACM SIGPLAN workshop on Declarative Aspects of Multicore Programming, New York, NY, US: ACM, pp. 45–52, archived from the original (PDF) on 2017-02-02, retrieved 2017-01-26
  5. Cooke, Daniel; Rushton, Nelson; Nemanich, Brad; Watson, Robert G.; Andersen, Per (March 2008), "Normalize, Transpose, and Distribute: An Automatic Approach for Handling Nonscalars", ACM Transactions on Programming Languages and Systems, 30 (2): 1–49, doi:10.1145/1330017.1330020, S2CID 6833254
  6. Banater, J-P; Le Metayer, D. (January 1993), "Programming by Multiset Transformation" (PDF), Communications of the ACM, 36 (1): 98–111, doi:10.1145/151233.151242, S2CID 17076396
  7. Blelloch, Guy (March 1996), "Programming Parallel Algorithms", Communications of the ACM, 39 (3): 85–97, CiteSeerX 10.1.1.141.5884, doi:10.1145/227234.227246, S2CID 12118850
  8. Lämmel, Ralf; Peyton-Jones, Simon (2003), "Scrap your boilerplate: a practical design pattern for generic programming", Proceedings of TLDI 2003
  9. Lämmel, Ralf; Peyton-Jones, Simon (2004), "Scrap more boilerplate: reflection, zips, and generalised casts", Proceedings of ICFP 2004
  10. Cooke, Daniel; Rushton, Nelson (January 1993), "Iterative and Parallel Algorithm Design from High Level Language Traces", ICCS'05 Proceedings of the 5th International Conference on Computational Science, Part III: 891–894, doi:10.1007/11428862_132, ISBN 978-3-540-26044-8
  11. Cooke, Daniel; Rushton, Nelson (June 27–30, 2005), "SequenceL – An Overview of a Simple Language", Proceedings of the 2005 International Conference on Programming Languages and Compilers, PLC 2005
  12. Texas Multicore Technologies, Inc.
  13. Nemanich, Brad; Cooke, Daniel; Rushton, Nelson (2010), SequenceL: Transparency And Multi-Core Parallelisms (PDF), DAMP '10 Proceedings of the 5th ACM SIGPLAN workshop on Declarative Aspects of Multicore Programming, New York, NY, US: ACM, pp. 45–52, archived from the original (PDF) on 2017-02-02, retrieved 2017-01-26
  14. Cooke, Daniel; Rushton, Nelson (June 27–30, 2005), "SequenceL – An Overview of a Simple Language", Proceedings of the 2005 International Conference on Programming Languages and Compilers, PLC 2005
  15. Intel Threaded Building Blocks (TBB)

बाहरी संबंध