GeeksforGeeks

Mikor Pythonról beszélünk, gyakran nem csak a nyelvre, hanem az implementációra is gondolunk. A Python tulajdonképpen egy nyelv specifikációja, amely sokféleképpen implementálható.

Háttér
A továbbiak előtt értsük meg a különbséget a bytecode és a gépi kód(natív kód) között.
Gépi kód(aka natív kód)
A gépi kód olyan utasításkészlet, amelyet közvetlenül a CPU hajt végre. Minden egyes utasítás egy nagyon egyedi feladatot hajt végre, például betöltést vagy logikai műveletet végez a CPU memóriájában lévő adatokon. Szinte minden magas szintű nyelv, mint például a C, a forráskódot a fordítóprogramok, betöltők és linkelők segítségével fordítja le végrehajtható gépi kóddá. Minden processzornak vagy processzorcsaládnak saját gépi kódú utasításkészlete van.
Bytecode
A bájtkód szintén bináris reprezentáció, amelyet a virtuális gép hajt végre (nem közvetlenül a CPU). A virtuális gép (amely a különböző gépekhez különbözőképpen van megírva) a bináris utasítást egy adott gépi utasítássá alakítja. Az egyik nyelv, amely a Bytecode koncepcióját használja, a Java.

A gépi kód sokkal gyorsabb, mint a Bytecode, de a Bytecode hordozható és biztonságosabb, mint a gépi kód.

A Python implementációi
Cpython
A Python programozási nyelv alapértelmezett implementációja a Cpython. Ahogy a neve is mutatja, a Cpython C nyelven íródott. A Cpython a python forráskódot köztes bájtkóddá fordítja, amelyet a Cpython virtuális gép hajt végre. A CPython egy nagyméretű, C és Python keverékében írt szabványkönyvtárral kerül terjesztésre. A CPython a legmagasabb szintű kompatibilitást biztosítja a Python csomagokkal és a C bővítő modulokkal. A Python nyelv minden verziója C-ben van implementálva, mivel a CPython a referencia implementáció.
A CPython futásidejű magján alapuló, de bizonyos szempontból kibővített viselkedéssel vagy funkciókkal rendelkező implementációk közül néhány: Stackless Python, wpython, MicroPython.
Stackless Python – CPython a taskleteket és csatornákat használó párhuzamosságra helyezve a hangsúlyt (a dspython használja a Nintendo DS-hez)

Más implementációk
A Python nyelvnek van néhány más implementációja is Az egyetlen olyan implementáció, amelyről ismert, hogy kompatibilis a nyelv adott verziójával, az IronPython, a Jython és a PyPy.

Jython
A Jython a Python programozási nyelv Java platformon futtatható implementációja. A Jython programok Python modulok helyett Java osztályokat használnak .A Jython Java bájtkóddá fordítódik, amelyet aztán a Java virtuális gép futtathat. A Jython lehetővé teszi a Java osztálykönyvtár függvényeinek használatát a Python programból. A Jython a Cpythonhoz képest lassú, és nem kompatibilis a CPython könyvtárakkal.

IronPython
A Microsoft .NET keretrendszerét célzó, C# nyelven írt Python implementáció. A Jythonhoz hasonlóan .Net Virtual Machine-t, azaz Common Language Runtime-ot használ. Az IronPython képes a .NET keretrendszer és a Python könyvtárak használatára, és más .NET nyelvek is nagyon hatékonyan tudják használni a Python kódot. Az IronPython jobban teljesít a szálakat vagy több magot használó Python programokban, mivel JIT-tel rendelkezik, és azért is, mert nincs benne a Global Interpreter Lock.

PyPy
“Ha azt szeretné, hogy a kódja gyorsabban fusson, akkor valószínűleg csak a PyPy-t kellene használnia.” – Guido van Rossum (a Python megalkotója)
A Python dinamikus programozási nyelv. A Pythonról azt mondják, hogy lassú, mivel az alapértelmezett CPython implementáció a python forráskódot bytecode-ban fordítja le, ami a gépi kódhoz(natív kód) képest lassú. Itt jön be a PyPy.
A PyPy a Python programozási nyelv Python nyelven írt implementációja. Az értelmező RPython nyelven íródott (a Python egy részhalmaza).

A PyPy (just-in-time fordítást) használ. Egyszerűbben fogalmazva a JIT fordítási módszereket használ az értelmező rendszer hatékonyabbá és gyorsabbá tételére. Tehát alapvetően a JIT lehetővé teszi, hogy a forráskódot natív gépi kóddá fordítsák le, ami nagyon gyorsan teszi azt.
A PyPyPy alapértelmezésben a stackless mód támogatásával is rendelkezik, amely mikroszálakat biztosít a masszív párhuzamossághoz. A Python állítólag körülbelül 7,5-szer gyorsabb, mint a Cpython.

A Python néhány más implementációja: CLPython, Pyston, Psyco, Cython, IPython.

A cikk szerzője Saurabh Daalia. Ha tetszik a GeeksforGeeks és szeretnél hozzájárulni, írj cikket a contribute.geeksforgeeks.org címen, vagy küldd el a cikkedet a [email protected] címre. Láthatod, hogy a cikked megjelenik a GeeksforGeeks főoldalán, és segíthetsz más geekeknek.

Szólj hozzá!