साइथन

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

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

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

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

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

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

इतिहास
साइथन पाइरेक्स (प्रोग्रामिंग लैंग्वेज) का व्युत्पन्न है, और पाइरेक्स की तुलना में अधिक सुविधाओं और अनुकूलन का समर्थन करता है। साइथॉन 2007 में सेजमैथ कंप्यूटर बीजगणित पैकेज के डेवलपर्स द्वारा पाइरेक्स से फोर्क (सॉफ्टवेयर विकास) था, क्योंकि वे पाइरेक्स की सीमाओं से नाखुश थे और पाइरेक्स के अनुरक्षक ग्रेग इविंग द्वारा स्वीकार किए गए पैच नहीं पा सके, जिन्होंने अपने उपकरण की तुलना में बहुत छोटे दायरे की कल्पना की थी। ऋषि डेवलपर्स के मन में था। फिर उन्होंने पाइरेक्स को सेजएक्स के रूप में फोर्क किया। जब उन्होंने पाया कि लोग केवल सेजएक्स प्राप्त करने के लिए सेज डाउनलोड कर रहे थे, और अन्य पैकेजों के डेवलपर्स (स्टीफन बेहनेल सहित, जो एक्सएमएल लाइब्रेरी एलएक्सएमएल को बनाए रखते हैं) भी पाइरेक्स के सोर्स बनाए रख रहे थे, सेजएक्स को सेज प्रोजेक्ट से अलग कर दिया गया और इसके साथ विलय कर दिया गया।   साइथन बनने के लिए साइथन फाइलों में एक  विस्तार अपने सबसे बुनियादी रूप में, साइथन कोड बिल्कुल पायथन कोड जैसा दिखता है। हालाँकि, जबकि मानक पायथन गतिशील टाइपिंग है, साइथन में, प्रकार वैकल्पिक रूप से प्रदान किए जा सकते हैं, जिससे बेहतर डिस्प्ले की अनुमति मिलती है, जहाँ लूप को C लूप में परिवर्तित करने की अनुमति मिलती है। उदाहरण के लिए:

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


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

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

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

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

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

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

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

सी भी

 * पीपी
 * नुम्बा