Když mluvíme o Pythonu, často máme na mysli nejen jazyk, ale také implementaci. Python je vlastně specifikace jazyka, který lze implementovat mnoha různými způsoby.
Základní informace
Než budeme pokračovat dále, pochopíme rozdíl mezi bytekódem a strojovým kódem (nativním kódem).
Strojový kód (neboli nativní kód)
Strojový kód je sada instrukcí, které přímo vykonává procesor. Každá instrukce provádí zcela jedinečnou úlohu, například načtení nebo logickou operaci s daty v paměti procesoru. Téměř všechny vysokoúrovňové jazyky, jako je C, překládají zdrojový kód do spustitelného strojového kódu pomocí překladačů, zavaděčů a linkerů. Každý procesor nebo rodina procesorů má svou vlastní instrukční sadu strojového kódu.
Bytekód
Bytekód je také binární reprezentace prováděná virtuálním strojem (nikoli přímo procesorem). Virtuální stroj (který je pro různé stroje napsán různě) převádí binární instrukce na konkrétní strojové instrukce. Jedním z jazyků, který používá koncept Bytecode, je Java.
Strojový kód je ve srovnání s Bytecode mnohem rychlejší, ale Bytecode je ve srovnání se strojovým kódem přenositelný a bezpečný.
Implementace jazyka Python
Cpython
Výchozí implementací programovacího jazyka Python je Cpython. Jak již název napovídá, Cpython je napsán v jazyce C. Cpython kompiluje zdrojový kód jazyka Python do mezikódu bytecode, který je vykonáván virtuálním strojem Cpython. Cpython je distribuován s rozsáhlou standardní knihovnou napsanou ve směsi jazyků C a Python. CPython poskytuje nejvyšší úroveň kompatibility s balíčky Pythonu a rozšiřujícími moduly jazyka C. Všechny verze jazyka Python jsou implementovány v jazyce C, protože CPython je referenční implementací.
Některé implementace, které vycházejí z běhového jádra CPython, ale mají v některých aspektech rozšířené chování nebo vlastnosti, jsou Stackless Python, wpython, MicroPython.
Stackless Python – CPython s důrazem na souběžnost pomocí taskletů a kanálů (používá dspython pro Nintendo DS)
Jiné implementace
Existují i některé další implementace jazyka Python Jediné implementace, o kterých je známo, že jsou kompatibilní s danou verzí jazyka, jsou IronPython, Jython a PyPy.
Jython
Jython je implementace programovacího jazyka Python, kterou lze spustit na platformě Java. Programy v jazyce Jython používají místo modulů jazyka Python třídy jazyka Java .Jython se kompiluje do bajtového kódu jazyka Java, který pak může být spuštěn virtuálním strojem jazyka Java. Jython umožňuje používat funkce knihovny tříd jazyka Java z programu v jazyce Python. Jython je ve srovnání s Cpythonem pomalý a chybí mu kompatibilita s knihovnami CPython.
IronPython
Implementace jazyka Python napsaná v jazyce C# zaměřená na framework .NET společnosti Microsoft. Podobně jako Jython používá virtuální stroj .net, tj. běhové prostředí Common Language Runtime. IronPython může využívat rámec .NET a knihovny Pythonu a ostatní jazyky .NET mohou velmi efektivně používat kód Pythonu. IronPython má lepší výkon v programech v jazyce Python, které používají vlákna nebo více jader, protože má JIT, a také proto, že nemá globální zámek překladače.“
PyPy
„Pokud chcete, aby váš kód běžel rychleji, měli byste pravděpodobně používat právě PyPy.“ – Guido van Rossum (tvůrce jazyka Python)
Python je dynamický programovací jazyk. O Pythonu se říká, že je pomalý, protože výchozí implementace CPython kompiluje zdrojový kód Pythonu v bajtovém kódu, který je ve srovnání se strojovým kódem (nativním kódem) pomalý. Zde nastupuje PyPy.
PyPy je implementace programovacího jazyka Python napsaná v jazyce Python. Interpret je napsán v jazyce RPython (podmnožina jazyka Python).
PyPy používá (just-in-time compilation). Zjednodušeně řečeno JIT používá metody kompilace, aby byl systém interpretu efektivnější a rychlejší. JIT tedy v podstatě umožňuje zkompilovat zdrojový kód do nativního strojového kódu, díky čemuž je velmi rychlý.
PyPy také přichází ve výchozím nastavení s podporou režimu stackless, který poskytuje mikrovlákna pro masivní souběžnost. Uvádí se, že Python je přibližně 7,5krát rychlejší než Cpython.
Některé další implementace Pythonu jsou CLPython, Pyston, Psyco, Cython, IPython.
Do tohoto článku přispěl Saurabh Daalia. Pokud se vám GeeksforGeeks líbí a chtěli byste přispět, můžete také napsat článek pomocí stránky contribute.geeksforgeeks.org nebo poslat svůj článek na adresu [email protected]. Uvidíte, jak se váš článek objeví na hlavní stránce GeeksforGeeks, a pomůžete tak ostatním geekům.