यह लेख Pavel Minaev int19h द्वारा लिखा गया था - PTVS टीम के एक डेवलपर विशेष रूप से हबराब्रिज पर हमारे कॉर्पोरेट ब्लॉग पर प्रकाशन के लिए। टिप्पणियों में अपने इंप्रेशन साझा करें। सभी समीक्षाओं को टीम के साथ साझा किया जाएगा।आपका स्वागत है! मैं
विजुअल स्टूडियो टीम के
लिए पायथन टूल्स का डेवलपर हूं। दूसरे दिन हमने अपने उत्पाद
का एक
नया बीटा संस्करण जारी किया, और, इस अवसर को लेते हुए, इस बार मैं और विस्तार से बात करना चाहूंगा कि पीटीवीएस क्या है और यह आपको क्या पेशकश कर सकता है।
PTVS क्या है?
संक्षेप में, दृश्य स्टूडियो के लिए पायथन टूल्स (बाद में PTVS के रूप में संदर्भित), जैसा कि नाम से पता चलता है, विजुअल स्टूडियो 2010 और उच्चतर के लिए एक मुफ्त एक्सटेंशन है, जो इस आईडीई में पूर्ण पायथन समर्थन जोड़ता है। इसे अपने लिए स्थापित करके, आप हाइलाइटिंग और एडवांस्ड ऑटोोकम्पिशन, कोड नेविगेशन, रीफैक्टरिंग, डिबगिंग, प्रोफाइलिंग, और Django समर्थन के साथ Python कोड एडिटिंग प्राप्त करते हैं और दो क्लिक में Windows Azure पर वेबसाइटों को प्रकाशित करने की क्षमता के साथ समर्थन करते हैं। उसी समय, विज़ुअल स्टूडियो के सभी संस्करणों का समर्थन किया जाता है, जो एक्सटेंशन की स्थापना की अनुमति देता है - दोनों पेशेवर, प्रीमियम और अंतिम और मुफ्त
शेल का भुगतान करते हैं। उत्तरार्द्ध के साथ संयोजन में, PTVS विंडोज पर पायथन के लिए एक पूर्ण मुक्त विकास वातावरण है - और इस संस्करण में हमने वीएस शेल + पीटीवीएस के लिए एक
सुविधाजनक संयुक्त इंस्टॉलर बनाया। यदि आपने पहले ही अपने लिए विजुअल स्टूडियो 2013 प्रीव्यू स्थापित कर लिया है, तो नए प्रोजेक्ट संवाद में एक सुखद आश्चर्य की प्रतीक्षा है:
हमारी परियोजना, कुछ मायनों में, Microsoft के लिए अद्वितीय है। ओपन सोर्स (अपाचे लाइसेंस 2.0 के तहत) स्रोत कोड अब आप किसी को आश्चर्यचकित नहीं करेंगे, लेकिन हम कोडपलेक्स पर केवल
स्रोत कोड प्रकाशित नहीं करते हैं, बल्कि सभी को
परियोजना पर एक साथ काम करने के लिए आमंत्रित
करते हैं । हाँ, हाँ, हम तृतीय-पक्ष कोड स्वीकार करते हैं!
और अंत में, चूंकि इस बिंदु के साथ अक्सर भ्रम होता है: PTVS आयरनपाइथन नहीं है, और यह एक ऐसा वातावरण नहीं है जो विशेष रूप से आयरनपिथॉन पर केंद्रित है। हम लगभग सभी पायथन कार्यान्वयन को एक डिग्री या किसी अन्य का समर्थन करते हैं - CPython, IronPython, Jython, PyPy, Stackless - लेकिन प्राथमिकता मानक का समर्थन करना है, और अधिकांश पायथन डेवलपर्स, CPython दुभाषिया द्वारा उपयोग किया जाता है।
आगे, मैं पीटीवीएस की सबसे दिलचस्प और अनूठी विशेषताओं के बारे में अधिक विस्तार से विचार करूंगा।
कोड के साथ काम करें
शायद किसी भी डेवलपर के लिए, सबसे पहले, यह कोड के साथ काम करने की सुविधा है जो आईडीई चुनने में निर्णायक है। यही कारण है कि पायथन कोड को पार्स करने के लिए उन्नत इंजन - जिस पर स्वत: पूर्णता, रीफैक्टरिंग, प्रतीक खोज और अन्य प्रमुख विशेषताओं को लागू किया जाता है - वह पहला था जिसे PTVS परियोजना के हिस्से के रूप में बनाया गया था। प्रत्येक नए संस्करण के साथ, हमने पार्सिंग की गुणवत्ता में सुधार किया, और बीटा 2.0 कोई अपवाद नहीं है।
कोई भी आज गतिशील रूप से टाइप की गई भाषाओं के लिए सरल ऑटो-पूरा करने के साथ किसी को भी आश्चर्यचकित नहीं करेगा, लेकिन कई संपादक भाषा की गतिशील क्षमताओं का उपयोग करने के मामूली उदाहरणों पर भी "स्किड" करते हैं। उदाहरण के लिए, इस कोड को लें:
def f(x): def g(y): return x + y return g a = f(1)(2) b = f(3.0)(a) c = f(u'a')(str(b)) d = (a, b, c)[input()]
चूंकि पायथन में अतिरिक्त संचालक बहुरूपता है, जी द्वारा लौटाए गए मूल्य का प्रकार - और, परिणामस्वरूप, ए, बी और सी में मूल्य का प्रकार - केवल पारित किए गए तर्कों के प्रकार पर निर्भर करता है। टाइप डी सबसे जटिल है, क्योंकि यह अप्रत्यक्ष रूप से सभी तीन पिछले चर के प्रकारों पर निर्भर करता है - इस मामले में, संपादक को पहले इकट्ठा होना चाहिए और फिर टपल को पार्स करना चाहिए।
PTVS प्रत्येक विशेष कॉल के लिए विशिष्ट प्रकार का निर्धारण करने की कोशिश करता है, जो पहले से व्युत्पन्न तर्कों के पारित कर दिया गया है। इस कोड में विभिन्न चर के लिए संपादक में दिखाई देने वाली युक्तियां और विवरण हैं:
जैसा कि आप देख सकते हैं, बाद के मामले में, चर में कई संभावित प्रकार हैं, और ऑटो-पूरा उन सभी को प्रदर्शित करता है।
यदि आप इसके शरीर में एक फंक्शन पैरामीटर के लिए एक संकेत का अनुरोध करते हैं, तो आप दूसरी ओर प्रकार के अनुमान के परिणाम को भी देख सकते हैं:
यहां सभी प्रकार के तर्क एकत्र किए जाते हैं जिनके साथ फ़ंक्शन को कोड में कहीं कहा जाता है - फ़ंक्शन के शरीर में उनके लिए ऑटो-समापन तदनुसार काम करेगा। इसका एक दिलचस्प परिणाम है - यदि आप टीडीडी का उपयोग करते हैं, और पहले अपने कार्यों और कक्षाओं के लिए परीक्षण लिखते हैं, और फिर उन्हें लागू करते हैं, तो आप स्वचालित रूप से सभी मापदंडों के लिए सही ऑटो-पूरा प्राप्त करेंगे।
ऑटो-पूर्णता के अलावा, घोषणाओं और चर के संदर्भों की खोज भी काम करती है। यहां PTVS का एक दिलचस्प जोड़ है - अगर वह चर जिसके साथ खोज शुरू हुई है (या संदर्भित कर सकते हैं) फ़ंक्शन या कक्षाएं, तो खोज परिणामों में, उस पंक्ति के अतिरिक्त, जिसके लिए इस चर को एक मान सौंपा गया है, इन कार्यों के प्रारंभिक मूल्यांकन भी होंगे और कक्षाएं - भले ही मूल्य सीधे असाइन नहीं किया गया था। उदाहरण के लिए, यदि आप उपरोक्त पंक्तियों को कोड में जोड़ते हैं:
h = f if input() else f(a) print h(b)
और एच पर सभी संदर्भ संदर्भ आदेश को निष्पादित करें, हमें निम्नलिखित परिणाम मिलते हैं:
जैसा कि आप देख सकते हैं, फ़ंक्शन जी सूची में दिखाई देता है, क्योंकि यह कॉल एफ (ए) था जिसने इसे वापस कर दिया। बेशक, यह एच कॉल करने की कोशिश करते समय ऑटो-समापन के परिणामों में परिलक्षित होता है - प्रस्तावित हस्ताक्षर विकल्पों में एफ और जी के लिए सभी ज्ञात विकल्प दिखाई देंगे:
मिश्रित कोड डीबगिंग
बीटा 2.0 में विशेष - यह कहीं और नहीं है। यह मामला है जब एक तस्वीर एक हजार शब्दों के लायक है। यहाँ यह है:
स्क्रीनशॉट एक सी # प्रोग्राम से जुड़ी डिबगर को दिखाता है जो CPython को अपने आप में लोड करता है, जो बदले में, C ++ में लिखे गए एक्सटेंशन मॉड्यूल को लोड करता है - और ये तीनों चीजें एक दूसरे को भ्रमित करने वाले तरीके से कॉल करती हैं, जिसका अध्ययन एक विंडो में किया जा सकता है। कॉल स्टैक। बेशक, आप सभी परियोजनाओं में ब्रेकपॉइंट बना सकते हैं, लेकिन सबसे महत्वपूर्ण बात जो इस तरह के एक संयुक्त मोड को देती है, वह बहुभाषी कॉल के चरण-दर-चरण डिबगिंग की संभावना है। उदाहरण के लिए, यदि आप पायथन कोड की एक लाइन पर चरण इन कमांड को निष्पादित करते हैं जो C ++ में कार्यान्वित वर्ग की एक विधि को कॉल करता है, तो आपको इस पद्धति के स्रोत पर ले जाया जाएगा। इसी तरह, यह C ++ या C # कोड के लिए काम करता है जो Pythbject_CallObject को Python में लिखे फ़ंक्शन के लिए कहता है। नेटिव कोड कॉल ctypes के माध्यम से नियमित गतिशील पुस्तकालयों में भी समर्थित हैं।
यद्यपि स्क्रीनशॉट तीन भाषाओं की एक साथ डिबगिंग दिखाता है, व्यवहार में सबसे अधिक बार यह दो तक सीमित है - पायथन और सी ++ (या सी) - या तो यह एक पायथन प्रोग्राम है जो एक्सटेंशन मॉड्यूल का उपयोग करता है, या एक सी ++ प्रोग्राम है जो पायथन को स्क्रिप्टिंग भाषा के रूप में उपयोग करता है। इस कारण से, हमने डिबगर में कई सुविधाओं को जोड़ा है जो केवल C / C ++ के लिए उपलब्ध हैं। स्क्रीनशॉट में लोकल विंडो पर ध्यान दें, और वेरिएबल a_natobj के मान का एक विस्तारित प्रतिनिधित्व, जो C ++ में कार्यान्वित वर्ग के ऑब्जेक्ट को संदर्भित करता है: साथ ही साथ ऑब्जेक्ट के पायथन प्रतिनिधित्व के साथ, यह ++ ++ - संरचना का प्रतिनिधित्व करता है जो इसके वर्ग को लागू करता है। C ++ की ओर से पायथन ऑब्जेक्ट्स की मिरर इमेज भी है - यह वही है जो लोकल विंडो में फ्रोब फंक्शन में दिखता है:
जैसा कि आप देख सकते हैं, C ++ में PyObject (या पायथन एपीआई से कुछ अन्य मानक प्रकार) के रूप में घोषित चर के मान इन वस्तुओं के पायथन विचारों को संबंधित सी-संरचनाओं के क्षेत्रों के साथ एक साथ प्रदर्शित करते हैं।
डीबग REPL
पायथन के लिए सामान्य REPL की उपस्थिति उसके लिए IDE में मानक है, और PTVS कोई अपवाद नहीं है - बेशक, हम सिंटैक्स हाइलाइटिंग और ऑटो-पूरा करने का समर्थन भी करते हैं (बाद में, यदि संभव हो तो, उन्हें साफ-सुथरा सुझाव देने के लिए स्मृति में मूल्यों के साथ सीधे काम करता है) । लेकिन हमने आगे बढ़ते हुए "लाइव" REPL के लिए समर्थन बनाया, जब कोड डीबग करना - अर्थात, REPL डीबग की गई प्रक्रिया में सीधे डेटा पर काम करता है, जिससे आप मक्खी और रीडिफाइन कक्षाओं और कार्यों पर जटिल अभिव्यक्तियों का मूल्यांकन कर सकते हैं। इस आलेख के पहले उदाहरण के लिए डीबगिंग REPL वाला एक स्क्रीनशॉट यहां दिया गया है:
Django और विंडोज Azure
PTVS Django में वेब एप्लिकेशन के निर्माण का समर्थन करता है, जो प्रदर्शन टेम्पलेट्स के लिए सिंटैक्स हाइलाइटिंग, कोड पूरा करने और डिबगिंग प्रदान करता है:
और, PTVS के इस संस्करण से शुरू करते हुए, इस तरह से बनाए गए एप्लिकेशन को
Windows Azure में एक वेबसाइट पर आसानी से प्रकाशित किया जा सकता है जो पहले ASP.NET के लिए ही उपलब्ध थी:
Et voilà!
हाँ, Azure वेबसाइटें अब
पायथन का समर्थन करती हैं! आप एज़्योर की अन्य विशेषताओं का उपयोग भी कर सकते हैं - टेबल सेवा, बूँद सेवा, सेवा बस, भंडारण कतार, आदि। - पायथन के लिए आधिकारिक
विंडोज एज़्योर एसडीके का उपयोग करते हुए आपके पायथन अनुप्रयोगों में, जो हमारी टीम भी काम कर रही है। हालांकि, एसडीके क्रॉस-प्लेटफॉर्म है: इसके लिए एकमात्र आवश्यकता पायथन 2.6 या उच्चतर है।
रूपरेखा
और फिर, स्क्रीनशॉट शब्दों की तुलना में बहुत अधिक कहेंगे:
... और भी बहुत कुछ!
PTVS सुविधाएँ केवल उपरोक्त तक सीमित नहीं हैं - हमारे पास अन्य दिलचस्प विशेषताएं भी हैं, जैसे कि रिफैक्टिंग, पाइप और easy_install के माध्यम से virtualenv और पैकेज प्रबंधन के साथ काम करना, लिनक्स और ओएस एक्स पर कार्यक्रमों की रिमोट डीबगिंग, REPL में
IPython समर्थन (ग्राफ विज़ुअलाइज़ेशन के साथ), और MPI क्लस्टर्स पर पायथन कोड की डीबगिंग और प्रोफाइलिंग। आप
प्रोजेक्ट प्रलेखन पृष्ठ पर उनके बारे में अधिक विस्तार से पढ़ सकते हैं, या एक
समीक्षा वीडियो देख सकते हैं ।
आपकी राय हमारे लिए बहुत महत्वपूर्ण है।
नहीं, गंभीरता से, यह वास्तव में मायने रखता है! हमारे पास एक
खुला बग ट्रैकर है , और हम इसमें उपयोगकर्ताओं से बग रिपोर्ट और सुझाव देखकर हमेशा खुश होते हैं। प्रस्तावों के लिए - यह एक खाली वाक्यांश नहीं है। जब हम एक नए संस्करण पर काम करना शुरू करते हैं, और यह तय करते हैं कि इसमें क्या होगा, तो सबसे पहले हम ट्रैकर में फ़ीचर अनुरोध सूची को खोलते हैं, उपयोगकर्ता के वोटों को छाँटते हैं, और जो ऊपर दिखता है उसे देखते हैं। इसलिए, संस्करण २.० में, हमने वोट के आधार पर शीर्ष १० में से पाँच विशेषताओं को लागू किया, जिनमें तीन पहले तीन स्थानों पर थे। यदि आप केवल एक प्रश्न पूछना चाहते हैं या कुछ पर चर्चा करना चाहते हैं, तो आप हमारे
मंच पर ऐसा कर सकते हैं। और, निश्चित रूप से, इस लेख में टिप्पणियों में आपके किसी भी प्रश्न का उत्तर देने में मुझे खुशी होगी।