freeCodeCamp/guide/russian/computer-science/compiled-versus-interpreted.../index.md

8.8 KiB
Raw Blame History

title localeTitle
Compiled Versus Interpreted Languages Скомпилированные и интерпретируемые языки

Скомпилированные и интерпретируемые языки

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

Хорошо ... но что это на самом деле означает?

Итак, скажем, у вас есть рецепт hummus, который вы хотите сделать, но он находится на древнегреческом языке. Есть два пути, которыми вы, как не-древнегреческий оратор, могли следовать его указаниям.

Во-первых, если кто-то перевел его на английский язык уже для вас. Вы (и любой, кто мог говорить по-английски) могли получить английскую версию и сделать hummus. Это скомпилированная версия.

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

Скомпилированные языки

Компилированные языки преобразуются непосредственно в машинный код, который может выполнять процессор. В результате они, как правило, работают быстрее и эффективнее, чем интерпретируемые языки. Они также дают разработчику больше контроля над аппаратными аспектами, такими как управление памятью и использование ЦП.

Компилированные языки нуждаются в шаге «build» - их сначала нужно скомпилировать вручную. Вам нужно «перестроить» программу каждый раз, когда вам нужно внести изменения. В нашем примере hummus весь перевод написан до того, как он доберется до вас. Если первоначальный автор решил, что хочет использовать другой вид оливкового масла, весь рецепт нужно будет перевести снова, а затем отправить к вам.

Примерами чистых компилируемых языков являются C, C ++, Erlang, Haskell, Rust и Go.

Интерпретированные языки

Интерпретаторы будут запускать программу по очереди и выполнять каждую команду. Теперь, если автор решил, что хочет использовать другой вид оливкового масла, он может поцарапать старый и добавить новый. Затем ваш переводчик может передать это изменение вам, как это происходит.

Когда-то, как известно, интерпретируемые языки были значительно медленнее, чем скомпилированные языки. Но с разработкой компиляции « точно в срок» этот разрыв сокращается.

Примерами распространенных интерпретируемых языков являются PHP, Ruby, Python и JavaScript.

Небольшой оговорка

Большинство языков программирования могут иметь как скомпилированные, так и интерпретируемые реализации. Сам язык не обязательно компилируется или интерпретируется. Однако для простоты их обычно называют такими.

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

Большинство инструментов командной строки, CLI и оболочек теоретически могут быть классифицированы как интерпретируемые языки.

Преимущества и недостатки

Преимущества скомпилированных языков

Программы, скомпилированные в собственный код во время компиляции, обычно имеют тенденцию быть быстрее, чем те, которые были переведены во время выполнения из-за накладных расходов на процесс перевода.

Недостатки скомпилированных языков

Наиболее значительными недостатками являются: -

  • Дополнительное время, необходимое для завершения всего этапа компиляции перед тестированием, и
  • Платформенная зависимость генерируемого двоичного кода.

Преимущества интерпретируемых языков

Интерпретированный язык предоставляет реализации некоторую дополнительную гибкость по сравнению с компилируемыми реализациями. Поскольку интерпретаторы сами выполняют код исходной программы, сам код является независимым от платформы (например, байтовый код Java). Другие функции включают динамическую типизацию и меньший размер исполняемой программы.

Недостатки интерпретируемых языков

Наиболее заметным недостатком является типичная скорость выполнения по сравнению с скомпилированными языками.

Дополнительная информация:

Википедия - Скомпилированный язык

Википедия - Интерпретированный язык

articlemer.com - В чем разница между скомпилированным и интерпретируемым языком?