LINUX.ORG.RU

интерпретируемо-компилируемо

 ,


0

3

читаю статью. она (как и все вокруг) говорит, что питон - интерпретируемый язык, а джава - байт-компилируемый.

но ведь по существу, питоновский интерпретатор точно также компилит скрипт в байт-код, и только потом исполняет его. тогда в чём разница?

ps:

file __pycache__/one.cpython-311.pyc

__pycache__/one.cpython-311.pyc: Byte-compiled Python module for CPython 3.11, timestamp-based, .py timestamp: Wed Aug  9 11:52:29 2023 UTC, .py size: 6 bytes
★★★

Ответ на: комментарий от PPP328

я имею в виду разница между интерпретируемым кодом (который компилируется в байт-код) и байт-компилируемым кодом (который тоже компилируется в байт-код)

flant ★★★
() автор топика
Ответ на: комментарий от flant

Ну когда-то питон так не делал. И просто интерпретировался. Теперь почти все языки сначала себя компилируют в байт-код, потому что иначе просадка в скорости раз в 50.

PPP328 ★★★★★
()

Раньше разница была в том, что в питоне не было байт-кода. Сейчас основная разница в модели распространения: питоновский софт распространяется в исходниках, жаба – в виде байткода. Плюс, жаба даёт гарантии на будущую совместимость со старым байткодом – «Compile once, run everywhere» и вот это вот всё. У питона таких гарантий нет.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)

Байткод - часть реализации, а не стандарта. Нет обратной совместимости и вообще принято распространять приложения на Питоне в виде исходников. Можно сделать интерпретатор питона без байт кода. А ещё на заре Питона байткода не было.

Байткод джавы часть её стандарта и рекомендуемый способ распространения ПО конечному пользователю (вплоть до того что запускалка байткода распространяется отдельно от компилятора). Гарантируется обратная совместимость. Джава без байткода (или с несовместимым байткодом) будет уже не совсем джавой. Вспомни судебный спор Google vs Oracle.

KivApple ★★★★★
()
Ответ на: комментарий от no-such-file

Раньше разница была в том, что в питоне не было байт-кода

Это когда? Видимо во времена когда ещё и жабы не было.

ЕМНИП байткод – одна из фишек второго пердона. До начала 2000х где-то, выходит?

hateyoufeel ★★★★★
()

Не обращай внимания, это давно чистая философия. Есть язык а есть реализация.
У реализации может быть куча оптимизаций внутри, вроде компиляции в байткод а может и не быть совсем, если эта реализация какая-то тестовая.

Для петона например существует Jython - реализация петона на джаве, где .py файлы компилируются уже в байткод Java.

И существует PyPy - интерпритатор петона на петоне же, где очевидно низкоуровневых оптимизаций нет.

alex0x08 ★★★
()