Скомпилированные и интерпретированные языки - PullRequest
256 голосов
/ 16 июля 2010

Я пытаюсь лучше понять разницу.В Интернете я нашел много объяснений, но они имеют тенденцию к абстрактным различиям, а не к практическим последствиям.

Большая часть моего опыта программирования была с CPython (динамический, интерпретируемый) и Java (статический, скомпилированный).Тем не менее, я понимаю, что существуют другие виды интерпретируемых и компилируемых языков.Помимо того, что исполняемые файлы могут распространяться из программ, написанных на скомпилированных языках, есть ли какие-либо преимущества / недостатки для каждого типа?Часто я слышу, как люди утверждают, что интерпретируемые языки могут использоваться в интерактивном режиме, но я считаю, что скомпилированные языки также могут иметь интерактивные реализации, верно?

Ответы [ 12 ]

1 голос
/ 17 августа 2017

Компиляция - это процесс создания исполняемой программы из кода, написанного на скомпилированном языке программирования. Компиляция позволяет компьютеру запускать и понимать программу без необходимости использования программного обеспечения для ее создания. Когда программа компилируется, она часто компилируется для конкретной платформы (например, платформа IBM), которая работает с IBM-совместимыми компьютерами, но не с другими платформами (например, платформа Apple). Первый компилятор был разработан Грейс Хоппер во время работы на компьютере Harvard Mark I. Сегодня большинство языков высокого уровня будут включать свой собственный компилятор или иметь в наличии наборы инструментов, которые можно использовать для компиляции программы. Хорошим примером компилятора, используемого с Java, является Eclipse, а примером компилятора, используемого с C и C ++, является команда gcc. В зависимости от размера программы сборка может занять несколько секунд или минут, и если во время компиляции ошибок не обнаружено, создается исполняемый файл. Проверьте эту информацию

0 голосов
/ 21 апреля 2019

Отличия

Переводчик:

  1. Процесс: интерпретатор выдает результат из программы. (Преобразует программу в машинный код при запуске программы) С другой стороны, в интерпретируемой программе исходным кодом обычно является программа. Программы такого типа (часто называемые скриптами) требуют интерпретатора, который анализирует команды в программе и затем выполняет их. Некоторые интерпретаторы, такие как оболочки Unix (sh, csh, ksh и т. Д.), Читают и затем немедленно выполняют каждую команду, в то время как другие, такие как Perl, анализируют весь сценарий перед отправкой соответствующих инструкций машинного языка. Другие примеры интерпретируемого языка включают JavaScript и Python.

  2. Быстрая разработка (редактирование и запуск).

  3. Медленно выполняется, потому что каждый оператор должен интерпретироваться в машинный код каждый раз, когда он выполняется (подумайте, что это значило для цикла, выполняемого тысячи раз).

  4. Если ваш исходный код интерпретируется, вам нужно написать его только один раз, и он может быть интерпретирован и выполнен соответствующим интерпретатором на любой платформе!

  5. Недостатком использования интерпретатора является то, что он не скрывает исходный код от конечного пользователя

  6. Продолжает перевод программы до первой ошибки, и в этом случае она останавливается. Следовательно, отладка проста.

Компилятор:

  1. Процесс: (преобразует программу в машинный код до ее запуска), пока компилятор создает программу, написанную на языке ассемблера. Затем ассемблер архитектуры превращает полученную программу в двоичный код. Язык ассемблера варьируется для каждого отдельного компьютера в зависимости от его архитектуры. Следовательно, скомпилированные программы могут работать только на компьютерах, имеющих ту же архитектуру, что и компьютер, на котором они были скомпилированы. Скомпилированная программа не предназначена для чтения человеком, а написана на машинном языке для конкретной архитектуры. Создание скомпилированной программы требует нескольких шагов. Во-первых, программист, используя инструмент разработки или даже простой текстовый редактор, пишет исходный код на выбранном компьютерном языке. Если программа сложная, ее части могут быть распределены по нескольким файлам. Затем программист компилирует программу, сортирует и связывает модули и переводит все это в машинный код, понятный компьютеру. Поскольку различные типы компьютеров не говорят на машинных языках друг друга, скомпилированная программа будет работать только на той платформе, для которой она была разработана. Например, программа, написанная для HP-UX, обычно не будет работать на компьютере Mac OS или компьютере, на котором установлен Solaris.

  2. Медленно развивается (редактировать, компилировать, связывать и запускать. Шаги компиляции / линковки могут занять много времени).

  3. Быстро выполнить. Вся программа была уже на машинном коде.

  4. Скомпилированная программа будет работать только на той платформе, для которой она была разработана. Это не портативный

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

  6. Выдает сообщение об ошибке только после сканирования всей программы. Следовательно, отладка сравнительно трудна.

Источники: * https://kb.iu.edu/d/agsz * Разные ответы в этом посте

...