2013-11-23 4 views
2

Я знаю, что несколько интерпретируемых языков программирования (PHP, Python, Java, Smalltalk) используют Bytecode в качестве промежуточного шага для выполнения кода.Различия в байтокодах в разных языках программирования

Есть ли разница между формой Bytecode, сгенерированной интерпретаторами разных языков, как различия между кодами операций сборки для разных машин?

Кроме того, чтобы быть уверенным, что Bytecode может использоваться только на интерпретируемых языках, не так ли?

ответ

3

Bytecode является общим словом для инструкций, выполняемых виртуальной машиной, таким же образом, что машинный язык является общим термином для инструкций, выполняемых реальным процессором. Так же, как существует множество различных наборов машинных команд, существует множество разных наборов инструкций байткода. Некоторые, такие как Java-байт-код, являются документированной частью платформы. Все виртуальные машины Java выполняют по одному и тому же байт-коду по определению. Другие - всего лишь детализация реализации и отличаются от версии к версии.

Чтобы ответить на ваш последний вопрос: нет, это неверно. Java не является интерпретированным языком; он точно компилируется. C# аналогичен. Bytecode может быть частью многих разных архитектур.

+0

Итак, практический ответ - да? Байт-код Java отличается от байт-кода Python? Значимы ли различия между этими популярными языками? – Reflection

+1

Да, они совершенно разные. Есть немного, если есть сходство. –

1

Как сказал Эрнест, это реализация зависимого bytecode поставщика зависит от разных языков. Хотя уже есть попытки стандартизировать байт-код. Имейте в виду решение от Microsoft CIL

Стоит упомянуть компилятор LLVM, который становится клеем для разных байткодов, обеспечивающих оптимизацию компиляции в любой набор инструкций процессора.

+1

Не является ли CIL только специфичным для .NET байт-кодом? Какая попытка стандартизации в нем по сравнению с байт-кодом JIT Java? – Reflection

+0

Да, это низкий уровень .NET, также посмотрите этот поток http://stackoverflow.com/questions/95163/differences-between-msil-and-java-bytecode –

Смежные вопросы