Când vorbim despre Python ne referim adesea nu doar la limbaj, ci și la implementare. Python este, de fapt, o specificație pentru un limbaj care poate fi implementat în mai multe moduri diferite.
Context
Înainte de a merge mai departe, să înțelegem diferența dintre bytecode și codul mașină (cod nativ).
Codul mașină (aka cod nativ)
Codul mașină este un set de instrucțiuni care este executat direct de către CPU. Fiecare instrucțiune îndeplinește o sarcină foarte unică, cum ar fi încărcarea sau o operație logică asupra datelor din memoria CPU. Aproape toate limbajele de nivel înalt, cum ar fi C, traduc codul sursă în cod mașină executabil cu ajutorul compilatoarelor, încărcătoarelor și linkerilor. Fiecare procesor sau familie de procesoare are propriul set de instrucțiuni de cod mașină.
Bytecode
Bytecode este, de asemenea, o reprezentare binară executată de o mașină virtuală (nu direct de CPU). Mașina virtuală (care este scrisă diferit pentru diferite mașini) convertește instrucțiunile binare într-o instrucțiune specifică de mașină. Unul dintre limbajele care utilizează conceptul de Bytecode este Java.
Codul mașinii este mult mai rapid în comparație cu Bytecode, dar Bytecode este portabil și sigur în comparație cu Machine Code.
Impletări ale Python
Cpython
Implementarea implicită a limbajului de programare Python este Cpython. După cum sugerează și numele, Cpython este scris în limbaj C. Cpython compilează codul sursă python în bytecode intermediar, care este executat de mașina virtuală Cpython. CPython este distribuit cu o bibliotecă standard mare, scrisă într-un amestec de C și Python. CPython oferă cel mai înalt nivel de compatibilitate cu pachetele Python și modulele de extensie C. Toate versiunile limbajului Python sunt implementate în C, deoarece CPython este implementarea de referință.
Câteva dintre implementările care se bazează pe nucleul de execuție CPython, dar cu comportament sau caracteristici extinse în anumite aspecte sunt Stackless Python, wpython, MicroPython.
Stackless Python – CPython cu accent pe simultaneitate folosind tasklets și canale (folosit de dspython pentru Nintendo DS)
Alte implementări
Există și alte implementări ale limbajului Python Singurele implementări despre care se știe că sunt compatibile cu o anumită versiune a limbajului sunt IronPython, Jython și PyPy.
Jython
Jython este o implementare a limbajului de programare Python care poate rula pe platforma Java. Programele Jython utilizează clase Java în loc de module Python .Jython se compilează în cod de octeți Java, care poate fi apoi rulat de mașina virtuală Java. Jython permite utilizarea funcțiilor bibliotecii de clase Java din programul Python. Jython este lent în comparație cu Cpython și nu este compatibil cu bibliotecile CPython.
IronPython
O implementare Python scrisă în C# care vizează cadrul .NET al Microsoft. Similar cu Jython, utilizează .Net Virtual Machine, adică Common Language Runtime. IronPython poate utiliza .NET Framework și bibliotecile Python, iar alte limbaje .NET pot utiliza codul Python foarte eficient. IronPython se comportă mai bine în programele Python care utilizează fire de execuție sau mai multe nuclee, deoarece are un JIT și, de asemenea, pentru că nu are Global Interpreter Lock.
PyPy
„Dacă doriți ca codul dumneavoastră să ruleze mai repede, ar trebui probabil să utilizați PyPy.” – Guido van Rossum (creatorul lui Python)
Python este un limbaj de programare dinamic. Se spune că Python este lent deoarece implementarea implicită CPython compilează codul sursă python în bytecode, care este lent în comparație cu codul mașină (codul nativ). Aici intervine PyPy.
PyPy este o implementare a limbajului de programare Python scrisă în Python. Interpretul este scris în RPython (un subansamblu de Python).
PyPy folosește (compilarea just-in-time). În termeni simpli, JIT utilizează metode de compilare pentru a face sistemul de interpretare mai eficient și mai rapid. Deci, practic, JIT face posibilă compilarea codului sursă în cod mașină nativ, ceea ce îl face foarte rapid.
PyPyPy vine, de asemenea, în mod implicit cu suport pentru modul stackless, oferind micro-thread-uri pentru concurență masivă. Se spune că Python este de aproximativ 7,5 ori mai rapid decât Cpython.
Câteva alte implementări ale Python sunt CLPython, Pyston, Psyco, Cython, IPython.
Acest articol este realizat de Saurabh Daalia. Dacă vă place GeeksforGeeks și doriți să contribuiți, puteți, de asemenea, să scrieți un articol folosind contribute.geeksforgeeks.org sau să trimiteți articolul dvs. prin e-mail la [email protected]. Vedeți articolul dvs. apărând pe pagina principală GeeksforGeeks și ajutați alți Geeks.
.