Python Implementation Alternatives – वर्तमान में Python Language के CPython, Jython, IronPython, Stackless व PyPy के रूप में कई Implementations उपलब्ध हैं। हालांकि इन विभिन्न प्रकार के Implementations का एक दूसरे से Directly कोई सम्बंध नहीं है और यदि हम चाहें तो एक ही Computer System पर एक से ज्यादा Separate Implementations को Install करके Use कर सकते हैं। लेकिन फिर भी CPython, Python का Standard Implementation है इसलिए इसे ही सर्वाधिक Use किया जाता है।
हालांकि जितने भी Python Implementations हैं, उन सभी में Core Python का जो हिस्सा है, वो समान है लेकिन फिर भी हर Alternative को Implement करने का एक निश्चित Purpose व Role है, इसलिए जरूरत के अनुसार उन्हें भी Use किया जाता है, लेकिन Mostly लोग CPython को ही Use करते हैं, जो कि एक Standard की तरह है।
उदाहरण के लिए PyPy एक प्रकार से CPython के Replacement की तरह Develop किया गया था जो कि Python Program को जयादा Speed के साथ Execute कर सकता है। इसी तरह से Jython व IronPython, Python के Completely Independent Implementations है। Jython मूलत: Python Codes को Java के Runtime Architecture पर Execute हो सकने वाले Bytecode में Translate करता है जबकि IronPython मूलत: Python Codes को .NET Platform पर Execute हो सकने वाले Bytecode में Translate करता है।
हालांकि हम CPython द्वारा Java व .NET Software भी Access कर सकते हैं। उदाहरण के लिए JPype व Python for .NET Systems का प्रयोग करते हुए Standard CPython Code द्वारा Java व .NET Components को भी Call कर सकते हैं।
CPython – The Standard
Python के Original व Standard Implementation को CPython के नाम से जाना जाता है, जिसे सरल शब्दों में हम केवल Python के नाम से जानते हैं। इस नाम का मूल मतलब केवल यही है कि Python के इस Implementation को ANCI C Programming Language में Code किया गया है।
इसी Python Version को ज्यादातर Linux व Mac OS Machines में Install किया जाता है। यदि किसी Computer System पर पहले से Python Installed हो, तो हम मान सकते हैं कि Mostly वह CPython ही होगा। ActivePython व Enthought Distributions मूलत: CPython ही हैं।
जब तक कि हमें Python के माध्यम से Java या .NET Applications को Script करने की जरूरत न हो अथवा Stackless या PyPy द्वारा Provide किए जाने वाले किन्ही Special Features की जरूरत न हो, तब तक हम प्राथमिकता के साथ CPython को ही Use करते हैं।
चूंकि CPython, Python Language का Reference Implementation है, इसलिए ये बाकी सभी अन्य Implementations की तुलना में Fastest, Most Complete, Robust और Up to Date होता है।
Jython – Python for Java
ये Python का एक Alternative Implementation है जिसे Java Programming Language के साथ Integrate कर सकने के लिए Develop किया गया है। Jython में Java Classes होती हैं जो Python Source Codes को Java Bytecodes में Translate कर देती हैं और फिर उन Bytecodes को JVM (Java Virtual Machine) पर Execute होने के लिए भेज देती हैं।
हालांकि एक Programmer के रूप में हम अभी भी Python Codes को .py Text Files के रूप में ही Scripts करते हैं, लेकिन Jython System मूल CPython Implementation के Python Bytecode व PVM को Java Bytecode व JVM से Replace कर देता है।
Jython Implementation का मूल उद्देश्य केवल इतना ही है कि Python Coding जानने वाले Python Programmers बिना एक नई Java Programming Language सीखे हुए भी Python Codes के द्वारा भी Java Applications Develop कर सकें।
यानी जब एक Python Programmer के रूप में हम Jython का प्रयोग करते हुए अपना Application Develop कर रहे होते हैं, तब हम वास्तव में Java Application Develop कर रहे होते हैं लेकिन हम जो Code लिखते हैं, वो Python Codes होते हैं, जिसे Jython Internally, उन Java Bytecodes में Translate कर लेता है, जिन्हें JVM समझता है।
जिस तरह से CPython, C/C++ के Components की Scripting करने के लिए Python Language Code का प्रयोग करता है, ठीक उसी तरह से Jython, Java के Components की Scripting करने के लिए Python Language Code का प्रयोग करता है।
Jython का Java के साथ Integration काफी बेहतर तरीके से हो जाता है क्योंकि Jython के कारण Python Bytecodes का Translation, Java Bytecodes में हो जाता है, इसीलिए Runtime में Jython के Programs Exactly उसी तरह के दिखाई देते हैं जिस तरह के Java Programs दिखाई देते हैं और Jython के Programs Exactly उसी तरह से काम करते हैं जिस तरह के Java Programs करते हैं।
Jython Scripts का प्रयोग करके हम बड़ी ही आसानी से Java आधारित Web Applications के लिए Web Applets व Servlets भी Develop कर सकते हैं जबकि Java आधारित Desktop Applications के लिए GUI Frameworks (AWT, Swing, etc…) का प्रयोग भी कर सकते हैं। यानी एक Java Programmer के रूप में हम जो कुछ भी कर सकते हैं, वो सबकुछ हम Jython Scripts के माध्यम से भी कर सकते हैं और वो भी Python Codes का प्रयोग करते हुए।
Jython हमें ये सुविधा भी देता है कि हम हमारे Jython Script में Java Classes को भी Import कर सकते हैं और अपने Jython Program में Java Classes द्वारा Provide की जाने वाली Functionalities को बिल्कुल वैसे ही Use कर सकते हैं जैसे कि उन्हें Python में ही Code किया गया हो। साथ ही हम Java Code में Python Codes को भी आसानी से Embedded Language की तरह Execute कर सकते हैं।
चूंकि Jython, CPython की तुलना में Slow और Less Robust है, फिर भी Java Developers द्वारा इसे एक ऐसे Scripting Tool की तरह देखा जाता है जिसके माध्यम से वे अपने Java Applications के Frontend को ज्यादा आसानी से Develop कर पाते हैं।
IronPython – Python for .NET
ये Python का एक Alternative Implementation है जिसे .NET Framework पर आधारित Applications के साथ Integrate कर सकने के लिए Develop किया गया है। .NET व C# Programming Language Runtime Systems को Language Neutral Object Communication Layer के रूप में Design किया गया है, जो कि Microsoft के COM Model Concept पर आधारित एक ज्यादा बेहतर तरीका है।
IronPython के माध्यम से Python Programs, Client व Server दोनों तरह के Components के बीच में Act कर सकता है और अन्य .NET Languages के साथ Interaction कर सकता है। यानी Python, C# के लिखे Codes को भी Access कर सकता है और C# में लिखे जाने वाले Codes में IronPython के माध्यम से Python Codes को भी Embed किया जा सकता है।
इस वजह से IronPython Scripts द्वारा हम .NET Technologies को अपने Python Codes के माध्यम से Access and Manipulate कर सकते हैं और .NET Framework द्वारा Provide की जाने वाली Functionalities को अपने IronPython Script में Use कर सकते हैं।
Jython की तरह ही IronPython द्वारा भी CPython के Python Bytecode व PVM को .NET Framework के MSIL (MicroSoft Intermediate Language) Bytecode व CLR (Common Language Runtime) द्वारा Replace कर दिया जाता है, ताकि IronPython Script द्वारा लिखे गए Python Codes को .NET Platform समझ सके और बिना कोई भी .NET Supported Programming Language सीखे हुए भी एक Python Programmer आसानी से .NET Framework पर आधारित Web व Desktop Applications Develop कर सके।
इसी वजह से IronPython Scripts का प्रयोग करके Python Codes द्वारा हम बड़ी ही आसानी से .NET Framework आधारित Web Applications व Web Services भी Develop कर सकते हैं और .NET Framework आधारित Desktop Applications के लिए GUI Framework WPF (Windows Presentation Foundation) का प्रयोग भी कर सकते हैं। यानी एक .NET Programmer के रूप में हम जो कुछ भी C#, VB.NET जैसी .NET Supported Programming Languages के माध्यम से कर सकते हैं, वो सबकुछ हम IronPython Scripts द्वारा Python Codes के माध्यम से भी कर सकते हैं।
Stackless – Python for Concurrency
जब हमें Python का प्रयोग करते हुए बहुत ही Specific काम करना होता है, तब हम इस तरह के किसी Specific Python Implementation को Use करते हैं और Stackless उन्हीं में से एक है जो CPython का ही एक Enhanced Version है और पूरी तरह से Concurrency पर Focused है।
चूंकि Stackless Implementation, Program की State को C Language के Call Stack में Save नहीं करता, इसीलिए इसकी वजह से Small Stack Architecture पर Python को Port करना आसान हो जाता है जिसके परिणामस्वरूप हमें Efficient Multiprocessing Option मिल पाता है।
अन्य Functionalities के साथ ही Stackless, Python में Microthreads भी Add करता है जो कि Python के Threads and Processes के रूप में Standard Multitasking Tools का एक बहुत ही Efficient व Lightweight Alternative होता है।
साथ ही ये CPython की तुलना में जयादा बेहतर तरीके से Structured Multitasking Facilities Provide करता है, इसके Codes ज्यादा Readable होते हैं और इससे Programmer की Productivity काफी Improve हो जाती है।
PyPy – Python for Speed
PyPy भी Stackless की तरह ही Standard CPython का Re-implementation है जिसका Focus पूरी तरह से हमारे Python Programs की Speed व Performance को Improve करने पर है। ये –
- JIT (Just in Time) Compiler के माध्यम से एक Fast Python Implementation Provide करता है।
- एक “Sandbox” Model के लिए जरूरी Tools Provide करता है जो कि Untrusted Python Codes को भी Secure Environment में Run करने की सुविधा देता है और
- Default रूप से Stackless Python System को भी Support करता है ताकि Massive Concurrency के लिए Microthreads को Support किया जा सके।
PyPy, Original Psyco JIT का Successor है, जिसमें Best Possible Execution Speed प्राप्त करने के लिए Complete CPython Implementation सम्मिलित है। JIT मूलत: PVM का एक Extension है जो हमारे Python Bytecodes को Binary Machine Code में Translate कर देता है ताकि हमें Fastest Execution प्राप्त हो और ये यह काम Dynamically तब करता है जब हमारा Python Program, Python Interpreter द्वारा Run हो रहा होता है।
हालांकि Python एक Dynamically Typed Programming Language है, लेकिन जब हमारा Python Code इस JIT Compiler पर जाता है, तो ये हमारे Program के सभी Variables और Constants के लिए Type Specific (Integer, Float, Double, Character, String, Objects, etc…) Machine Codes Create कर देता है और उन सभी Data Types का Track भी रखता है ताकि Program में जहां कहीं भी उन्हें Use किया गया हो, JIT Compiler उन्हें वहां Replace कर सके और जब JIT Compiler ऐसा कर देता है, तो Python Program की Execution की Speed काफी Fast हो जाती है।
ऐसा इसलिए होता है क्योंकि Python एक Dynamically Typed Language है, इसलिए जहां पर भी किसी Identifier को Define किया जाता है, उसमें Stored Value के आधार पर Runtime में Interpreter ये तय करता है कि Identifier किस Data Type का है। परिणामस्वरूप Interpreter को हर Bytecode Statement के Execution पर बार-बार ये Data Type Checking करना पड़ता है।
लेकिन जब JIT Compiler सभी Identifiers में Stored Values के आधार पर ये समझ लेता है कि वे किस Data Type के हैं, और उन्हें Permanently उसी Data Type के लिए Mark कर देता है, तो बार-बार होने वाली Data Type Checking में जो समय लगता है, वो समय बच जाता है, परिणामस्वरूप Program की Speed लगभग उतनी हो जाती है, जितनी किसी Compiled C/C++ Program की होती है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Python in Hindi | Page: 602 | Format: PDF