पर्ल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 249: Line 249:


== डाटाबेस इंटरफेस ==
== डाटाबेस इंटरफेस ==
पर्ल की टेक्स्ट-हैंडलिंग क्षमताओं का उपयोग एसक्यूएल प्रश्न उत्पन्न करने के लिए किया जा सकता है; सरणियाँ, हैश और स्वचालित मेमोरी प्रबंधन, लौटाए गए डेटा को एकत्र करना और संसाधित करना आसान बनाता है। उदाहरण के लिए, टिम बन्स के [[पर्ल डीबीआई]] एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) में, एपीआई के तर्क [[एसक्यूएल]] प्रश्नों का पाठ हो सकते हैं; इस प्रकार एक ही समय में कई भाषाओं में प्रोग्राम करना संभव है (उदाहरण के लिए, [[यहाँ दस्तावेज़]] में [[HTML|एचटीएमएल]], [[जावास्क्रिप्ट]] और एसक्यूएल का उपयोग करके [[वेब पृष्ठ]] बनाने के लिए)। प्रत्येक एसक्यूएल क्वेरी को प्रोग्रामेटिक रूप से अनुकूलित करने के लिए पर्ल वेरिएबल इंटरपोलेशन का उपयोग, और प्रत्येक एसक्यूएल क्वेरी से परिणामी [[डेटा सेट]] को प्रोग्रामेटिक रूप से होल्ड करने के लिए संरचनाओं के रूप में पर्ल सरणियों या हैश के विनिर्देश, बड़ी मात्रा में डेटा को संभालने के लिए एक उच्च-स्तरीय तंत्र की अनुमति देता है। पर्ल सबप्रोग्राम द्वारा पोस्ट-प्रोसेसिंग के लिए।<ref>{{cite book |last = Descartes |first = Alligator |title = प्रोग्रामिंग पर्ल डीबीआई: [पर्ल के साथ डेटाबेस प्रोग्रामिंग]|year = 2000 |publisher = O'Reilly |location = Beijing [u.a.] |isbn = 978-1-56592-699-8 |edition = 1 |author2 = Bunce, Tim |url = https://archive.org/details/programmingperld00desc }}</ref>
पर्ल की टेक्स्ट-हैंडलिंग क्षमताओं का उपयोग SQL प्रश्न उत्पन्न करने के लिए किया जा सकता है; सरणियाँ, हैश और स्वचालित मेमोरी प्रबंधन, लौटाए गए डेटा को एकत्र करना और संसाधित करना आसान बनाता है। उदाहरण के लिए, टिम बन्स के [[पर्ल डीबीआई|पर्ल  DBI]] एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) में, एपीआई के तर्क [[एसक्यूएल|SQL]] प्रश्नों का पाठ हो सकते हैं; इस प्रकार एक ही समय में कई भाषाओं में प्रोग्राम करना संभव है (उदाहरण के लिए, [[यहाँ दस्तावेज़]] में [[HTML]], [[जावास्क्रिप्ट|JavaScript]] और SQL का उपयोग करके [[वेब पृष्ठ]] बनाने के लिए)। प्रत्येक SQL क्वेरी को प्रोग्रामेटिक रूप से अनुकूलित करने के लिए पर्ल वेरिएबल इंटरपोलेशन का उपयोग, और प्रत्येक SQL क्वेरी से परिणामी [[डेटा सेट]] को प्रोग्रामेटिक रूप से होल्ड करने के लिए संरचनाओं के रूप में पर्ल सरणियों या हैश के विनिर्देश, बड़ी मात्रा में डेटा को संभालने के लिए एक उच्च-स्तरीय तंत्र की अनुमति देता है। पर्ल सबप्रोग्राम द्वारा पोस्ट-प्रोसेसिंग के लिए।<ref>{{cite book |last = Descartes |first = Alligator |title = प्रोग्रामिंग पर्ल डीबीआई: [पर्ल के साथ डेटाबेस प्रोग्रामिंग]|year = 2000 |publisher = O'Reilly |location = Beijing [u.a.] |isbn = 978-1-56592-699-8 |edition = 1 |author2 = Bunce, Tim |url = https://archive.org/details/programmingperld00desc }}</ref>
पर्ल के शुरुआती संस्करणों में, दुभाषिया को [[ग्राहक की ओर]] डेटाबेस लाइब्रेरी के साथ जोड़कर डेटाबेस इंटरफेस बनाया गया था। यह पर्याप्त रूप से कठिन था कि यह केवल कुछ सबसे महत्वपूर्ण और सबसे व्यापक रूप से उपयोग किए जाने वाले डेटाबेस के लिए किया गया था, और इसने परिणामी डेटा को सीमित कर दिया।<code>पर्ल</code>एक समय में केवल एक डेटाबेस इंटरफ़ेस का उपयोग करने के लिए निष्पादन योग्य।<ref>{{Cite web|title=पर्ल प्रोग्रामिंग - प्रोग्रामिंग भाषाओं के सिद्धांत|url=https://sites.google.com/a/principlesofprogram.com/www/perl|access-date=2021-05-18|website=sites.google.com|archive-date=October 8, 2020|archive-url=https://web.archive.org/web/20201008130113/https://sites.google.com/a/principlesofprogram.com/www/perl|url-status=dead}}</ref>
पर्ल के प्रांरभिक संस्करणों में, दुभाषिया को [[ग्राहक की ओर]] डेटाबेस लाइब्रेरी के साथ जोड़कर डेटाबेस इंटरफेस बनाया गया था। यह पर्याप्त रूप से कठिन था कि यह केवल कुछ सबसे महत्वपूर्ण और सबसे व्यापक रूप से उपयोग किए जाने वाले डेटाबेस के लिए किया गया था, और इसने परिणामी डेटा को सीमित कर दिया।और परिणामी<code>पर्ल को</code>एक समय में केवल एक डेटाबेस इंटरफ़ेस का उपयोग करने के लिए निष्पादन योग्य<code>को</code>प्रतिबंधित कर दिया था।<ref>{{Cite web|title=पर्ल प्रोग्रामिंग - प्रोग्रामिंग भाषाओं के सिद्धांत|url=https://sites.google.com/a/principlesofprogram.com/www/perl|access-date=2021-05-18|website=sites.google.com|archive-date=October 8, 2020|archive-url=https://web.archive.org/web/20201008130113/https://sites.google.com/a/principlesofprogram.com/www/perl|url-status=dead}}</ref>
पर्ल 5 में, डेटाबेस इंटरफेस पर्ल डीबीआई मॉड्यूल द्वारा कार्यान्वित किए जाते हैं। डीबीआई (डेटाबेस इंटरफ़ेस) मॉड्यूल पर्ल अनुप्रयोगों के लिए एकल, डेटाबेस-स्वतंत्र इंटरफ़ेस प्रस्तुत करता है, जबकि डीबीडी (डेटाबेस ड्राइवर) मॉड्यूल लगभग 50 विभिन्न डेटाबेसों तक पहुँचने के विवरण को संभालता है; अधिकांश [[अमेरिकी राष्ट्रीय मानक संस्थान]] एसक्यूएल डेटाबेस के लिए डीबीडी ड्राइवर हैं।<ref>{{Cite book|last1=Bunce|first1=Tim|url=https://books.google.com/books?id=WfoOrfuwcb8C&q=The+DBI+(Database+Interface)+module+presents+a+single,+database-independent+interface+to+Perl+applications,+while+the+DBD+(Database+Driver)+modules+handle+the+details+of+accessing+some+50+different+databases;+there+are+DBD+drivers+for+most+ANSI+SQL+databases|title=पर्ल डीबीआई प्रोग्रामिंग: पर्ल के साथ डाटाबेस प्रोग्रामिंग|last2=Descartes|first2=Alligator|date=2000-02-04|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-1536-8|language=en}}</ref>
पर्ल 5 में, डेटाबेस इंटरफेस पर्ल DBI मॉड्यूल द्वारा कार्यान्वित किए जाते हैं। DBI (डेटाबेस इंटरफ़ेस) मॉड्यूल पर्ल अनुप्रयोगों के लिए एकल, डेटाबेस-स्वतंत्र इंटरफ़ेस प्रस्तुत करता है, जबकि DBD (डेटाबेस ड्राइवर) मॉड्यूल लगभग 50 विभिन्न डेटाबेसों तक पहुँचने के विवरण को संभालता है; अधिकांश [[अमेरिकी राष्ट्रीय मानक संस्थान]] SQL डेटाबेस के लिए DBD ड्राइवर हैं।<ref>{{Cite book|last1=Bunce|first1=Tim|url=https://books.google.com/books?id=WfoOrfuwcb8C&q=The+DBI+(Database+Interface)+module+presents+a+single,+database-independent+interface+to+Perl+applications,+while+the+DBD+(Database+Driver)+modules+handle+the+details+of+accessing+some+50+different+databases;+there+are+DBD+drivers+for+most+ANSI+SQL+databases|title=पर्ल डीबीआई प्रोग्रामिंग: पर्ल के साथ डाटाबेस प्रोग्रामिंग|last2=Descartes|first2=Alligator|date=2000-02-04|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-1536-8|language=en}}</ref>
डीबीआई डेटाबेस हैंडल और प्रश्नों के लिए कैशिंग प्रदान करता है, जो लंबे समय तक चलने वाले निष्पादन वातावरण जैसे mod_perl, में प्रदर्शन में काफी सुधार कर सकता है।<ref>{{cite web |last = Bekman |first = Stas |title = Mod_perl के तहत डेटाबेस के साथ कुशल कार्य|url = http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |access-date = 2007-09-01 |archive-date = August 22, 2007 |archive-url = https://web.archive.org/web/20070822162513/http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |url-status = live }}</ref> [[स्लैशडॉट प्रभाव]] के रूप में लोड स्पाइक्स को टालने में उच्च-वॉल्यूम सिस्टम की मदद करना।<ref>{{Cite book|last=Pachev|first=Sasha|url=https://books.google.com/books?id=vz6PcTdo8VUC&q=DBI+provides+caching+for+database+handles+and+queries,+which+can+greatly+improve+performance+in+long-lived+execution+environments+such+as+mod+perl,%5B100%5D+helping+high-volume+systems+avert+load+spikes+as+in+the+Slashdot+effect|title=MySQL आंतरिक को समझना: एक महान डाटाबेस की खोज और सुधार करना|date=2007-04-10|publisher="O'Reilly Media, Inc."|isbn=978-0-596-55280-0|language=en}}</ref>
DBI डेटाबेस हैंडल और प्रश्नों के लिए कैशिंग प्रदान करता है, जो लंबे समय तक चलने वाले निष्पादन वातावरण जैसे mod_perl, में प्रदर्शन में काफी सुधार कर सकता है।<ref>{{cite web |last = Bekman |first = Stas |title = Mod_perl के तहत डेटाबेस के साथ कुशल कार्य|url = http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |access-date = 2007-09-01 |archive-date = August 22, 2007 |archive-url = https://web.archive.org/web/20070822162513/http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |url-status = live }}</ref> [[स्लैशडॉट प्रभाव]] के रूप में लोड स्पाइक्स को टालने में उच्च-वॉल्यूम सिस्टम की मदद करना।<ref>{{Cite book|last=Pachev|first=Sasha|url=https://books.google.com/books?id=vz6PcTdo8VUC&q=DBI+provides+caching+for+database+handles+and+queries,+which+can+greatly+improve+performance+in+long-lived+execution+environments+such+as+mod+perl,%5B100%5D+helping+high-volume+systems+avert+load+spikes+as+in+the+Slashdot+effect|title=MySQL आंतरिक को समझना: एक महान डाटाबेस की खोज और सुधार करना|date=2007-04-10|publisher="O'Reilly Media, Inc."|isbn=978-0-596-55280-0|language=en}}</ref>
आधुनिक पर्ल अनुप्रयोगों में, विशेष रूप से कैटेलिस्ट (सॉफ्टवेयर) जैसे [[वेब ढांचा]] का उपयोग करके लिखे गए, डीबीआई मॉड्यूल का उपयोग अक्सर [[ऑब्जेक्ट-रिलेशनल मैपर]]्स जैसे डीबीआईएक्स::क्लास, क्लास::डीबीआई के माध्यम से अप्रत्यक्ष रूप से किया जाता है।<ref>{{Cite web|url=https://metacpan.org/pod/Class::DBI|title=क्लास :: डीबीआई - सिंपल डेटाबेस एब्स्ट्रेक्शन - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806100410/https://metacpan.org/pod/Class::DBI|url-status=live}}</ref> या गुलाब :: डीबी :: ऑब्जेक्ट<ref>{{Cite web|url=https://metacpan.org/pod/Rose::DB::Object|title=गुलाब :: डीबी :: ऑब्जेक्ट - एक्स्टेंसिबल, उच्च प्रदर्शन ऑब्जेक्ट-रिलेशनल मैपर (ओआरएम)। - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806085143/https://metacpan.org/pod/Rose::DB::Object|url-status=live}}</ref> जो एसक्यूएल प्रश्न उत्पन्न करते हैं और एप्लिकेशन लेखक को डेटा को पारदर्शी रूप से संभालते हैं।<ref>{{Cite web|title=टी एसक्यूएल डेवलपर संदर्भ पूछताछ|url=http://pdfpremiumfree.com/download/t-sql-querying-developer-reference-pdf/|access-date=2021-05-18|website=pdfpremiumfree.com|language=en}}</ref>
आधुनिक पर्ल अनुप्रयोगों में, विशेष रूप से कैटेलिस्ट (सॉफ्टवेयर) जैसे [[वेब ढांचा]] का उपयोग करके लिखे गए, DBI मॉड्यूल का उपयोग अक्सर [[ऑब्जेक्ट-रिलेशनल मैपर]]्स जैसे डीबीआईएक्स::क्लास, क्लास::डीबीआई के माध्यम से अप्रत्यक्ष रूप से किया जाता है।<ref>{{Cite web|url=https://metacpan.org/pod/Class::DBI|title=क्लास :: डीबीआई - सिंपल डेटाबेस एब्स्ट्रेक्शन - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806100410/https://metacpan.org/pod/Class::DBI|url-status=live}}</ref> या गुलाब :: डीबी :: ऑब्जेक्ट<ref>{{Cite web|url=https://metacpan.org/pod/Rose::DB::Object|title=गुलाब :: डीबी :: ऑब्जेक्ट - एक्स्टेंसिबल, उच्च प्रदर्शन ऑब्जेक्ट-रिलेशनल मैपर (ओआरएम)। - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806085143/https://metacpan.org/pod/Rose::DB::Object|url-status=live}}</ref> जो एसक्यू  SQL एल प्रश्न उत्पन्न करते हैं और एप्लिकेशन लेखक को डेटा को पारदर्शी रूप से संभालते हैं।<ref>{{Cite web|title=टी एसक्यूएल डेवलपर संदर्भ पूछताछ|url=http://pdfpremiumfree.com/download/t-sql-querying-developer-reference-pdf/|access-date=2021-05-18|website=pdfpremiumfree.com|language=en}}</ref>




== तुलनात्मक प्रदर्शन ==
== तुलनात्मक प्रदर्शन ==
[[कंप्यूटर भाषा बेंचमार्क गेम]] कई प्रोग्रामिंग भाषाओं में विशिष्ट प्रोग्रामिंग समस्याओं के कार्यान्वयन के प्रदर्शन की तुलना करता है।<ref>{{cite web |url = http://alioth.debian.org/projects/benchmarksgame/ |title = अलीओथ: द कंप्यूटर लैंग्वेज बेंचमार्क गेम: प्रोजेक्ट इन्फो|access-date = 2011-01-13 |publisher = [[Alioth]] |archive-url = https://web.archive.org/web/20130325192723/https://alioth.debian.org/projects/benchmarksgame/ |archive-date = March 25, 2013 |url-status = dead |df = mdy-all }}</ref> सबमिट किए गए पर्ल कार्यान्वयन आमतौर पर मेमोरी-यूसेज स्पेक्ट्रम के उच्च अंत की ओर प्रदर्शन करते हैं और विविध गति परिणाम देते हैं। बेंचमार्क गेम में पर्ल का प्रदर्शन व्याख्या की गई भाषाओं के लिए विशिष्ट है।<ref>{{cite web |url = http://benchmarksgame.alioth.debian.org/u32/which-programs-are-fastest.php?v8=on&lua=on&jruby=on&php=on&python3=on&yarv=on&perl=on |archive-url = https://web.archive.org/web/20130517145336/http://benchmarksgame.alioth.debian.org/u32/which-programs-are-fastest.php?v8=on&lua=on&jruby=on&php=on&python3=on&yarv=on&perl=on |url-status = dead |archive-date = 2013-05-17 |title = कौन से प्रोग्राम सबसे तेज़ हैं?|access-date = 2011-01-13 |work = Computer Language Benchmarks Game |publisher = [[Alioth]] }}</ref>
[[कंप्यूटर भाषा बेंचमार्क गेम]] कई प्रोग्रामिंग भाषाओं में विशिष्ट प्रोग्रामिंग समस्याओं के कार्यान्वयन के प्रदर्शन की तुलना करता है।<ref>{{cite web |url = http://alioth.debian.org/projects/benchmarksgame/ |title = अलीओथ: द कंप्यूटर लैंग्वेज बेंचमार्क गेम: प्रोजेक्ट इन्फो|access-date = 2011-01-13 |publisher = [[Alioth]] |archive-url = https://web.archive.org/web/20130325192723/https://alioth.debian.org/projects/benchmarksgame/ |archive-date = March 25, 2013 |url-status = dead |df = mdy-all }}</ref> सबमिट किए गए पर्ल कार्यान्वयन सामान्यतः मेमोरी-यूसेज स्पेक्ट्रम के उच्च अंत की ओर प्रदर्शन करते हैं और विविध गति परिणाम देते हैं। बेंचमार्क गेम में पर्ल का प्रदर्शन व्याख्या की गई भाषाओं के लिए विशिष्ट है।<ref>{{cite web |url = http://benchmarksgame.alioth.debian.org/u32/which-programs-are-fastest.php?v8=on&lua=on&jruby=on&php=on&python3=on&yarv=on&perl=on |archive-url = https://web.archive.org/web/20130517145336/http://benchmarksgame.alioth.debian.org/u32/which-programs-are-fastest.php?v8=on&lua=on&jruby=on&php=on&python3=on&yarv=on&perl=on |url-status = dead |archive-date = 2013-05-17 |title = कौन से प्रोग्राम सबसे तेज़ हैं?|access-date = 2011-01-13 |work = Computer Language Benchmarks Game |publisher = [[Alioth]] }}</ref>
संकलित भाषाओं में समान कार्यक्रमों की तुलना में बड़े पर्ल प्रोग्राम अधिक धीरे-धीरे शुरू होते हैं क्योंकि पर्ल को हर बार चलने पर स्रोत को संकलित करना पड़ता है। येट अदर पर्ल कॉन्फ़्रेंस | वाईएपीसी::यूरोप 2005 सम्मेलन और उसके बाद के लेख ए टाइमली स्टार्ट में एक वार्ता में, जीन-लुइस लेरॉय ने पाया कि उनके पर्ल कार्यक्रमों को चलने में अपेक्षा से अधिक समय लगा क्योंकि पर्ल दुभाषिया ने अपने भीतर मॉड्यूल खोजने में महत्वपूर्ण समय बिताया। ओवर-लार्ज में पथ सम्मिलित है।<ref>{{cite web |url = http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |title = एक सामयिक शुरुआत|author = Leroy, Jean-Louis |date = 2005-12-01 |publisher = O'Reilly |access-date = May 22, 2006 |archive-date = June 13, 2006 |archive-url = https://web.archive.org/web/20060613025623/http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |url-status = live }}</ref> जावा, पायथन और रूबी के विपरीत, पर्ल के पास पूर्व-संकलन के लिए केवल प्रायोगिक समर्थन है।<ref>{{cite web |url = https://metacpan.org/module/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |title = बी :: बाइटकोड पर्ल कंपाइलर का बाइटकोड बैकएंड|author1 = Beattie, Malcolm |author2 = Enache Adrian |name-list-style = amp |year = 2003 |publisher = [[CPAN]] |access-date = September 16, 2013 |archive-date = March 30, 2021 |archive-url = https://web.archive.org/web/20210330011632/https://metacpan.org/pod/release/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |url-status = live }}</ref> इसलिए, पर्ल प्रोग्राम हर निष्पादन पर इस ओवरहेड पेनल्टी का भुगतान करते हैं। विशिष्ट कार्यक्रमों का रन चरण इतना लंबा है कि [[परिशोधित]] स्टार्टअप समय पर्याप्त नहीं है, लेकिन बहुत कम निष्पादन समय को मापने वाले बेंचमार्क इस ओवरहेड के कारण तिरछे होने की संभावना है।<ref>{{Cite book|last1=Schwartz|first1=Randal|url=https://books.google.com/books?id=va1PSgaO4xIC&q=Therefore,+Perl+programs+pay+this+overhead+penalty+on+every+execution.+The+run+phase+of+typical+programs+is+long+enough+that+amortized+startup+time+is+not+substantial,+but+benchmarks+that+measure+very+short+execution+times+are+likely+to+be+skewed+due+to+this+overhead.|title=लर्निंग पर्ल|last2=foy|first2=brian|last3=Phoenix|first3=Tom|date=2011-06-23|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-0358-7|language=en}}</ref>
संकलित भाषाओं में समान कार्यक्रमों की तुलना में बड़े पर्ल प्रोग्राम अधिक धीरे-धीरे आरम्भ होते हैं क्योंकि पर्ल को हर बार चलने पर स्रोत को संकलित करना पड़ता है। येट अदर पर्ल कॉन्फ़्रेंस | वाईएपीसी::यूरोप 2005 सम्मेलन और उसके बाद के लेख ए टाइमली स्टार्ट में एक वार्ता में, जीन-लुइस लेरॉय ने पाया कि उनके पर्ल कार्यक्रमों को चलने में अपेक्षा से अधिक समय लगा क्योंकि पर्ल दुभाषिया ने अपने भीतर मॉड्यूल खोजने में महत्वपूर्ण समय बिताया। ओवर-लार्ज में पथ सम्मिलित है।<ref>{{cite web |url = http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |title = एक सामयिक शुरुआत|author = Leroy, Jean-Louis |date = 2005-12-01 |publisher = O'Reilly |access-date = May 22, 2006 |archive-date = June 13, 2006 |archive-url = https://web.archive.org/web/20060613025623/http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |url-status = live }}</ref> जावा, पायथन और रूबी के विपरीत, पर्ल के पास पूर्व-संकलन के लिए केवल प्रायोगिक समर्थन है।<ref>{{cite web |url = https://metacpan.org/module/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |title = बी :: बाइटकोड पर्ल कंपाइलर का बाइटकोड बैकएंड|author1 = Beattie, Malcolm |author2 = Enache Adrian |name-list-style = amp |year = 2003 |publisher = [[CPAN]] |access-date = September 16, 2013 |archive-date = March 30, 2021 |archive-url = https://web.archive.org/web/20210330011632/https://metacpan.org/pod/release/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |url-status = live }}</ref> इसलिए, पर्ल प्रोग्राम हर निष्पादन पर इस ओवरहेड पेनल्टी का भुगतान करते हैं। विशिष्ट कार्यक्रमों का रन चरण इतना लंबा है कि [[परिशोधित]] स्टार्टअप समय पर्याप्त नहीं है, लेकिन बहुत कम निष्पादन समय को मापने वाले बेंचमार्क इस ओवरहेड के कारण तिरछे होने की संभावना है।<ref>{{Cite book|last1=Schwartz|first1=Randal|url=https://books.google.com/books?id=va1PSgaO4xIC&q=Therefore,+Perl+programs+pay+this+overhead+penalty+on+every+execution.+The+run+phase+of+typical+programs+is+long+enough+that+amortized+startup+time+is+not+substantial,+but+benchmarks+that+measure+very+short+execution+times+are+likely+to+be+skewed+due+to+this+overhead.|title=लर्निंग पर्ल|last2=foy|first2=brian|last3=Phoenix|first3=Tom|date=2011-06-23|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-0358-7|language=en}}</ref>
इस स्थिति को सुधारने के लिए कई उपकरण पेश किए गए हैं। पहला ऐसा उपकरण अपाचे का mod_perl था, जिसने सबसे आम कारणों में से एक को संबोधित करने की मांग की थी कि छोटे पर्ल प्रोग्राम तेजी से लागू किए गए थे: कॉमन गेटवे इंटरफेस [[वर्ल्ड वाइड वेब]] डेवलपमेंट। एक्टिवस्टेट, माइक्रोसॉफ्ट [[ISAPI|आईएसएपआई]] के माध्यम से, समान प्रदर्शन सुधार प्रदान करता है।<ref>{{Cite book|last1=Stein|first1=Lincoln|url=https://books.google.com/books?id=qyzTI_eAeHUC&q=A+number+of+tools+have+been+introduced+to+improve+this+situation.+The+first+such+tool+was+Apache's+mod+perl,+which+sought+to+address+one+of+the+most-common+reasons+that+small+Perl+programs+were+invoked+rapidly:+CGI+Web+development.+ActivePerl,+via+Microsoft+ISAPI,+provides+similar+performance+improvements.|title=पर्ल और सी के साथ अपाचे मॉड्यूल लिखना: अपाचे एपीआई और मॉड_पर्ल|last2=MacEachern|first2=Doug|date=1999|publisher="O'Reilly Media, Inc."|isbn=978-1-56592-567-0|language=en}}</ref>
इस स्थिति को सुधारने के लिए कई उपकरण प्रदर्शित किए गए हैं। पहला ऐसा उपकरण अपाचे का mod_perl था, जिसने सबसे आम कारणों में से एक को संबोधित करने की मांग की थी कि छोटे पर्ल प्रोग्राम तेजी से लागू किए गए थे: कॉमन गेटवे इंटरफेस [[वर्ल्ड वाइड वेब]] डेवलपमेंट। एक्टिवस्टेट, माइक्रोसॉफ्ट [[ISAPI|आईएसएपआई]] के माध्यम से, समान प्रदर्शन सुधार प्रदान करता है।<ref>{{Cite book|last1=Stein|first1=Lincoln|url=https://books.google.com/books?id=qyzTI_eAeHUC&q=A+number+of+tools+have+been+introduced+to+improve+this+situation.+The+first+such+tool+was+Apache's+mod+perl,+which+sought+to+address+one+of+the+most-common+reasons+that+small+Perl+programs+were+invoked+rapidly:+CGI+Web+development.+ActivePerl,+via+Microsoft+ISAPI,+provides+similar+performance+improvements.|title=पर्ल और सी के साथ अपाचे मॉड्यूल लिखना: अपाचे एपीआई और मॉड_पर्ल|last2=MacEachern|first2=Doug|date=1999|publisher="O'Reilly Media, Inc."|isbn=978-1-56592-567-0|language=en}}</ref>
एक बार पर्ल कोड संकलित हो जाने के बाद, निष्पादन चरण के दौरान अतिरिक्त ओवरहेड होता है जो आमतौर पर सी या सी ++ जैसी संकलित भाषाओं में लिखे गए प्रोग्राम के लिए सम्मिलित नहीं होता है। ऐसे ओवरहेड के उदाहरणों में [[बाईटकोड]] व्याख्या, संदर्भ-गिनती स्मृति प्रबंधन और गतिशील टाइप-चेकिंग सम्मिलित हैं।<ref>{{Cite book|last1=Bekman|first1=Stas|url=https://books.google.com/books?id=UDabAgAAQBAJ&q=Once+Perl+code+is+compiled,+there+is+additional+overhead+during+the+execution+phase+that+typically+isn't+present+for+programs+written+in+compiled+languages+such+as+C+or+C++.+Examples+of+such+overhead+include+bytecode+interpretation,+reference-counting+memory+management,+and+dynamic+type-checking.|title=प्रैक्टिकल मोड_पर्ल|last2=Cholet|first2=Eric|date=2003|publisher="O'Reilly Media, Inc."|isbn=978-0-596-00227-5|language=en}}</ref>
एक बार पर्ल कोड संकलित हो जाने के बाद, निष्पादन चरण के समय अतिरिक्त ओवरहेड होता है जो सामान्यतः सी या सी ++ जैसी संकलित भाषाओं में लिखे गए प्रोग्राम के लिए सम्मिलित नहीं होता है। ऐसे ओवरहेड के उदाहरणों में [[बाईटकोड]] व्याख्या, संदर्भ-गिनती स्मृति प्रबंधन और गतिशील टाइप-चेकिंग सम्मिलित हैं।<ref>{{Cite book|last1=Bekman|first1=Stas|url=https://books.google.com/books?id=UDabAgAAQBAJ&q=Once+Perl+code+is+compiled,+there+is+additional+overhead+during+the+execution+phase+that+typically+isn't+present+for+programs+written+in+compiled+languages+such+as+C+or+C++.+Examples+of+such+overhead+include+bytecode+interpretation,+reference-counting+memory+management,+and+dynamic+type-checking.|title=प्रैक्टिकल मोड_पर्ल|last2=Cholet|first2=Eric|date=2003|publisher="O'Reilly Media, Inc."|isbn=978-0-596-00227-5|language=en}}</ref>




=== अनुकूलन ===
=== अनुकूलन ===
सबसे महत्वपूर्ण दिनचर्या अन्य भाषाओं (जैसे सी (प्रोग्रामिंग भाषा)) में लिखी जा सकती है, जिसे सरल इनलाइन मॉड्यूल या अधिक जटिल, लेकिन लचीला, [[एक्सएस (पर्ल)]] तंत्र के माध्यम से पर्ल से जोड़ा जा सकता है।<ref>{{cite web |url = https://metacpan.org/module/Inline |title = इनलाइन - metacpan.org|access-date = 2011-01-26 |last = Ingerson |first = Brian |publisher = [[CPAN]] |url-status = dead |archive-url = https://web.archive.org/web/20130613163723/https://metacpan.org/module/Inline |archive-date = June 13, 2013 }}</ref>
सबसे महत्वपूर्ण दिनचर्या अन्य भाषाओं (जैसे C(प्रोग्रामिंग भाषा)) में लिखी जा सकती है, जिसे सरल इनलाइन मॉड्यूल या अधिक जटिल, लेकिन लचीला, [[एक्सएस (पर्ल)]] तंत्र के माध्यम से पर्ल से जोड़ा जा सकता है।<ref>{{cite web |url = https://metacpan.org/module/Inline |title = इनलाइन - metacpan.org|access-date = 2011-01-26 |last = Ingerson |first = Brian |publisher = [[CPAN]] |url-status = dead |archive-url = https://web.archive.org/web/20130613163723/https://metacpan.org/module/Inline |archive-date = June 13, 2013 }}</ref>





Revision as of 12:56, 8 January 2023

पर्ल
File:Perl language logo.svg
ParadigmMulti-paradigm: functional, imperative, object-oriented (class-based), reflective
द्वारा डिज़ाइन किया गयाLarry Wall
DeveloperLarry Wall
पहली प्रस्तुतिDecember 18, 1987; 38 years ago (1987-12-18)[1]
Stable release
  • 5.36.0[2] / 28 May 2022; 4 years ago (2022-05-28)
  • 5.34.1[3] / 13 March 2022; 4 years ago (2022-03-13)
Preview release
5.37.6[4] / 21 November 2022; 3 years ago (2022-11-21)
टाइपिंग अनुशासनDynamic
कार्यान्वयन भाषाC
ओएसCross-platform
लाइसेंसArtistic License 1.0[5][6] or GNU General Public License[7]
फ़ाइल नाम एक्सटेंशनएस.plx, .pl, .pm, .xs, .t, .pod, .cgi
वेबसाइटperl.org
Influenced by
AWK, BASIC, C, C++, Lisp, sed, Unix shell[8]
Influenced
CoffeeScript,[citation needed] Groovy,[citation needed] JavaScript, Julia, LPC, PHP, Python, Raku, Ruby, PowerShell

पर्ल दो उच्च-स्तरीय, सामान्य-उद्देश्य प्रोग्रामिंग भाषा, दुभाषिया (कंप्यूटिंग), गतिशील प्रोग्रामिंग भाषाओं का परिवार है। पर्ल 5 को संदर्भित करता है, लेकिन 2000 से 2019 तक इसने अपनी पुन: डिज़ाइन की गई सह भाषा, पर्ल 6 को भी संदर्भित किया, इससे पहले कि अक्टूबर 2019 में बाद के नाम को सामान्यतः राकू (प्रोग्रामिंग भाषा) में बदल दिया गया।[9][10] चूंकि पर्ल सामान्यतः संक्षिप्त रूप नहीं है,[11] प्रैक्टिकल डेटा निकालना और रिपोर्टिंग भाषा सहित कई तरह के संक्षिप्त नाम का उपयोग किया जा रहा है।[12] पर्ल को लैरी वॉल द्वारा 1987 में एक सामान्य-उद्देश्य वाली यूनिक्स स्क्रिप्टिंग भाषा के रूप में विकसित किया गया था जिससे कि रिपोर्ट प्रसंस्करण को आसान बनाया जा सके।[13] तब से, इसमें कई बदलाव और संशोधन हुए हैं। राकू, जो 2000 में पर्ल 5 के एक नए स्वरूप के रूप में प्रारभ्म हुआ, अंततः एक अलग भाषा में विकसित हुआ। दोनों भाषाएँ अलग-अलग विकास टीमों द्वारा स्वतंत्र रूप से विकसित की जा रही हैं और उदारतापूर्वक एक-दूसरे से विचार उधार लेती हैं।

पर्ल भाषाएँ C(प्रोग्रामिंग भाषा), यूनिक्स खोल, AWK (प्रोग्रामिंग भाषा), और sed सहित अन्य प्रोग्रामिंग भाषाओं से सुविधाएँ उधार लेती हैं;[1] वे यूनिक्स कमांड की कई समकालीन सूची की मनमानी डेटा-लंबाई सीमा के बिना टेक्स्ट प्रोसेसिंग सुविधाएं प्रदान करते हैं।[14] पर्ल 5 ने 1990 के दशक के अंत में अपनी शक्तिशाली नियमित अभिव्यक्ति और स्ट्रिंग (कंप्यूटिंग) पदच्छेद क्षमताओं के कारण एक कॉमन गेटवे इंटरफ़ेस भाषा के रूप में व्यापक लोकप्रियता प्राप्त की।[15][16][17][18] CGI के अतिरिक्त, पर्ल 5 का उपयोग कार्यकारी प्रबंधक, कंप्यूटर नेटवर्क प्रोग्रामिंग, वित्त, जैव सूचना विज्ञान और अन्य अनुप्रयोगों जैसे ग्राफिकल यूज़र इंटरफ़ेस के लिए किया जाता है। इसके लचीलेपन और शक्ति के कारण इसे स्क्रिप्टिंग भाषाओं की स्विस आर्मी चेनसॉ का उपनाम दिया गया है,[19] और वह भी जिसे कुछ लोग कुरूपता मानते हैं[20] कई अन्य भाषाओं की तुलना में इसके अधिक विशेष वर्णों के उपयोग के कारण। 1998 में, इसे डक्ट टेप के रूप में भी संदर्भित किया गया था जो इंटरनेट को एक साथ रखता है, गोंद भाषा के रूप में इसके सर्वव्यापी उपयोग और इसकी कथित अयोग्यता दोनों के संदर्भ में।[21] पर्ल अत्यधिक अभिव्यंजक शक्ति (कंप्यूटर विज्ञान) प्रोग्रामिंग भाषा है: किसी दिए गए एल्गोरिथ्म के लिए स्रोत कोड छोटा और अत्यधिक संकुचित हो सकता है।[22][23]


नाम

पर्ल को मूल रूप से "पर्ल" नाम दिया गया था। वॉल सकारात्मक अर्थों के साथ भाषा को एक छोटा नाम देना चाहते थे। वॉल ने पर्ल के आधिकारिक प्रदर्शन से पहले वर्तमान समय की पर्ल (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा की खोज की और नाम की वर्तनी बदल दी।[24] भाषा का वर्णन करते समय, नाम पूंजीकृत होता है: पर्ल। प्रोग्राम का संदर्भ देते समय, नाम अनकैपिटलाइज्ड (पर्ल) होता है क्योंकि अधिकांश यूनिक्स-जैसी फाइल सिस्टम केस-संवेदी होते हैं। प्रोग्रामिंग पर्ल के पहले संस्करण के जारी होने से पहले, भाषा को पर्ल के रूप में संदर्भित करना आम बात थी।चूंकि, रैंडल एल. श्वार्ट्ज ने पुस्तक में भाषा के नाम को पूंजीकृत किया ताकि टाइपसेट करते समय इसे बेहतर तरीके से प्रदर्शित किया जा सके। इस स्थिति के भेद को बाद में विहित के रूप में प्रलेखित किया गया था।[25] नाम को कभी-कभी संक्षिप्त नाम के रूप में विस्तारित किया जाता है: प्रैक्टिकल एक्सट्रैक्शन और रिपोर्ट भाषा[26] और वॉल्स ओन पैथोलॉजिकली इक्लेक्टिक रबिश लिस्टर जो पर्ल के मैनुअल पेज में है।[27]


इतिहास

प्रारंभिक संस्करण

लैरी वॉल ने 1987 में यूनिसिस में एक प्रोग्रामर के रूप में काम करते हुए।[14]और 18 दिसंबर 1987 को संस्करण 1.0 पर पर्ल पर काम करना प्रारम्भ किया।[1]अगले कुछ वर्षों में भाषा का तेजी से विस्तार हुआ।

1988 में रिलीज़ हुई पर्ल 2 में एक बेहतर रेगुलर एक्सप्रेशन इंजन था। 1989 में जारी पर्ल 3 ने बाइनरी डेटा स्ट्रीम के लिए समर्थन जोड़ा।[citation needed] मूल रूप से, पर्ल के लिए एकमात्र दस्तावेज एक लंबा मैन पेज था। 1991 में, प्रोग्रामिंग पर्ल, जिसे कई पर्ल प्रोग्रामर अपने कवर के कारण कैमल बुक के रूप में जानते थे, प्रकाशित हुआ और भाषा के लिए वास्तविक संदर्भ बन गया। उसी समय, पर्ल संस्करण संख्या को 4 तक बढ़ा दिया गया था, भाषा में एक बड़े बदलाव को चिह्नित करने के लिए नहीं अन्यथा पुस्तक द्वारा अच्छी तरह से प्रलेखित संस्करण की पहचान करने के लिए।[citation needed]


अर्ली पर्ल 5

पर्ल 4 रखरखाव रिलीज की एक श्रृंखला के माध्यम से चला गया, 1993 में पर्ल 4.036 में समाप्त हुआ, जिसके बाद वॉल ने पर्ल 5 पर काम प्रारभ्म करने के लिए पर्ल 4 को छोड़ दिया। पर्ल 5 का प्रारंभिक डिजाइन 1994 में जारी रहा। पर्ल 5 को अलग-अलग प्लेटफॉर्म पर पोर्ट करने के काम को समन्वित करें। यह पर्ल 5 के विकास, रखरखाव और पोर्टिंग के लिए प्राथमिक मंच बना हुआ है।[28] पर्ल 5.000 को 17 अक्टूबर 1994 को जारी किया गया था।[29] यह दुभाषिया (कंप्यूटिंग) का लगभग पूर्ण पुनर्लेखन था, और इसने ऑब्जेक्ट (कंप्यूटर विज्ञान), संदर्भ (कंप्यूटर विज्ञान), स्थानीय चर | लेक्सिकल (मेरा) चर, और मॉड्यूलर प्रोग्रामिंग सहित भाषा में कई नई सुविधाएँ जोड़ीं। महत्वपूर्ण रूप से, मॉड्यूल ने दुभाषिया को संशोधित किए बिना भाषा को विस्तारित करने के लिए एक तंत्र प्रदान किया। इसने कोर दुभाषिया को स्थिर करने की अनुमति दी, भले ही इसने साधारण पर्ल प्रोग्रामर को नई भाषा सुविधाओं को जोड़ने में सक्षम बनाया। पर्ल 5 तब से सक्रिय विकास में है।

पर्ल 5.001 को 13 मार्च, 1995 को जारी किया गया था। पर्ल 5.002 को 29 फरवरी, 1996 को नए प्रोटोटाइप फीचर के साथ जारी किया गया था। इसने मॉड्यूल लेखकों को सबरूटीन्स बनाने की अनुमति दी जो पर्ल शेल निर्मित की तरह व्यवहार करते थे। पर्ल 5.003 को सुरक्षा रिलीज़ के रूप में 25 जून 1996 को रिलीज़ किया गया था।[30] पर्ल 5 इतिहास की सबसे महत्वपूर्ण घटनाओं में से एक भाषा के बाहर घटित हुई और यह इसके मॉड्यूल समर्थन का परिणाम था। 26 अक्टूबर 1995 को, सीपीएएन (सीपीएएन) को पर्ल भाषा और पर्ल मॉड्यूल के लिए एक सॉफ्टवेयर रिपॉजिटरी के रूप में स्थापित किया गया था; मई 2017 तक, इसमें 35,190 वितरणों में 185,178 से अधिक मॉड्यूल हैं, जो 13,071 से अधिक लेखकों द्वारा लिखे गए हैं, और दुनिया भर में 245 से अधिक स्थानों पर नजर आते हैं।[31] पर्ल 5.004 को 15 मई, 1997 को जारी किया गया था, और इसमें अन्य बातों के अतिरिक्त, यूनिवर्सल पैकेज सम्मिलित था, जिसमें पर्ल को एक आधार वस्तु दी गई थी जिससे सभी वर्ग (कंप्यूटर प्रोग्रामिंग) स्वचालित रूप से प्राप्त हुए थे और मॉड्यूल के संस्करणों की आवश्यकता की क्षमता थी। एक अन्य महत्वपूर्ण विकास CGI.pm मॉड्यूल का समावेश था,[32] जिसने कॉमन गेटवे इंटरफेस के रूप में पर्ल की लोकप्रियता में योगदान दिया।[33] पर्ल 5.004 ने