साइथन: Difference between revisions

From Vigyanwiki
(Created page with "{{Distinguish|CPython}} {{Use dmy dates|date=February 2014}} {{short description|Programming language}} {{Infobox programming language | name = Cython | logo = Cython-logo.svg...")
 
No edit summary
Line 1: Line 1:
{{Distinguish|CPython}}
{{Use dmy dates|date=February 2014}}
{{Use dmy dates|date=February 2014}}
{{short description|Programming language}}
{{short description|Programming language}}
{{Infobox programming language
{{Infobox programming language
| name = Cython
| name = साइथन
| logo = Cython-logo.svg
| logo = Cython-logo.svg
| developer = Robert Bradshaw, Stefan Behnel, et al.
| developer = रॉबर्ट ब्रैडशॉ, स्टीफन बेहनेल, एट अल।
| released = {{Start date and age|df=yes|2007|07|28}}<ref>{{cite web|url=http://www.behnel.de/cythonEP2008/cython-ep2008.html|type=28 July 2007: official Cython launch|title=The Cython Compiler for C-Extensions in Python|last=Behnel|first=Stefan|work=EuroPython|date=2008|publisher=Vilnius/Lietuva}}</ref>
| released = {{Start date and age|df=yes|2007|07|28}}<ref>{{cite web|url=http://www.behnel.de/cythonEP2008/cython-ep2008.html|type=28 July 2007: official Cython launch|title=The Cython Compiler for C-Extensions in Python|last=Behnel|first=Stefan|work=EuroPython|date=2008|publisher=Vilnius/Lietuva}}</ref>
| license = [[Apache License 2.0]]
| license = [[अपाचे लाइसेंस 2.0]]
| programming language = [[Python (programming language)|Python]]
| programming language = [[पायथन (प्रोग्रामिंग भाषा)|पायथन]]
| influenced_by = [[C (programming language)|C]], [[Python (programming language)|Python]]
| influenced_by = [[सी (प्रोग्रामिंग भाषा)|सी]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन]]
| operating_system = [[Windows]], [[macOS]], [[Linux]]
| operating_system = [[विंडोज]], [[मैकओएस]], [[लिनक्स]]
| file_ext = .pyx, .pxd, .pxi <ref>{{Cite web|title=Language Basics — Cython 3.0.0a9 documentation|url=https://cython.readthedocs.io/en/latest/src/userguide/language_basics.html#cython-file-types|access-date=2021-09-09|website=cython.readthedocs.io}}</ref>
| file_ext = .pyx, .pxd, .pxi <ref>{{Cite web|title=Language Basics — Cython 3.0.0a9 documentation|url=https://cython.readthedocs.io/en/latest/src/userguide/language_basics.html#cython-file-types|access-date=2021-09-09|website=cython.readthedocs.io}}</ref>
| website = {{official URL}}
| website = {{official URL}}
}}
}}
साइथन ({{IPAc-en|ˈ|s|aɪ|θ|ɒ|n}}) एक प्रोग्रामिंग भाषा है, एक (गैर-सख्त, कम से कम पायथन 3 के लिए) [[पायथन प्रोग्रामिंग भाषा]] का [[सुपरसेट]] (थोड़ा अलग शब्दार्थ के साथ), [[सी (प्रोग्रामिंग भाषा)]]-जैसा प्रदर्शन कोड के साथ देने के लिए डिज़ाइन किया गया है जो ज्यादातर पायथन में लिखा गया है वैकल्पिक अतिरिक्त सी-प्रेरित सिंटैक्स के साथ।<ref>{{cite web|url=http://docs.cython.org/src/quickstart/overview.html|title=Cython - an overview — Cython 0.19.1 documentation|publisher=Docs.cython.org|accessdate=2013-07-21}}</ref><ref>{{cite book|last1=Smith|first1=Kurt|title=Cython: A Guide for Python Programmers|date=2015|publisher=O'Reilly Media|isbn=978-1-4919-0155-7|url=http://shop.oreilly.com/product/0636920033431.do}}</ref>
साइथन ({{IPAc-en|ˈ|s|aɪ|θ|ɒ|n}}) एक प्रोग्रामिंग भाषा है, (गैर-यथार्थ, कम से कम पायथन 3 के लिए) [[पायथन प्रोग्रामिंग भाषा]] का [[सुपरसेट]] (कुछ अलग अर्थ के साथ), [[सी (प्रोग्रामिंग भाषा)]]-जैसा डिस्प्ले कोड देने के लिए डिज़ाइन किया गया है जो ज्यादातर वैकल्पिक अतिरिक्त सी-प्रेरित सिंटैक्स के साथ पायथन में लिखा गया है।<ref>{{cite web|url=http://docs.cython.org/src/quickstart/overview.html|title=Cython - an overview — Cython 0.19.1 documentation|publisher=Docs.cython.org|accessdate=2013-07-21}}</ref><ref>{{cite book|last1=Smith|first1=Kurt|title=Cython: A Guide for Python Programmers|date=2015|publisher=O'Reilly Media|isbn=978-1-4919-0155-7|url=http://shop.oreilly.com/product/0636920033431.do}}</ref>
साइथन एक [[संकलित भाषा]] है जिसका उपयोग आमतौर पर [[सीपीथॉन]] एक्सटेंशन मॉड्यूल उत्पन्न करने के लिए किया जाता है। एनोटेटेड पायथन-जैसे कोड को C (उदाहरण के लिए C ++ से भी प्रयोग करने योग्य) में संकलित किया जाता है, फिर स्वचालित रूप [[रैपर लाइब्रेरी]] को लपेटता है, एक्सटेंशन मॉड्यूल का उत्पादन करता है जिसे आयात विवरण का उपयोग करके नियमित पायथन कोड द्वारा लोड और उपयोग किया जा सकता है, लेकिन रन टाइम (प्रोग्राम) पर काफी कम कम्प्यूटेशनल ओवरहेड के साथ जीवनचक्र चरण)। साइथन स्वतंत्र सी या [[सी ++]] कोड को अजगर-आयात योग्य मॉड्यूल में लपेटने की सुविधा भी देता है।
साइथन एक [[संकलित भाषा]] है जिसका उपयोग सामान्यतः [[सीपीथॉन]] एक्सटेंशन मॉड्यूल उत्पन्न करने के लिए किया जाता है। एनोटेटेड पायथन-जैसे कोड को C (उदाहरण के लिए C ++ से भी प्रयोग करने योग्य) में संकलित किया जाता है, फिर स्वचालित रूप [[रैपर लाइब्रेरी]] को संकलित करता है, और एक्सटेंशन मॉड्यूल का उत्पादन करता है जिसे आयात विवरण का उपयोग करके नियमित पायथन कोड द्वारा लोड और उपयोग किया जा सकता है, लेकिन रन टाइम (प्रोग्राम) पर काफी कम कम्प्यूटेशनल ओवरहेड के साथ जीवनचक्र चरण साइथन स्वतंत्र सी या [[सी ++]] कोड को पायथन-आयात योग्य मॉड्यूल में संकलित करने की सुविधा भी देता है।


साइथन को पायथन और सी में लिखा गया है और यह [[माइक्रोसॉफ़्ट विंडोज़]], मैकओएस और [[लिनक्स]] पर काम करता है, जो सीपीथॉन 2.6, 2.7 और 3.3 और बाद के संस्करणों के साथ संगत सी स्रोत फ़ाइलों का उत्पादन करता है। साइथन स्रोत कोड जो साइथन संकलित करता है (सी तक) पायथन 2 और पायथन 3 सिंटैक्स दोनों का उपयोग कर सकता है, साइथन 0.x में पायथन 2 सिंटैक्स के लिए डिफ़ॉल्ट (और साइथन 3.x में पायथन 3 सिंटैक्स, जो वर्तमान में अल्फा सॉफ्टवेयर है)। डिफ़ॉल्ट को पायथन 3 (या 2) सिंटैक्स में ओवरराइड किया जा सकता है (उदाहरण के लिए स्रोत कोड टिप्पणी में)। चूंकि हाल के संस्करणों में पायथन 3 सिंटैक्स बदल गया है, साइथन नवीनतम जोड़ के साथ अद्यतित नहीं हो सकता है। साइथन के पास अधिकांश सी++ भाषा के लिए सहज समर्थन है और यह लगभग सभी मौजूदा पायथन कोड को संकलित करता है।<ref>{{Cite web |title=FAQ · cython/cython Wiki |url=https://github.com/cython/cython |access-date=2023-01-11 |website=GitHub |language=en}}</ref>
साइथन को पायथन और सी में लिखा गया है और यह [[माइक्रोसॉफ़्ट विंडोज़]], मैकओएस और [[लिनक्स]] पर कार्य करता है, जो सीपीथॉन 2.6, 2.7 और 3.3 और बाद के संस्करणों के साथ संगत सी स्रोत फ़ाइलों का उत्पादन करता है। साइथन स्रोत कोड जो साइथन संकलित करता है (सी तक) पायथन 2 और पायथन 3 सिंटैक्स दोनों का उपयोग कर सकता है, साइथन 0.x में पायथन 2 सिंटैक्स के लिए डिफ़ॉल्ट (और साइथन 3.x में पायथन 3 सिंटैक्स, जो वर्तमान में अल्फा सॉफ्टवेयर है) को पायथन 3 (या 2) सिंटैक्स में ओवरराइड किया जा सकता है (उदाहरण के लिए स्रोत कोड टिप्पणी में)। चूंकि हाल के संस्करणों में पायथन 3 सिंटैक्स बदल गया है, साइथन नवीनतम जोड़ के साथ अद्यतित नहीं हो सकता है। साइथन के पास अधिकांश सी++ भाषा के लिए सहज समर्थन है और यह लगभग सभी मौजूदा पायथन कोड को संकलित करता है।<ref>{{Cite web |title=FAQ · cython/cython Wiki |url=https://github.com/cython/cython |access-date=2023-01-11 |website=GitHub |language=en}}</ref> साइथन 3.0.0 विकास में है।<ref>{{Cite web |title=3.0 Milestone · cython/cython |url=https://github.com/cython/cython |access-date=2022-03-26 |website=GitHub |language=en}}</ref>
साइथन 3.0.0 विकास में है।<ref>{{Cite web |title=3.0 Milestone · cython/cython |url=https://github.com/cython/cython |access-date=2022-03-26 |website=GitHub |language=en}}</ref>




== डिजाइन ==
== डिजाइन ==
साइथन एक मानक पायथन मॉड्यूल का निर्माण करके काम करता है। हालाँकि, व्यवहार मानक पायथन से भिन्न होता है जिसमें मूल रूप से पायथन में लिखे गए मॉड्यूल कोड का सी में अनुवाद किया जाता है। जबकि परिणामी कोड तेज़ होता है, यह वास्तविक कार्य करने के लिए CPython दुभाषिया और CPython मानक पुस्तकालयों में कई कॉल करता है। इस व्यवस्था को चुनने से साइथन के विकास के समय में काफी बचत हुई, लेकिन मॉड्यूल की निर्भरता पायथन दुभाषिया और मानक पुस्तकालय पर है।
साइथन एक मानक पायथन मॉड्यूल का निर्माण करके कार्य करता है। हालाँकि, व्यवहार मानक पायथन से भिन्न होता है जिसमें मूल रूप से पायथन में लिखे गए मॉड्यूल कोड का सी में अनुवाद किया जाता है। जबकि परिणामी कोड तेज़ होता है, यह वास्तविक कार्य करने के लिए सी-पायथन दुभाषिया और सी-पायथन मानक लाइब्रेरियों में कई कॉल करता है। इस व्यवस्था को चुनने से साइथन के विकास के समय में काफी बचत हुई, लेकिन मॉड्यूल की निर्भरता पायथन दुभाषिया और मानक लाइब्रेरी पर है।
 
हालांकि अधिकांश कोड सी-आधारित है, व्याख्या किए गए पायथन में लिखे गए एक छोटे स्टब लोडर की सामान्यतः आवश्यकता होती है (जब तक कि लक्ष्य पूरी तरह से सी में लिखे गए लोडर को बनाने के लिए नहीं है, जिसमें सीपीथॉन के अनियंत्रित इंटर्नल के साथ कार्य सम्मिलित हो सकता है)। हालाँकि, पायथन दुभाषिया की उपस्थिति के कारण यह कोई बड़ी समस्या नहीं है।<ref>{{Cite web|title=Basic Tutorial — Cython 3.0a6 documentation|url=https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html|access-date=2020-12-11|website=cython.readthedocs.io}}</ref>


हालांकि अधिकांश कोड सी-आधारित है, व्याख्या किए गए पायथन में लिखे गए एक छोटे स्टब लोडर की आमतौर पर आवश्यकता होती है (जब तक कि लक्ष्य पूरी तरह से सी में लिखे गए लोडर को बनाने के लिए नहीं है, जिसमें सीपीथॉन के अनियंत्रित इंटर्नल के साथ काम शामिल हो सकता है)। हालाँकि, Python दुभाषिया की उपस्थिति के कारण यह कोई बड़ी समस्या नहीं है।<ref>{{Cite web|title=Basic Tutorial — Cython 3.0a6 documentation|url=https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html|access-date=2020-12-11|website=cython.readthedocs.io}}</ref>
सी (प्रोग्रामिंग लैंग्वेज)/सी++ [[सबरूटीन]] को इनवोक करने के लिए साइथन के पास एक [[विदेशी फ़ंक्शन इंटरफ़ेस]] है और [[स्थिर प्रकार]] के सबरूटीन पैरामीटर और परिणाम, स्थानीय चर और वर्ग विशेषताओं को घोषित करने की क्षमता है।
सी (प्रोग्रामिंग लैंग्वेज)/सी++ [[सबरूटीन]] को इनवोक करने के लिए साइथन के पास एक [[विदेशी फ़ंक्शन इंटरफ़ेस]] है और [[स्थिर प्रकार]] के सबरूटीन पैरामीटर और परिणाम, स्थानीय चर और वर्ग विशेषताओं को घोषित करने की क्षमता है।


एक साइथन प्रोग्राम जो एक समान एल्गोरिथ्म को संबंधित पायथन प्रोग्राम के रूप में लागू करता है, कम कंप्यूटिंग संसाधनों का उपभोग कर सकता है जैसे कि सीपीथॉन और साइथन निष्पादन मॉडल के बीच अंतर के कारण कोर मेमोरी और प्रोसेसिंग चक्र। एक बुनियादी पायथन प्रोग्राम CPython [[आभासी मशीन]] द्वारा लोड और निष्पादित किया जाता है, इसलिए रनटाइम और प्रोग्राम दोनों ही कंप्यूटिंग संसाधनों का उपभोग करते हैं। एक साइथन प्रोग्राम को C कोड में संकलित किया जाता है, जिसे आगे मशीन कोड में संकलित किया जाता है, इसलिए प्रोग्राम लोड होने पर वर्चुअल मशीन का उपयोग केवल संक्षिप्त रूप से किया जाता है।<ref>{{cite web|last=Oliphant|first=Travis|date=2011-06-20|url=http://technicaldiscovery.blogspot.com/2011/06/speeding-up-python-numpy-cython-and.html|title=Technical Discovery: Speeding up Python (NumPy, Cython, and Weave)|publisher=Technicaldiscovery.blogspot.com|accessdate=2013-07-21}}</ref><ref>
एक साइथन प्रोग्राम जो एक समान एल्गोरिथ्म को संबंधित पायथन प्रोग्राम के रूप में लागू करता है, कम कंप्यूटिंग संसाधनों का उपभोग कर सकता है जैसे कि सीपीथॉन और साइथन निष्पादन मॉडल के बीच अंतर के कारण कोर मेमोरी और प्रोसेसिंग चक्र एक बुनियादी पायथन प्रोग्राम सी-पायथन [[आभासी मशीन]] द्वारा लोड और निष्पादित किया जाता है, इसलिए रनटाइम और प्रोग्राम दोनों ही कंप्यूटिंग संसाधनों का उपभोग करते हैं। एक साइथन प्रोग्राम को C कोड में संकलित किया जाता है, जिसे आगे मशीन कोड में संकलित किया जाता है, इसलिए प्रोग्राम लोड होने पर वर्चुअल मशीन का उपयोग केवल संक्षिप्त रूप से किया जाता है।<ref>{{cite web|last=Oliphant|first=Travis|date=2011-06-20|url=http://technicaldiscovery.blogspot.com/2011/06/speeding-up-python-numpy-cython-and.html|title=Technical Discovery: Speeding up Python (NumPy, Cython, and Weave)|publisher=Technicaldiscovery.blogspot.com|accessdate=2013-07-21}}</ref><ref>
{{cite journal|last1=Behnel|first1=Stefan|last2=Bradshaw|first2=Robert|last3=Citro|first3=Craig|last4=Dalcin|first4=Lisandro|last5=Seljebotn|first5=Dag Sverre|last6=Smith|first6=Kurt|year=2011 |title=Cython: The Best of Both Worlds |journal=Computing in Science and Engineering |volume=13 |issue=2 |pages=31–39 |doi=10.1109/MCSE.2010.118 |bibcode=2011CSE....13b..31B|s2cid=14292107|url=http://research.google.com/pubs/pub36727.html}}
{{cite journal|last1=Behnel|first1=Stefan|last2=Bradshaw|first2=Robert|last3=Citro|first3=Craig|last4=Dalcin|first4=Lisandro|last5=Seljebotn|first5=Dag Sverre|last6=Smith|first6=Kurt|year=2011 |title=Cython: The Best of Both Worlds |journal=Computing in Science and Engineering |volume=13 |issue=2 |pages=31–39 |doi=10.1109/MCSE.2010.118 |bibcode=2011CSE....13b..31B|s2cid=14292107|url=http://research.google.com/pubs/pub36727.html}}
</ref><ref name="scipy09">
</ref><ref name="scipy09">
Line 35: Line 34:
साइथन कार्यरत हैं:
साइथन कार्यरत हैं:
* आशावादी अनुकूलन
* आशावादी अनुकूलन
* [[अनुमान टाइप करें]] (वैकल्पिक)
* [[अनुमान टाइप करें|अनुमानित कोड]] (वैकल्पिक)
* नियंत्रण संरचनाओं में कम ओवरहेड
* नियंत्रण संरचनाओं में कम ओवरहेड
* लो फंक्शन कॉल ओवरहेड<ref>{{cite web|url=http://telecom.inescporto.pt/~gjc/pybindgen-benchmarks/|title=wrapper benchmarks for several Python wrapper generators (except Cython)|access-date=28 May 2010|archive-url=https://web.archive.org/web/20150404154630/http://telecom.inescporto.pt/~gjc/pybindgen-benchmarks/|archive-date=4 April 2015|url-status=dead}}</ref><ref>{{cite web|url=http://behnel.de/cycppbench/|title=wrapper benchmarks for Cython, Boost.Python and PyBindGen|access-date=28 May 2010|archive-url=https://web.archive.org/web/20160303224104/http://www.behnel.de/cycppbench/|archive-date=3 March 2016|url-status=dead}}</ref>
* लो फंक्शन कॉल ओवरहेड<ref>{{cite web|url=http://telecom.inescporto.pt/~gjc/pybindgen-benchmarks/|title=wrapper benchmarks for several Python wrapper generators (except Cython)|access-date=28 May 2010|archive-url=https://web.archive.org/web/20150404154630/http://telecom.inescporto.pt/~gjc/pybindgen-benchmarks/|archive-date=4 April 2015|url-status=dead}}</ref><ref>{{cite web|url=http://behnel.de/cycppbench/|title=wrapper benchmarks for Cython, Boost.Python and PyBindGen|access-date=28 May 2010|archive-url=https://web.archive.org/web/20160303224104/http://www.behnel.de/cycppbench/|archive-date=3 March 2016|url-status=dead}}</ref>
प्रदर्शन दोनों पर निर्भर करता है कि साइथन द्वारा सी कोड क्या उत्पन्न होता है और सी कंपाइलर द्वारा उस कोड को कैसे संकलित किया जाता है।<ref>{{cite web|title=Cython: C-Extensions for Python|url=http://cython.org/index.html|accessdate=22 November 2015}}</ref>
डिस्प्ले दोनों पर निर्भर करता है कि साइथन द्वारा सी कोड क्या उत्पन्न होता है और सी कंपाइलर द्वारा उस कोड को कैसे संकलित किया जाता है।<ref>{{cite web|title=Cython: C-Extensions for Python|url=http://cython.org/index.html|accessdate=22 November 2015}}</ref>
 




== इतिहास ==
== इतिहास ==
साइथन पाइरेक्स (प्रोग्रामिंग लैंग्वेज) का व्युत्पन्न है, और पाइरेक्स की तुलना में अधिक सुविधाओं और अनुकूलन का समर्थन करता है।<ref>{{cite web|url=https://github.com/cython/cython/wiki/DifferencesFromPyrex|title=Differences between Cython and Pyrex}}</ref><ref>{{cite web|last=Ewing|first=Greg|url=http://mail.python.org/pipermail/python-dev/2011-March/109642.html|title=Re: VM and Language summit info for those not at Pycon (and those that are!)|type=Message to the electronic mailing-list <code>python-dev</code>|date=21 March 2011|accessdate=5 May 2011}}</ref> साइथॉन 2007 में सेजमैथ कंप्यूटर बीजगणित पैकेज के डेवलपर्स द्वारा पाइरेक्स से फोर्क (सॉफ्टवेयर विकास) था, क्योंकि वे पाइरेक्स की सीमाओं से नाखुश थे और पाइरेक्स के अनुरक्षक ग्रेग इविंग द्वारा स्वीकार किए गए पैच नहीं पा सके, जिन्होंने अपने उपकरण की तुलना में बहुत छोटे दायरे की कल्पना की थी। ऋषि डेवलपर्स के मन में था। फिर उन्होंने Pyrex को SageX के रूप में फोर्क किया। जब उन्होंने पाया कि लोग केवल सेजएक्स प्राप्त करने के लिए सेज डाउनलोड कर रहे थे, और अन्य पैकेजों के डेवलपर्स (स्टीफन बेहनेल सहित, जो [[एक्सएमएल]] लाइब्रेरी एलएक्सएमएल को बनाए रखते हैं) भी पाइरेक्स के कांटे बनाए रख रहे थे, सेजएक्स को सेज प्रोजेक्ट से अलग कर दिया गया और इसके साथ विलय कर दिया गया। <code>cython-lxml</code> साइथन बनने के लिए।<ref>{{cite web|author=Says Sage and Cython developer Robert Bradshaw at the Sage Days 29 conference|url=https://www.youtube.com/watch?v=osjSS2Rrvm0 |archive-url=https://ghostarchive.org/varchive/youtube/20211221/osjSS2Rrvm0 |archive-date=2021-12-21 |url-status=live|title=Cython: Past, Present and Future|publisher=youtube.com|date=22 March 2011|accessdate=5 May 2011}}{{cbignore}}</ref>
साइथन पाइरेक्स (प्रोग्रामिंग लैंग्वेज) का व्युत्पन्न है, और पाइरेक्स की तुलना में अधिक सुविधाओं और अनुकूलन का समर्थन करता है।<ref>{{cite web|url=https://github.com/cython/cython/wiki/DifferencesFromPyrex|title=Differences between Cython and Pyrex}}</ref><ref>{{cite web|last=Ewing|first=Greg|url=http://mail.python.org/pipermail/python-dev/2011-March/109642.html|title=Re: VM and Language summit info for those not at Pycon (and those that are!)|type=Message to the electronic mailing-list <code>python-dev</code>|date=21 March 2011|accessdate=5 May 2011}}</ref> साइथॉन 2007 में सेजमैथ कंप्यूटर बीजगणित पैकेज के डेवलपर्स द्वारा पाइरेक्स से फोर्क (सॉफ्टवेयर विकास) था, क्योंकि वे पाइरेक्स की सीमाओं से नाखुश थे और पाइरेक्स के अनुरक्षक ग्रेग इविंग द्वारा स्वीकार किए गए पैच नहीं पा सके, जिन्होंने अपने उपकरण की तुलना में बहुत छोटे दायरे की कल्पना की थी। ऋषि डेवलपर्स के मन में था। फिर उन्होंने पाइरेक्स को सेजएक्स के रूप में फोर्क किया। जब उन्होंने पाया कि लोग केवल सेजएक्स प्राप्त करने के लिए सेज डाउनलोड कर रहे थे, और अन्य पैकेजों के डेवलपर्स (स्टीफन बेहनेल सहित, जो [[एक्सएमएल]] लाइब्रेरी एलएक्सएमएल को बनाए रखते हैं) भी पाइरेक्स के सोर्स बनाए रख रहे थे, सेजएक्स को सेज प्रोजेक्ट से अलग कर दिया गया और इसके साथ विलय कर दिया गया। <code>साइथन-एलएक्सएमएल</code> साइथन बनने के लिए<ref>{{cite web|author=Says Sage and Cython developer Robert Bradshaw at the Sage Days 29 conference|url=https://www.youtube.com/watch?v=osjSS2Rrvm0 |archive-url=https://ghostarchive.org/varchive/youtube/20211221/osjSS2Rrvm0 |archive-date=2021-12-21 |url-status=live|title=Cython: Past, Present and Future|publisher=youtube.com|date=22 March 2011|accessdate=5 May 2011}}{{cbignore}}</ref>
साइथन फाइलों में एक <code>.pyx</code> विस्तार। अपने सबसे बुनियादी रूप में, साइथन कोड बिल्कुल पायथन कोड जैसा दिखता है। हालाँकि, जबकि मानक पायथन [[गतिशील टाइपिंग]] है, साइथन में, प्रकार वैकल्पिक रूप से प्रदान किए जा सकते हैं, जिससे बेहतर प्रदर्शन की अनुमति मिलती है, जहाँ लूप को C लूप में परिवर्तित करने की अनुमति मिलती है। उदाहरण के लिए:
साइथन फाइलों में एक <code>.pyx</code> विस्तार अपने सबसे बुनियादी रूप में, साइथन कोड बिल्कुल पायथन कोड जैसा दिखता है। हालाँकि, जबकि मानक पायथन [[गतिशील टाइपिंग]] है, साइथन में, प्रकार वैकल्पिक रूप से प्रदान किए जा सकते हैं, जिससे बेहतर डिस्प्ले की अनुमति मिलती है, जहाँ लूप को C लूप में परिवर्तित करने की अनुमति मिलती है। उदाहरण के लिए:
<वाक्यविन्यास लैंग = साइथन>
<वाक्यविन्यास लैंग = साइथन>
डीईएफ़ प्राइम्स (इंट किमीएक्स): # तर्क को इंट में बदल दिया जाएगा या टाइप एरर बढ़ा दिया जाएगा।
डीईएफ़ प्राइम्स (इंट किमीएक्स): # तर्क को इंट में बदल दिया जाएगा या टाइप एरर बढ़ा दिया जाएगा।
    cdef int n, k, i # ये वेरिएबल C प्रकार के साथ घोषित किए गए हैं।
  cdef int n, k, i # ये वेरिएबल C प्रकार के साथ घोषित किए गए हैं।
    cdef int p [1000] # एक और सी प्रकार
  cdef int p [1000] # एक और सी प्रकार
    परिणाम = [] # एक पायथन प्रकार
  परिणाम = [] # एक पायथन प्रकार
    अगर किमी> 1000:
  अगर किमी> 1000:
        किमी अधिकतम = 1000
  किमी अधिकतम = 1000
    के = 0
  के = 0
    एन = 2
  एन = 2
    जबकि कश्मीर <kmax:
  जबकि कश्मीर <kmax:
        मैं = 0
  मैं = 0
        जबकि मैं <के और एन% पी [i]! = 0:
  जबकि मैं <के और एन% पी [i]! = 0:
            मैं = मैं + 1
  मैं = मैं + 1
        अगर मैं == के:
  अगर मैं == के:
            पी [के] = एन
  पी [के] = एन
            के = के + 1
  के = के + 1
            परिणाम.परिशिष्ट (एन)
  परिणाम.परिशिष्ट (एन)
        एन = एन + 1
  एन = एन + 1
    वापसी परिणाम
  वापसी परिणाम
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


== उदाहरण ==
== उदाहरण ==
[[File:Cython CPython Ext Module Workflow.png|thumb|साइथन में हैलो वर्ल्ड]]साइथन के लिए एक नमूना [[हैलो वर्ल्ड]] प्रोग्राम अधिकांश भाषाओं की तुलना में अधिक जटिल है क्योंकि यह पायथन सी एपीआई और के साथ इंटरफेस करता है <code>setuptools</code> या अन्य [[PEP517]]-अनुपालन विस्तार निर्माण सुविधाएं। बुनियादी परियोजना के लिए कम से कम तीन फाइलों की आवश्यकता होती है:
[[File:Cython CPython Ext Module Workflow.png|thumb|साइथन में हैलो वर्ल्ड]]साइथन के लिए एक नमूना [[हैलो वर्ल्ड]] प्रोग्राम अधिकांश भाषाओं की तुलना में अधिक जटिल है क्योंकि यह पायथन सी एपीआई और के साथ इंटरफेस करता है <code>सेटअप टूल्स</code> या अन्य [[PEP517|पीईपी517]]-अनुपालन विस्तार निर्माण सुविधाएं बुनियादी परियोजना के लिए कम से कम तीन फाइलों की आवश्यकता होती है:


* ए <code>setup.py</code> फ़ाइल का आह्वान करने के लिए <code>setuptools</code> निर्माण प्रक्रिया जो एक्सटेंशन मॉड्यूल उत्पन्न करती है
* ए <code>setup.py</code> फ़ाइल का आह्वान करने के लिए <code>सेटअप टूल्स</code> निर्माण प्रक्रिया जो एक्सटेंशन मॉड्यूल उत्पन्न करती है
* एक्सटेंशन मॉड्यूल को लोड करने के लिए एक मुख्य पायथन प्रोग्राम
* एक्सटेंशन मॉड्यूल को लोड करने के लिए एक मुख्य पायथन प्रोग्राम
* साइथन स्रोत फ़ाइल (फ़ाइलें)
* साइथन स्रोत फ़ाइल (फ़ाइलें)
Line 74: Line 74:
निम्नलिखित कोड सूचियाँ निर्माण और लॉन्च प्रक्रिया को प्रदर्शित करती हैं:
निम्नलिखित कोड सूचियाँ निर्माण और लॉन्च प्रक्रिया को प्रदर्शित करती हैं:


<वाक्यविन्यास लैंग = अजगर>
<वाक्यविन्यास लैंग = पायथन>
# hello.pyx - पायथन मॉड्यूल, इस कोड को साइथन द्वारा सी में अनुवादित किया जाएगा।
# hello.pyx - पायथन मॉड्यूल, इस कोड को साइथन द्वारा सी में अनुवादित किया जाएगा।
डीईएफ़ Say_hello ():
डीईएफ़ Say_hello ():
    प्रिंट (हैलो वर्ल्ड!)
  प्रिंट (हैलो वर्ल्ड!)
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


<वाक्यविन्यास लैंग = अजगर>
<वाक्यविन्यास लैंग = पायथन>
# launch.py ​​- पायथन स्टब लोडर, साइथन द्वारा बनाए गए मॉड्यूल को लोड करता है।
# launch.py ​​- पायथन स्टब लोडर, साइथन द्वारा बनाए गए मॉड्यूल को लोड करता है।


Line 90: Line 90:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


<वाक्यविन्यास लैंग = अजगर>
<वाक्यविन्यास लैंग = पायथन>
# setup.py - कोड को पुनर्वितरित नहीं करने पर अनावश्यक, नीचे देखें
# setup.py - कोड को पुनर्वितरित नहीं करने पर अनावश्यक, नीचे देखें
setuptools आयात सेटअप से
सेटअप टूल्स आयात सेटअप से
साइथन से। आयात साइथनाइज करें
साइथन से। आयात साइथनाइज करें


सेटअप (नाम = हैलो वर्ल्ड ऐप,
सेटअप (नाम = हैलो वर्ल्ड ऐप,
      ext_modules = साइथोनाइज़ (* .pyx))
  ext_modules = साइथोनाइज़ (* .pyx))
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


Line 102: Line 102:


<वाक्यविन्यास लैंग = बैश>
<वाक्यविन्यास लैंग = बैश>
$ अजगर setup.py build_ext --inplace
$ पायथन setup.py build_ext --inplace
$ पायथन लॉन्च.py
$ पायथन लॉन्च.py
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


== IPython/Jupyter नोटबुक में प्रयोग करना ==
== आई-पायथन/जूपिटर नोटबुक में प्रयोग करना ==
साइथन के साथ शुरू करने का एक अधिक सरल तरीका कमांड-लाइन [[आईपीथॉन]] (या इन-ब्राउज़र पायथन कंसोल के माध्यम से ज्यूपिटर [[नोटबुक इंटरफ़ेस]] कहा जाता है) के माध्यम से है:
साइथन के साथ शुरू करने का एक अधिक सरल तरीका कमांड-लाइन [[आईपीथॉन]] (या इन-ब्राउज़र पायथन कंसोल के माध्यम से ज्यूपिटर [[नोटबुक इंटरफ़ेस]] कहा जाता है) के माध्यम से है:


Line 113: Line 113:


[2] में: %% साइथन
[2] में: %% साइथन
  ...: डीईएफ़ एफ (एन):
  ...: डीईएफ़ एफ (एन):
  ...: ए = 0
  ...: ए = 0
  ...: मैं सीमा में (एन) के लिए:
  ...: मैं सीमा में (एन) के लिए:
  ...: ए + = मैं
  ...: ए + = मैं
  ...: रिटर्न ए
  ...: रिटर्न ए
  ...:
  ...:
  ...: सीपीडीएफ जी (इंट एन):
  ...: सीपीडीएफ जी (इंट एन):
  ...: सीडीएफ लांग ए = 0
  ...: सीडीएफ लांग ए = 0
  ...: सीडीएफ इंट आई
  ...: सीडीएफ इंट आई
  ...: मैं सीमा में (एन) के लिए:
  ...: मैं सीमा में (एन) के लिए:
  ...: ए + = मैं
  ...: ए + = मैं
  ...: रिटर्न ए
  ...: रिटर्न ए
  ...:
  ...:


[3] में: %timeit f(1000000)
[3] में: %timeit f(1000000)
Line 134: Line 134:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


जो शुद्ध-अजगर संस्करण पर 95 गुना सुधार देता है। आधिकारिक क्विकस्टार्ट पेज में विषय पर अधिक जानकारी।<ref>{{Cite web|url=https://cython.readthedocs.io/en/latest/src/quickstart/build.html|title=Building Cython code|website=cython.readthedocs.io|access-date=2017-04-24}}</ref>
जो शुद्ध-पायथन संस्करण पर 95 गुना सुधार देता है। आधिकारिक क्विकस्टार्ट पेज में विषय पर अधिक जानकारी।<ref>{{Cite web|url=https://cython.readthedocs.io/en/latest/src/quickstart/build.html|title=Building Cython code|website=cython.readthedocs.io|access-date=2017-04-24}}</ref>




Line 140: Line 140:
पायथन के वैज्ञानिक उपयोगकर्ताओं के बीच साइथन विशेष रूप से लोकप्रिय है,<ref name="scipy09" /><ref>{{cite web|title=inSCIght: The Scientific Computing Podcast|url=http://inscight.org/2011/03/31/episode_/|type=Episode 6|access-date=29 May 2011|archive-url=https://web.archive.org/web/20141010032300/http://inscight.org/2011/03/31/episode_/|archive-date=10 October 2014|url-status=dead}}</ref><ref>{{cite journal|last1=Millman|first1=Jarrod|last2=Aivazis|first2=Michael|year=2011 |title=Python for Scientists and Engineers |journal=Computing in Science and Engineering |volume=13 |issue=2 |pages=9–12 |doi=10.1109/MCSE.2011.36|bibcode=2011CSE....13b...9M|url=https://escholarship.org/uc/item/93s2v2s7}}</ref> जहां इसके पास पायथन निर्माता [[गुइडो वैन रोसुम]] के अनुसार सही दर्शक हैं।<ref>{{cite web|author=Guido Van Rossum|url=http://mail.python.org/pipermail/python-dev/2011-March/109634.html|title=Re: VM and Language summit info for those not at Pycon (and those that are!)|type=Message to the electronic mailing-list <code>python-dev</code>|date=21 March 2011|accessdate=5 May 2011}}</ref> विशेष ध्यान दें:
पायथन के वैज्ञानिक उपयोगकर्ताओं के बीच साइथन विशेष रूप से लोकप्रिय है,<ref name="scipy09" /><ref>{{cite web|title=inSCIght: The Scientific Computing Podcast|url=http://inscight.org/2011/03/31/episode_/|type=Episode 6|access-date=29 May 2011|archive-url=https://web.archive.org/web/20141010032300/http://inscight.org/2011/03/31/episode_/|archive-date=10 October 2014|url-status=dead}}</ref><ref>{{cite journal|last1=Millman|first1=Jarrod|last2=Aivazis|first2=Michael|year=2011 |title=Python for Scientists and Engineers |journal=Computing in Science and Engineering |volume=13 |issue=2 |pages=9–12 |doi=10.1109/MCSE.2011.36|bibcode=2011CSE....13b...9M|url=https://escholarship.org/uc/item/93s2v2s7}}</ref> जहां इसके पास पायथन निर्माता [[गुइडो वैन रोसुम]] के अनुसार सही दर्शक हैं।<ref>{{cite web|author=Guido Van Rossum|url=http://mail.python.org/pipermail/python-dev/2011-March/109634.html|title=Re: VM and Language summit info for those not at Pycon (and those that are!)|type=Message to the electronic mailing-list <code>python-dev</code>|date=21 March 2011|accessdate=5 May 2011}}</ref> विशेष ध्यान दें:


* [[मुफ्त सॉफ्टवेयर]] SageMath कंप्यूटर बीजगणित प्रणाली प्रदर्शन और अन्य पुस्तकालयों के साथ इंटरफेस दोनों के लिए साइथन पर निर्भर करती है।<ref>{{cite book|last1=Erocal|first1=Burcin|last2=Stein|first2=William|year=2010 |title=The Sage Project: Unifying Free Mathematical Software to Create a Viable Alternative to Magma, Maple, Mathematica and MATLAB |journal=Mathematical Software' ICMS 2010 |volume=6327 |pages=12–27 |publisher=Springer Berlin / Heidelberg |doi=10.1007/978-3-642-15582-6_4 |url=http://wstein.org/papers/icms/icms_2010.pdf|series=Lecture Notes in Computer Science|isbn=978-3-642-15581-9|citeseerx=10.1.1.172.624}}</ref>
* [[मुफ्त सॉफ्टवेयर]] सेजमैथ कंप्यूटर बीजगणित प्रणाली डिस्प्ले और अन्य लाइब्रेरियों के साथ इंटरफेस दोनों के लिए साइथन पर निर्भर करती है।<ref>{{cite book|last1=Erocal|first1=Burcin|last2=Stein|first2=William|year=2010 |title=The Sage Project: Unifying Free Mathematical Software to Create a Viable Alternative to Magma, Maple, Mathematica and MATLAB |journal=Mathematical Software' ICMS 2010 |volume=6327 |pages=12–27 |publisher=Springer Berlin / Heidelberg |doi=10.1007/978-3-642-15582-6_4 |url=http://wstein.org/papers/icms/icms_2010.pdf|series=Lecture Notes in Computer Science|isbn=978-3-642-15581-9|citeseerx=10.1.1.172.624}}</ref>
* वैज्ञानिक कंप्यूटिंग पुस्तकालयों के महत्वपूर्ण भाग [[SciPy]], [[पांडा (सॉफ्टवेयर)]] और [[scikit-सीखें]] साइथन में लिखे गए हैं।<ref>{{cite web|url=http://docs.scipy.org/doc/scipy/reference/release.0.7.2.html|title=SciPy 0.7.2 release notes}}</ref><ref name="jmlr">{{cite journal|last1=Pedregosa|first1=Fabian|last2=Varoquaux|first2=Gaël|last3=Gramfort|first3=Alexandre|last4=Michel|first4=Vincent|last5=Thirion|first5=Bertrand|last6=Grisel|first6=Olivier|last7=Blondel|first7=Mathieu|last8=Prettenhofer|first8=Peter|last9=Weiss|first9=Ron|last10=Dubourg|first10=Vincent|last11=Vanderplas|first11=Jake|last12=Passos|first12=Alexandre|last13=Cournapeau|first13=David|title=Scikit-learn: Machine Learning in Python |journal=Journal of Machine Learning Research |year=2011 |volume=12 |pages=2825–2830|arxiv=1201.0490}}</ref>
* वैज्ञानिक कंप्यूटिंग लाइब्रेरियों के महत्वपूर्ण भाग [[SciPy]], [[पांडा (सॉफ्टवेयर)]] और [[scikit-सीखें|एससीआईकिट-सीखें]] साइथन में लिखे गए हैं।<ref>{{cite web|url=http://docs.scipy.org/doc/scipy/reference/release.0.7.2.html|title=SciPy 0.7.2 release notes}}</ref><ref name="jmlr">{{cite journal|last1=Pedregosa|first1=Fabian|last2=Varoquaux|first2=Gaël|last3=Gramfort|first3=Alexandre|last4=Michel|first4=Vincent|last5=Thirion|first5=Bertrand|last6=Grisel|first6=Olivier|last7=Blondel|first7=Mathieu|last8=Prettenhofer|first8=Peter|last9=Weiss|first9=Ron|last10=Dubourg|first10=Vincent|last11=Vanderplas|first11=Jake|last12=Passos|first12=Alexandre|last13=Cournapeau|first13=David|title=Scikit-learn: Machine Learning in Python |journal=Journal of Machine Learning Research |year=2011 |volume=12 |pages=2825–2830|arxiv=1201.0490}}</ref>
* कुछ उच्च-ट्रैफ़िक वेबसाइट जैसे [[Quora]] साइथन का उपयोग करती हैं।{{better source needed|date=October 2018}}<ref>{{cite web|url=https://www.quora.com/Is-Quora-still-running-on-PyPy/answer/Alex-Yakunin|title=Is Quora still running on PyPy?}}</ref>
* कुछ उच्च-ट्रैफ़िक वेबसाइट जैसे [[Quora|क्वोरा]] साइथन का उपयोग करती हैं।{{better source needed|date=October 2018}}<ref>{{cite web|url=https://www.quora.com/Is-Quora-still-running-on-PyPy/answer/Alex-Yakunin|title=Is Quora still running on PyPy?}}</ref>
साइथन का कार्यक्षेत्र केवल संख्यात्मक कंप्यूटिंग तक ही सीमित नहीं है। उदाहरण के लिए, एलएक्सएमएल एक्सएमएल टूलकिट ज्यादातर साइथन में लिखा गया है, और इसके पूर्ववर्ती पायरेक्स की तरह, साइथन का उपयोग कई सी और सी ++ पुस्तकालयों जैसे मैसेजिंग लाइब्रेरी [[ज़ीरोएमक्यू]] के लिए पायथन बाइंडिंग प्रदान करने के लिए किया जाता है।<ref>{{cite web|url=http://www.zeromq.org/bindings:python|title=ØMQ: Python binding}}</ref> साइथन का उपयोग [[मल्टी-कोर प्रोसेसर]] मशीनों के समानांतर प्रोग्राम विकसित करने के लिए भी किया जा सकता है; यह सुविधा [[OpenMP]] लाइब्रेरी का उपयोग करती है।
साइथन का कार्यक्षेत्र केवल संख्यात्मक कंप्यूटिंग तक ही सीमित नहीं है। उदाहरण के लिए, एलएक्सएमएल एक्सएमएल टूलकिट ज्यादातर साइथन में लिखा गया है, और इसके पूर्ववर्ती पायरेक्स की तरह, साइथन का उपयोग कई सी और सी ++ लाइब्रेरियों जैसे मैसेजिंग लाइब्रेरी [[ज़ीरोएमक्यू]] के लिए पायथन बाइंडिंग प्रदान करने के लिए किया जाता है।<ref>{{cite web|url=http://www.zeromq.org/bindings:python|title=ØMQ: Python binding}}</ref> साइथन का उपयोग [[मल्टी-कोर प्रोसेसर]] मशीनों के समानांतर प्रोग्राम विकसित करने के लिए भी किया जा सकता है; यह सुविधा [[OpenMP|ओपन एमपी]] लाइब्रेरी का उपयोग करती है।


== सी भी ==
== सी भी ==
Line 154: Line 154:


== बाहरी संबंध ==
== बाहरी संबंध ==
* {{Official website}}
* {{GitHub|cython}}
* {{GitHub|cython}}
{{Python (programming language)}}
[[Category: लेख उदाहरण के साथ पायथन (प्रोग्रामिंग भाषा) कोड]] [[Category: पायथन (प्रोग्रामिंग भाषा)]] [[Category: पायथन (प्रोग्रामिंग भाषा) कार्यान्वयन]] [[Category: सॉफ्टवेयर अपाचे लाइसेंस का उपयोग कर रहा है]] [[Category: सोर्स-टू-सोर्स कंपाइलर]]  
[[Category: लेख उदाहरण के साथ पायथन (प्रोग्रामिंग भाषा) कोड]] [[Category: पायथन (प्रोग्रामिंग भाषा)]] [[Category: पायथन (प्रोग्रामिंग भाषा) कार्यान्वयन]] [[Category: सॉफ्टवेयर अपाचे लाइसेंस का उपयोग कर रहा है]] [[Category: सोर्स-टू-सोर्स कंपाइलर]]  



Revision as of 10:41, 3 March 2023

साइथन
File:Cython-logo.svg
Developerरॉबर्ट ब्रैडशॉ, स्टीफन बेहनेल, एट अल।
पहली प्रस्तुति28 July 2007; 18 years ago (2007-07-28)[1]
कार्यान्वयन भाषापायथन
ओएसविंडोज, मैकओएस, लिनक्स
लाइसेंसअपाचे लाइसेंस 2.0
फ़ाइल नाम एक्सटेंशनएस.pyx, .pxd, .pxi [2]
Influenced by
सी, पायथन

साइथन (/ˈsθɒn/) एक प्रोग्रामिंग भाषा है, (गैर-यथार्थ, कम से कम पायथन 3 के लिए) पायथन प्रोग्रामिंग भाषा का सुपरसेट (कुछ अलग अर्थ के साथ), सी (प्रोग्रामिंग भाषा)-जैसा डिस्प्ले कोड देने के लिए डिज़ाइन किया गया है जो ज्यादातर वैकल्पिक अतिरिक्त सी-प्रेरित सिंटैक्स के साथ पायथन में लिखा गया है।[3][4] साइथन एक संकलित भाषा है जिसका उपयोग सामान्यतः सीपीथॉन एक्सटेंशन मॉड्यूल उत्पन्न करने के लिए किया जाता है। एनोटेटेड पायथन-जैसे कोड को C (उदाहरण के लिए C ++ से भी प्रयोग करने योग्य) में संकलित किया जाता है, फिर स्वचालित रूप रैपर लाइब्रेरी को संकलित करता है, और एक्सटेंशन मॉड्यूल का उत्पादन करता है जिसे आयात विवरण का उपयोग करके नियमित पायथन कोड द्वारा लोड और उपयोग किया जा सकता है, लेकिन रन टाइम (प्रोग्राम) पर काफी कम कम्प्यूटेशनल ओवरहेड के साथ जीवनचक्र चरण साइथन स्वतंत्र सी या सी ++ कोड को पायथन-आयात योग्य मॉड्यूल में संकलित करने की सुविधा भी देता है।

साइथन को पायथन और सी में लिखा गया है और यह माइक्रोसॉफ़्ट विंडोज़, मैकओएस और लिनक्स पर कार्य करता है, जो सीपीथॉन 2.6, 2.7 और 3.3 और बाद के संस्करणों के साथ संगत सी स्रोत फ़ाइलों का उत्पादन करता है। साइथन स्रोत कोड जो साइथन संकलित करता है (सी तक) पायथन 2 और पायथन 3 सिंटैक्स दोनों का उपयोग कर सकता है, साइथन 0.x में पायथन 2 सिंटैक्स के लिए डिफ़ॉल्ट (और साइथन 3.x में पायथन 3 सिंटैक्स, जो वर्तमान में अल्फा सॉफ्टवेयर है) को पायथन 3 (या 2) सिंटैक्स में ओवरराइड किया जा सकता है (उदाहरण के लिए स्रोत कोड टिप्पणी में)। चूंकि हाल के संस्करणों में पायथन 3 सिंटैक्स बदल गया है, साइथन नवीनतम जोड़ के साथ अद्यतित नहीं हो सकता है। साइथन के पास अधिकांश सी++ भाषा के लिए सहज समर्थन है और यह लगभग सभी मौजूदा पायथन कोड को संकलित करता है।[5] साइथन 3.0.0 विकास में है।[6]


डिजाइन

साइथन एक मानक पायथन मॉड्यूल का निर्माण करके कार्य करता है। हालाँकि, व्यवहार मानक पायथन से भिन्न होता है जिसमें मूल रूप से पायथन में लिखे गए मॉड्यूल कोड का सी में अनुवाद किया जाता है। जबकि परिणामी कोड तेज़ होता है, यह वास्तविक कार्य करने के लिए सी-पायथन दुभाषिया और सी-पायथन मानक लाइब्रेरियों में कई कॉल करता है। इस व्यवस्था को चुनने से साइथन के विकास के समय में काफी बचत हुई, लेकिन मॉड्यूल की निर्भरता पायथन दुभाषिया और मानक लाइब्रेरी पर है।

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

सी (प्रोग्रामिंग लैंग्वेज)/सी++ सबरूटीन को इनवोक करने के लिए साइथन के पास एक विदेशी फ़ंक्शन इंटरफ़ेस है और स्थिर प्रकार के सबरूटीन पैरामीटर और परिणाम, स्थानीय चर और वर्ग विशेषताओं को घोषित करने की क्षमता है।

एक साइथन प्रोग्राम जो एक समान एल्गोरिथ्म को संबंधित पायथन प्रोग्राम के रूप में लागू करता है, कम कंप्यूटिंग संसाधनों का उपभोग कर सकता है जैसे कि सीपीथॉन और साइथन निष्पादन मॉडल के बीच अंतर के कारण कोर मेमोरी और प्रोसेसिंग चक्र एक बुनियादी पायथन प्रोग्राम सी-पायथन आभासी मशीन द्वारा लोड और निष्पादित किया जाता है, इसलिए रनटाइम और प्रोग्राम दोनों ही कंप्यूटिंग संसाधनों का उपभोग करते हैं। एक साइथन प्रोग्राम को C कोड में संकलित किया जाता है, जिसे आगे मशीन कोड में संकलित किया जाता है, इसलिए प्रोग्राम लोड होने पर वर्चुअल मशीन का उपयोग केवल संक्षिप्त रूप से किया जाता है।[8][9][10][11] साइथन कार्यरत हैं:

  • आशावादी अनुकूलन
  • अनुमानित कोड (वैकल्पिक)
  • नियंत्रण संरचनाओं में कम ओवरहेड
  • लो फंक्शन कॉल ओवरहेड[12][13]

डिस्प्ले दोनों पर निर्भर करता है कि साइथन द्वारा सी कोड क्या उत्पन्न होता है और सी कंपाइलर द्वारा उस कोड को कैसे संकलित किया जाता है।[14]


इतिहास

साइथन पाइरेक्स (प्रोग्रामिंग लैंग्वेज) का व्युत्पन्न है, और पाइरेक्स की तुलना में अधिक सुविधाओं और अनुकूलन का समर्थन करता है।[15][16] साइथॉन 2007 में सेजमैथ कंप्यूटर बीजगणित पैकेज के डेवलपर्स द्वारा पाइरेक्स से फोर्क (सॉफ्टवेयर विकास) था, क्योंकि वे पाइरेक्स की सीमाओं से नाखुश थे और पाइरेक्स के अनुरक्षक ग्रेग इविंग द्वारा स्वीकार किए गए पैच नहीं पा सके, जिन्होंने अपने उपकरण की तुलना में बहुत छोटे दायरे की कल्पना की थी। ऋषि डेवलपर्स के मन में था। फिर उन्होंने पाइरेक्स को सेजएक्स के रूप में फोर्क किया। जब उन्होंने पाया कि लोग केवल सेजएक्स प्राप्त करने के लिए सेज डाउनलोड कर रहे थे, और अन्य पैकेजों के डेवलपर्स (स्टीफन बेहनेल सहित, जो एक्सएमएल लाइब्रेरी एलएक्सएमएल को बनाए रखते हैं) भी पाइरेक्स के सोर्स बनाए रख रहे थे, सेजएक्स को सेज प्रोजेक्ट से अलग कर दिया गया और इसके साथ विलय कर दिया गया। साइथन-एलएक्सएमएल साइथन बनने के लिए[17] साइथन फाइलों में एक .pyx विस्तार अपने सबसे बुनियादी रूप में, साइथन कोड बिल्कुल पायथन कोड जैसा दिखता है। हालाँकि, जबकि मानक पायथन गतिशील टाइपिंग है, साइथन में, प्रकार वैकल्पिक रूप से प्रदान किए जा सकते हैं, जिससे बेहतर डिस्प्ले की अनुमति मिलती है, जहाँ लूप को C लूप में परिवर्तित करने की अनुमति मिलती है। उदाहरण के लिए: <वाक्यविन्यास लैंग = साइथन> डीईएफ़ प्राइम्स (इंट किमीएक्स): # तर्क को इंट में बदल दिया जाएगा या टाइप एरर बढ़ा दिया जाएगा।

 cdef int n, k, i # ये वेरिएबल C प्रकार के साथ घोषित किए गए हैं।
 cdef int p [1000] # एक और सी प्रकार
 परिणाम = [] # एक पायथन प्रकार
 अगर किमी> 1000:
 किमी अधिकतम = 1000
 के = 0
 एन = 2
 जबकि कश्मीर <kmax:
 मैं = 0
 जबकि मैं <के और एन% पी [i]! = 0:
 मैं = मैं + 1
 अगर मैं == के:
 पी [के] = एन
 के = के + 1
 परिणाम.परिशिष्ट (एन)
 एन = एन + 1
 वापसी परिणाम

</वाक्यविन्यास हाइलाइट>

उदाहरण

साइथन में हैलो वर्ल्ड

साइथन के लिए एक नमूना हैलो वर्ल्ड प्रोग्राम अधिकांश भाषाओं की तुलना में अधिक जटिल है क्योंकि यह पायथन सी एपीआई और के साथ इंटरफेस करता है सेटअप टूल्स या अन्य पीईपी517-अनुपालन विस्तार निर्माण सुविधाएं बुनियादी परियोजना के लिए कम से कम तीन फाइलों की आवश्यकता होती है:

  • setup.py फ़ाइल का आह्वान करने के लिए सेटअप टूल्स निर्माण प्रक्रिया जो एक्सटेंशन मॉड्यूल उत्पन्न करती है
  • एक्सटेंशन मॉड्यूल को लोड करने के लिए एक मुख्य पायथन प्रोग्राम
  • साइथन स्रोत फ़ाइल (फ़ाइलें)

निम्नलिखित कोड सूचियाँ निर्माण और लॉन्च प्रक्रिया को प्रदर्शित करती हैं:

<वाक्यविन्यास लैंग = पायथन>

  1. hello.pyx - पायथन मॉड्यूल, इस कोड को साइथन द्वारा सी में अनुवादित किया जाएगा।

डीईएफ़ Say_hello ():

 प्रिंट (हैलो वर्ल्ड!)

</वाक्यविन्यास हाइलाइट>

<वाक्यविन्यास लैंग = पायथन>

  1. launch.py ​​- पायथन स्टब लोडर, साइथन द्वारा बनाए गए मॉड्यूल को लोड करता है।
  1. इस कोड की हमेशा व्याख्या की जाती है, सामान्य पायथन की तरह।
  2. यह सी के लिए संकलित नहीं है।

हैलो आयात करें हैलो। </वाक्यविन्यास हाइलाइट>

<वाक्यविन्यास लैंग = पायथन>

  1. setup.py - कोड को पुनर्वितरित नहीं करने पर अनावश्यक, नीचे देखें

सेटअप टूल्स आयात सेटअप से साइथन से। आयात साइथनाइज करें

सेटअप (नाम = हैलो वर्ल्ड ऐप,

 ext_modules = साइथोनाइज़ (* .pyx))

</वाक्यविन्यास हाइलाइट>

ये आदेश प्रोग्राम का निर्माण और लॉन्च करते हैं:

<वाक्यविन्यास लैंग = बैश> $ पायथन setup.py build_ext --inplace $ पायथन लॉन्च.py </वाक्यविन्यास हाइलाइट>

आई-पायथन/जूपिटर नोटबुक में प्रयोग करना

साइथन के साथ शुरू करने का एक अधिक सरल तरीका कमांड-लाइन आईपीथॉन (या इन-ब्राउज़र पायथन कंसोल के माध्यम से ज्यूपिटर नोटबुक इंटरफ़ेस कहा जाता है) के माध्यम से है:

<वाक्यविन्यास लैंग = साइथन> [1] में: %load_ext साइथन

[2] में: %% साइथन

 ...: डीईएफ़ एफ (एन):
 ...: ए = 0
 ...: मैं सीमा में (एन) के लिए:
 ...: ए + = मैं
 ...: रिटर्न ए
 ...:
 ...: सीपीडीएफ जी (इंट एन):
 ...: सीडीएफ लांग ए = 0
 ...: सीडीएफ इंट आई
 ...: मैं सीमा में (एन) के लिए:
 ...: ए + = मैं
 ...: रिटर्न ए
 ...:

[3] में: %timeit f(1000000) 10 लूप, सर्वश्रेष्ठ 3: 26.5 एमएस प्रति लूप

[4] में: %timeit g(1000000) 1000 लूप, सर्वश्रेष्ठ 3: 279 µ प्रति लूप </वाक्यविन्यास हाइलाइट>

जो शुद्ध-पायथन संस्करण पर 95 गुना सुधार देता है। आधिकारिक क्विकस्टार्ट पेज में विषय पर अधिक जानकारी।[18]


उपयोग

पायथन के वैज्ञानिक उपयोगकर्ताओं के बीच साइथन विशेष रूप से लोकप्रिय है,[10][19][20] जहां इसके पास पायथन निर्माता गुइडो वैन रोसुम के अनुसार सही दर्शक हैं।[21] विशेष ध्यान दें:

साइथन का कार्यक्षेत्र केवल संख्यात्मक कंप्यूटिंग तक ही सीमित नहीं है। उदाहरण के लिए, एलएक्सएमएल एक्सएमएल टूलकिट ज्यादातर साइथन में लिखा गया है, और इसके पूर्ववर्ती पायरेक्स की तरह, साइथन का उपयोग कई सी और सी ++ लाइब्रेरियों जैसे मैसेजिंग लाइब्रेरी ज़ीरोएमक्यू के लिए पायथन बाइंडिंग प्रदान करने के लिए किया जाता है।[26] साइथन का उपयोग मल्टी-कोर प्रोसेसर मशीनों के समानांतर प्रोग्राम विकसित करने के लिए भी किया जा सकता है; यह सुविधा ओपन एमपी लाइब्रेरी का उपयोग करती है।

सी भी

संदर्भ

  1. Behnel, Stefan (2008). "The Cython Compiler for C-Extensions in Python". EuroPython (28 July 2007: official Cython launch). Vilnius/Lietuva.
  2. "Language Basics — Cython 3.0.0a9 documentation". cython.readthedocs.io. Retrieved 9 September 2021.
  3. "Cython - an overview — Cython 0.19.1 documentation". Docs.cython.org. Retrieved 21 July 2013.
  4. Smith, Kurt (2015). Cython: A Guide for Python Programmers. O'Reilly Media. ISBN 978-1-4919-0155-7.
  5. "FAQ · cython/cython Wiki". GitHub (in English). Retrieved 11 January 2023.
  6. "3.0 Milestone · cython/cython". GitHub (in English). Retrieved 26 March 2022.
  7. "Basic Tutorial — Cython 3.0a6 documentation". cython.readthedocs.io. Retrieved 11 December 2020.
  8. Oliphant, Travis (20 June 2011). "Technical Discovery: Speeding up Python (NumPy, Cython, and Weave)". Technicaldiscovery.blogspot.com. Retrieved 21 July 2013.
  9. Behnel, Stefan; Bradshaw, Robert; Citro, Craig; Dalcin, Lisandro; Seljebotn, Dag Sverre; Smith, Kurt (2011). "Cython: The Best of Both Worlds". Computing in Science and Engineering. 13 (2): 31–39. Bibcode:2011CSE....13b..31B. doi:10.1109/MCSE.2010.118. S2CID 14292107.
  10. 10.0 10.1 Seljebot, Dag Sverre (2009). "Fast numerical computations with Cython". Proceedings of the 8th Python in Science Conference (SciPy 2009): 15–22.
  11. Wilbers, I.; Langtangen, H. P.; Ødegård, Å. (2009). B. Skallerud; H. I. Andersson (eds.). "Using Cython to Speed up Numerical Python Programs" (PDF). Proceedings of MekIT'09: 495–512. Retrieved 14 June 2011.
  12. "wrapper benchmarks for several Python wrapper generators (except Cython)". Archived from the original on 4 April 2015. Retrieved 28 May 2010.
  13. "wrapper benchmarks for Cython, Boost.Python and PyBindGen". Archived from the original on 3 March 2016. Retrieved 28 May 2010.
  14. "Cython: C-Extensions for Python". Retrieved 22 November 2015.
  15. "Differences between Cython and Pyrex".
  16. Ewing, Greg (21 March 2011). "Re: VM and Language summit info for those not at Pycon (and those that are!)" (Message to the electronic mailing-list python-dev). Retrieved 5 May 2011.
  17. Says Sage and Cython developer Robert Bradshaw at the Sage Days 29 conference (22 March 2011). "Cython: Past, Present and Future". youtube.com. Archived from the original on 21 December 2021. Retrieved 5 May 2011.
  18. "Building Cython code". cython.readthedocs.io. Retrieved 24 April 2017.
  19. "inSCIght: The Scientific Computing Podcast" (Episode 6). Archived from the original on 10 October 2014. Retrieved 29 May 2011.
  20. Millman, Jarrod; Aivazis, Michael (2011). "Python for Scientists and Engineers". Computing in Science and Engineering. 13 (2): 9–12. Bibcode:2011CSE....13b...9M. doi:10.1109/MCSE.2011.36.
  21. Guido Van Rossum (21 March 2011). "Re: VM and Language summit info for those not at Pycon (and those that are!)" (Message to the electronic mailing-list python-dev). Retrieved 5 May 2011.
  22. Erocal, Burcin; Stein, William (2010). The Sage Project: Unifying Free Mathematical Software to Create a Viable Alternative to Magma, Maple, Mathematica and MATLAB (PDF). pp. 12–27. CiteSeerX 10.1.1.172.624. doi:10.1007/978-3-642-15582-6_4. ISBN 978-3-642-15581-9. {{cite book}}: |journal= ignored (help)
  23. "SciPy 0.7.2 release notes".
  24. Pedregosa, Fabian; Varoquaux, Gaël; Gramfort, Alexandre; Michel, Vincent; Thirion, Bertrand; Grisel, Olivier; Blondel, Mathieu; Prettenhofer, Peter; Weiss, Ron; Dubourg, Vincent; Vanderplas, Jake; Passos, Alexandre; Cournapeau, David (2011). "Scikit-learn: Machine Learning in Python". Journal of Machine Learning Research. 12: 2825–2830. arXiv:1201.0490.
  25. "Is Quora still running on PyPy?".
  26. "ØMQ: Python binding".


बाहरी संबंध