Перед Джава и языки программирования C # появились, компьютерные программы были только скомпилированный или интерпретированы. Такие языки, как Assembly Language, C, C ++, Fortran, Pascal, почти всегда компилировались в машинный код. Такие языки, как Basic, VbScript и JavaScript, обычно интерпретируются.
Так в чем же разница между скомпилированной и интерпретированной программами?
составление
Для написания программы необходимо выполнить следующие действия:
- Редактировать программу
- Скомпилируйте программу в файлы машинного кода.
- Свяжите файлы машинного кода в работающую программу (также известную как exe).
- Отладка или запуск программы
Для некоторых языков, таких как Turbo Pascal и Delphi, шаги 2 и 3 объединены.
Файлы машинного кода - это автономные модули машинного кода, которые требуют связывания вместе для создания окончательной программы. Причиной наличия отдельных файлов машинного кода является эффективность; компиляторы должны только перекомпилировать исходный код которые изменились. Файлы машинного кода из неизмененных модулей используются повторно. Это известно как создание приложения. Если вы хотите перекомпилировать и перекомпилировать весь исходный код, это называется сборкой.
Связывание - это технически сложный процесс, когда все вызовы функций между различными модулями связаны друг с другом, места в памяти выделены для переменные и весь код размещается в памяти, а затем записывается на диск как законченная программа. Это часто более медленный шаг, чем компиляция, поскольку все файлы машинного кода должны быть считаны в память и связаны друг с другом.
толкования
Шаги для запуска программы через переводчик
- Редактировать программу
- Отладка или запуск программы
Это гораздо более быстрый процесс, и он помогает начинающим программистам редактировать и тестировать свой код быстрее, чем с помощью компилятора. Недостатком является то, что интерпретируемые программы работают намного медленнее, чем скомпилированные программы. На 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 # обеспечит достаточную скорость для игр, компиляторов и операционных систем.