To tylko zastanawiam się, kiedy czytałem o językach interpretowanych i kompilowanych.
Ruby jest bez wątpienia językiem interpretowanym, ponieważ kod źródłowy jest przetwarzany przez interpretera w punkcie wykonania.
Przeciwnie, C jest językiem kompilowanym, ponieważ najpierw należy skompilować kod źródłowy zgodnie z maszyną, a następnie wykonać. Wynikiem tego jest znacznie szybsze wykonanie.
Teraz nadchodzi do Pythona :
- Kod Pythona ( somefile.py ) po zaimportowaniu tworzy plik ( somefile.pyc ) w tym samym katalogu. Powiedzmy, że import odbywa się w powłoce Pythona lub module django. Po zaimportowaniu zmieniam nieco kod i ponownie uruchamiam zaimportowane funkcje, aby stwierdzić, że nadal działa stary kod. Sugeruje to, że pliki * .pyc są skompilowanymi plikami Pythona podobnymi do plików wykonywalnych utworzonych po kompilacji pliku C, chociaż nie mogę bezpośrednio wykonać pliku * .pyc.
- Gdy plik python (somefile.py) jest wykonywany bezpośrednio (./somefile.py lub python somefile.py), plik .pyc nie jest tworzony, a kod jest wykonywany, co wskazuje na interpretowane zachowanie.
Sugerują to, że kod Pythona jest kompilowany za każdym razem, gdy jest importowany w nowym procesie w celu utworzenia pliku .pyc, który jest interpretowany podczas bezpośredniego wykonywania.
Więc jaki rodzaj języka powinienem uznać za? Zinterpretowany czy skompilowany? Jaka jest jego skuteczność w porównaniu do języków interpretowanych i kompilowanych?
Zgodnie ze stroną języków interpretowanych wiki jest wymieniony jako język skompilowany do wirtualnego kodu maszyny, co to oznacza?
RUN
. To było tak, jakbyś miał kompilator, który wykonał krok leksykalny, a następnie wypisał strumień tokenów, które trzeba było ponownie przeanalizować przy każdym uruchomieniu programu. javac
Zupełnie nie tak jak nowoczesna kompilacja kodu bajtowego wykonywana przez powiedzmy , która obejmuje leksykację, parsowanie i optymalizację.