Различия между компиляторами и интерпретаторами

Перед Джава и языки программирования C # появились, компьютерные программы были только скомпилированный или интерпретированы. Такие языки, как Assembly Language, C, C ++, Fortran, Pascal, почти всегда компилировались в машинный код. Такие языки, как Basic, VbScript и JavaScript, обычно интерпретируются.

Так в чем же разница между скомпилированной и интерпретированной программами?

составление

Для написания программы необходимо выполнить следующие действия:

  1. Редактировать программу
  2. Скомпилируйте программу в файлы машинного кода.
  3. Свяжите файлы машинного кода в работающую программу (также известную как exe).
  4. Отладка или запуск программы

Для некоторых языков, таких как Turbo Pascal и Delphi, шаги 2 и 3 объединены.

Файлы машинного кода - это автономные модули машинного кода, которые требуют связывания вместе для создания окончательной программы. Причиной наличия отдельных файлов машинного кода является эффективность; компиляторы должны только перекомпилировать исходный код которые изменились. Файлы машинного кода из неизмененных модулей используются повторно. Это известно как создание приложения. Если вы хотите перекомпилировать и перекомпилировать весь исходный код, это называется сборкой.

instagram viewer

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

толкования

Шаги для запуска программы через переводчик

  1. Редактировать программу
  2. Отладка или запуск программы

Это гораздо более быстрый процесс, и он помогает начинающим программистам редактировать и тестировать свой код быстрее, чем с помощью компилятора. Недостатком является то, что интерпретируемые программы работают намного медленнее, чем скомпилированные программы. На 5-10 раз медленнее, поскольку каждая строка кода должна быть перечитана, а затем повторно обработана.

Введите Java и C #

Оба эти языка полукомпилированы. Они генерируют промежуточный код, который оптимизирован для интерпретации. Этот промежуточный язык не зависит от базового оборудования, и это облегчает перенос программы, написанные на любом другом процессоре, если для этого был написан интерпретатор аппаратное обеспечение.

Java при компиляции создает байт-код, который интерпретируется во время выполнения виртуальной машиной Java (JVM). Многие JVM используют компилятор Just-In-Time, который преобразует байт-код в машинный код, а затем запускает этот код для увеличения скорости интерпретации. По сути, исходный код Java компилируется в два этапа.

C # скомпилирован в общий промежуточный язык (CIL, который ранее назывался Microsoft Intermediate Language MSIL). Он запускается средой Common Language Runtime (CLR), частью .NET Framework, среды, которая предоставляет службы поддержки, такие как сборка мусора и компиляция Just-In-Time.

И Java, и C # используют методы ускорения, поэтому эффективная скорость почти такая же, как у скомпилированного языка. Если приложение тратит много времени на ввод и вывод, например, чтение файлов на диске или запуск база данных запросы, то разница в скорости едва заметна.

Что это значит для меня?

Если у вас нет особой потребности в скорости и вы должны увеличить частоту кадров на пару кадров в секунду, вы можете забыть о скорости. Любой из C, C ++ или C # обеспечит достаточную скорость для игр, компиляторов и операционных систем.