Подтвердить что ты не робот

Является ли Python интерпретированным (например, Javascript или PHP)?

Является ли Python строго интерпретированным во время выполнения или может использоваться для разработки программ, выполняемых в качестве фоновых приложений (например, Java-приложения или программы C)?

4b9b3361

Ответ 1

Здесь несколько вопросов:

  • Нет, Python не интерпретируется. Стандартная реализация компилируется в байт-код, а затем выполняется на виртуальной машине. Многие современные движки JavaScript также делают это.
  • Независимо от реализации (интерпретатор, VM, машинный код) все, что вы хотите, может работать в фоновом режиме. Вы можете запускать сценарии оболочки в фоновом режиме, если хотите.

Ответ 2

Как вам скажут разнообразные ответы, линия между интерпретируемыми и скомпилированными уже не так понятна, как это было, когда такие термины были придуманы. На самом деле, это также ошибка в том, чтобы рассматривать языки как интерпретируемые или скомпилированные, так как различные реализации языков могут делать разные вещи. В эти дни вы можете найти C переводчики и Javascript компиляторы.

Даже если смотреть на реализацию, все еще не ясно. Есть слои интерпретации. Вот несколько градаций между интерпретированными и скомпилированными:

  • Чистая интерпретация. В значительной степени то, что он говорит на олове. Прочтите строку источника и немедленно выполните то, что он говорит. На самом деле это не делается многими рабочими языками - в значительной степени это такие вещи, как shell-скрипты.

  • Tokenisation + интерпретация. Тривиальная оптимизация выше. Вместо того, чтобы интерпретировать каждую строку с нуля, она сначала маркируется (то есть вместо того, чтобы видеть строку типа "print 52 + x", она переводится в поток токенов (например, [PRINT_STATEMENT, INTEGER(52), PLUS_SIGN, IDENTIFIER('x')]), чтобы избежать многократного выполнения этого состояния интерпретации Многие версии баз данных работали таким образом.

  • Bytecode компиляция. Это подход, используемый такими языками, как Java и С# (хотя см. Ниже). Код преобразуется в инструкции для "виртуальной машины". Эти инструкции затем интерпретируются. Это также подход, применяемый python (или, по крайней мере, cpython, наиболее распространенная реализация.) Jython и Ironpython также используют этот подход, но реплицируют компиляцию в байт-код для виртуальных машин Java и С#.

  • Bytecode + Только во время компиляции. Как и выше, но вместо интерпретации байт-кодов, код, который будет выполняться, скомпилируется из байт-кода в момент выполнения, а затем запускается. В некоторых случаях это может фактически превзойти собственную компиляцию, поскольку она может свободно выполнять анализ времени выполнения кода и может использовать специфические функции текущего процессора (в то время как статическая компиляция может потребоваться для компиляции для самого низкого общего ЦМР). Более поздние версии Java и С# используют этот подход. Psyco выполняет это для python.

  • Собственная компиляция машинного кода. Код компилируется в машинный код целевой системы. Вы можете подумать, что теперь мы полностью устранили интерпретацию, но даже здесь есть тонкости. Некоторые инструкции машинного кода фактически не реализованы непосредственно на оборудовании, но фактически реализованы с помощью microcode - даже машинный код иногда интерпретируется!

Ответ 3

Технически, Python скомпилирован в байт-код, а затем интерпретируется в виртуальной машине . Если компилятор Python может записать байт-код в файл .pyc, он (обычно) сделает это.

С другой стороны, нет явного этапа компиляции в Python, поскольку есть с Java или C. С точки зрения разработчика, похоже, что Python просто интерпретирует файл .py напрямую. Кроме того, Python предлагает интерактивное приглашение, в котором вы можете вводить операторы Python и выполнять их немедленно. Таким образом, рабочий процесс в Python намного более похож на рабочий язык интерпретируемого языка, чем язык скомпилированного языка. Мне (и многим другим разработчикам, я полагаю), что отличие рабочего процесса более важно, чем промежуток промежуточного байт-кода или нет.

Ответ 4

Python - интерпретируемый язык, но это байт-код, который интерпретируется во время выполнения. Существует также множество инструментов, которые могут помочь вам в запуске ваших программ в качестве службы Windows/UNIX.

Ответ 5

Да, Python интерпретируется, но вы также можете запускать их как длительные приложения.

Ответ 6

Да, он интерпретируется, его основная реализация сначала компилирует байт-код, а затем запускает его (например, если вы использовали источник java, а JVM скомпилировал его перед запуском). Тем не менее, вы можете запустить приложение в фоновом режиме. На самом деле, вы можете запускать почти что угодно в фоновом режиме.