В чем разница между компилируемым и интерпретируемым языком?



после прочтения некоторых материалов по этому вопросу я все еще не уверен, в чем разница между скомпилированным языком и интерпретируемым языком. Мне сказали, что это одно из различий между Java и JavaScript. Кто-нибудь, пожалуйста, помогите мне понять это?

1466   6  

6 ответов:

в чем разница между компилируемым и интерпретируемым языком?

разница составляет не в языке; он находится в реализация.

получив это из моей системы, вот ответ:

  • в скомпилированной реализации исходная программа переводится в собственные машинные инструкции, которые выполняются непосредственно аппаратура.

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

    • двоичные инструкции для виртуальной машины, часто называют код, как это делается в Lua, Python, Ruby, Smalltalk и многих других системах (подход был популяризирован в 1970-х годах UCSD P-system и UCSD Pascal)

    • древовидное представление исходной программы, например абстрактно-синтаксическое дерево, как это делается для многих прототипов или учебных интерпретаторов

    • маркированное представление исходной программы, аналогичное Tcl

    • символы исходной программы, как это было сделано в MINT и TRAC

одна вещь, которая усложняет проблему является то, что можно перевести (скомпилировать) байт-код в собственные машинные инструкции. Таким образом, успешная реализация intepreted может в конечном итоге получить компилятор. Если компилятор работает динамически, за кулисами, его часто называют JIT-компилятором или JIT-компилятором. JITs были разработаны для Java, JavaScript, Lua, и я осмелюсь сказать, многие другие языки. На этом этапе вы можете иметь гибридную реализацию, в которой некоторый код интерпретируется и некоторый код компилируется.

Java и JavaScript являются довольно плохим примером, чтобы продемонстрировать эту разницу, потому что оба языка интерпретируются. Java (интерпретируется) и C (или C++) (составитель) возможно, это был лучший пример.

почему зачеркнутый текст? как ответ правильно указывает, интерпретируется / компилируется речь идет о конкретной реализации о языке, а не о языке per se. В то время как утверждения типа "C-это скомпилированный язык" являются вообще правда, нет ничего, чтобы остановить кого-то от написания языке с переводчиком. На самом деле,интерпретаторы для C существуют.

в принципе, скомпилированный код может быть выполнен непосредственно процессором компьютера. То есть исполняемый код задается на "родном" языке процессора (сборка язык).

однако код интерпретируемых языков должен быть переведен во время выполнения из любого формата в инструкции CPU machine. Этот перевод выполняется переводчиком.

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

Compiler vs Interpreter Language

вот основное различие между компилятором и языком интерпретатора.

компилятор, как правило, читает компьютерный код языка более высокого уровня и преобразует его в p-код или собственный машинный код. Интерпретатор запускается непосредственно из p-кода или интерпретируемого кода, такого как Basic или Lisp. Как правило, сложный код работает намного быстрее, является более компактным и уже нашел все синтаксические ошибки и многие из незаконных ошибок ссылок. Интерпретируемый код находит такие ошибки только после того, как приложение пытается интерпретировать затронутый код. Интерпретируемый код часто хорошо для простых приложений, которые будут использоваться только один раз или пару раз, или, может быть, даже для прототипирования. Скомпилированный код лучше подходит для серьезных приложений. Компилятор сначала принимает всю программу, проверяет наличие ошибок, компилирует ее и затем выполняет. В то время как интерпретатор делает это строка за строкой, поэтому он берет одну строку, проверяет ее на ошибки и затем выполняет ее.

Если вам нужна дополнительная информация просто Google для "разница между компилятором и интерпретатором"

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

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

для компиляции исходного кода необходимо запустить на нем программу, которая генерирует двоичный исполняемый файл, который при запуске имеет поведение определяется источником. Например, javac компилирует human-readbale .java-файлы в машиночитаемые .файл класса.

для интерпретации исходного кода запускается программа на нем, которая производит определенное поведение сразу же, без создания промежуточного файла. Например, когда ваш веб-браузер загружается stackoverflow.com, он интерпретирует кучу javascript (который вы можете посмотреть, просмотрев источник страницы) и производит множество приятных эффектов, которые имеют эти страницы - например, upvoting, или маленькие панели уведомлений сверху.

интерпретируемый язык выполняется во время выполнения в соответствии с инструкциями, такими как сценарии оболочки, а скомпилированный язык-это тот, который компилируется (изменяется на язык ассемблера, который может понять процессор), а затем выполняется, как в c++.

Comments

    Ничего не найдено.