Tak, jest to zarówno język skompilowany, jak i interpretowany. Dlaczego na ogół nazywamy to tłumaczonym językiem?
zobaczyć, jak jest zarówno kompilowana, jak i interpretowana?
Przede wszystkim chcę powiedzieć, że bardziej spodoba ci się moja odpowiedź, jeśli pochodzisz ze świata Java.
W Javie kod źródłowy jest najpierw konwertowany na kod bajtowy za pomocą kompilatora javac, a następnie kierowany do JVM (odpowiedzialnego za generowanie kodu natywnego w celu wykonania). Teraz chcę pokazać, że nazywamy Javę językiem kompilowanym, ponieważ widzimy, że naprawdę kompiluje kod źródłowy i przekazuje plik .class (tylko kod bajtowy) poprzez:
javac Hello.java -------> tworzy plik Hello.class
java Witaj --------> Przekierowanie kodu bajtowego do JVM w celu wykonania
To samo dzieje się z Pythonem, tzn. Najpierw kod źródłowy jest konwertowany na kod bajtowy przez kompilator, a następnie kierowany do PVM (odpowiedzialnego za generowanie kodu natywnego w celu wykonania). Teraz chcę pokazać, że zwykle wywołujemy Python jako język interpretowany, ponieważ kompilacja odbywa się za sceną
i kiedy uruchamiamy kod Pythona poprzez:
python Hello.py -------> bezpośrednio wycina kod i widzimy, że dane wyjściowe dowodzą, że kod jest poprawny pod względem składniowym
@ python Hello.py wygląda na to, że wykonuje bezpośrednio, ale tak naprawdę najpierw generuje kod bajtowy, który jest interpretowany przez interpretera w celu wygenerowania kodu natywnego na potrzeby wykonania.
CPython - bierze odpowiedzialność zarówno za kompilację, jak i interpretację.
Spójrz na poniższe linie, jeśli potrzebujesz więcej szczegółów :
Jak już wspomniałem, CPython kompiluje kod źródłowy, ale faktyczna kompilacja odbywa się za pomocą cytonu, następnie interpretacja odbywa się za pomocą CPython
Porozmawiajmy teraz trochę o roli kompilatora Just-In-Time w Javie i Pythonie
W JVM istnieje interpreter Java, który interpretuje kod bajt linia po linii, aby uzyskać natywny kod maszynowy do wykonania, ale gdy kod bajtowy Java jest wykonywany przez interpretera, wykonanie zawsze będzie wolniejsze. Więc jakie jest rozwiązanie? rozwiązaniem jest kompilator Just-In-Time, który wytwarza natywny kod, który można wykonać znacznie szybciej niż można to zinterpretować. Niektórzy dostawcy JVM używają interpretera Java, a niektórzy kompilatora Just-In-Time . Odniesienie: kliknij tutaj
W Pythonie, aby obejść interpreter w celu szybkiego wykonania, użyj innej implementacji Pythona ( PyPy ) zamiast CPython .
kliknij tutaj, aby zobaczyć inne implementacje Pythona, w tym PyPy .