img

Чем отличаются интерпретируемые и компилируемые языки программирования

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

Interpreted vs Compiled

В компилируемом языке целевая машина переводит программу самостоятельно. В интерпретируемом языке исходный код не переводится самой машиной; его читает и выполняет другая программа (интерпретатор).


Подробное объяснение

Представьте ситуацию: вы решили приготовить хумус. Но имеющийся у вас рецепт написан на древнегреческом. У вас, как человека не знающего этого языка, есть два варианта.

Вариант 1: кто-то уже перевел этот рецепт на ваш язык. Поэтому вы (и любой человек, знающий ваш язык) сможете прочесть рецепт в переводе и приготовить хумус. Переведенный рецепт и будет компилированной версией.

Есть и другой вариант: у вас есть друг, который знает древнегреческий. Поэтому, решив приготовить хумус, вы пригласили этого друга к себе. Друг сидит рядом и переводит рецепт – строчка за строчкой, – а вы занимаетесь готовкой. Ваш друг – это интерпретатор (переводчик) для интерпретируемой версии рецепта.


Компилируемые языки

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

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

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


Интерпретируемые языки

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

Интерпретируемые языки гораздо медленнее компилируемых. Но с появлением JIT-компиляции (динамической компиляции) эта разница начинает сокращаться.

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


Небольшое пояснение

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

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


Плюсы и минусы

Плюсы компилируемых языков

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

Минусы компилируемых языков

Основные недочеты компилируемых языков:

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

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

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

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

Самый главный недочет этих языков – скорость выполнения. Она обычно ниже, чем в компилируемых языках.

Ссылка
скопирована
Программирование
Скидка 25%
Python-программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Объектно-реляционное отображение (ORM - Object Relational Mapping) – это метод, который используется для создания «моста» между
img
Стандарт JSON Web Tokens (JWT) – это лаконичный метод передачи данных, поддающихся проверке. Каждый токен содержит подпись, с по
img
Универсальный уникальный идентификатор (UUID - Universally Unique Identifier) – это форма идентификатора, которую можно с уверен
img
CORS – это механизм браузера, который позволяет серверам указывать сторонние источники, которые имеют право запрашивать у них ре
img
Перечисления, или перечисляемые типы данных, - это список постоянных значений с именами, которые удобны для разработчиков. В про
img
Производительность приложений может оказаться решающим показателем для многих предприятий. Если уж на то пошло, то стоимость раз
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59