Чем отличается JavaScript и Python от C++ и Swift
easy

Чем отличается JavaScript и Python от C++ и Swift

Про скрипты и компиляторы — в картинках

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

Допустим, у нас есть два исходных кода, которые делают что-то полезное:

Чем отличается JavaScript и Python от C++ и Swift

С точки зрения человека, всё это — программный код, который понятен компьютеру и который сделает то, что нам нужно. Но компьютер смотрит на это иначе: первый код для него — это скрипт, а второй — код, который ещё нужно будет перевести в машинные команды:

Чем отличается JavaScript и Python от C++ и Swift

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

Теперь копнём глубже.

Интерпретатор

Интерпретатор — это программа, которая берёт строки кода по очереди и выполняет их шаг за шагом. Выполняет — это значит она:

  1. Берёт текущую команду
  2. Смотрит, что нужно сделать с этой командой.
  3. Формирует на машинном языке мини-программу, которая делает то, что указано в команде.
  4. Отдаёт её компьютеру на выполнение.
  5. Переходит к следующей команде.

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

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

Чем отличается JavaScript и Python от C++ и Swift

Если в тексте программы будет ошибка, то интерпретатор не среагирует на неё до тех пор, пока не дойдёт до строки с ошибкой. Он выполнит все команды до этой, а потом остановится и выдаст сообщение об ошибке:

Чем отличается JavaScript и Python от C++ и Swift

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

Компилятор

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

Чем отличается JavaScript и Python от C++ и Swift

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

Чем отличается JavaScript и Python от C++ и Swift

Главное различие компилируемого и интерпретируемого кода

Для работы скрипта (интерпретируемого кода) нужен интерпретатор — без него компьютер не сможет перевести скриптовые команды в понятный для себя язык. Сколько раз нам нужно запустить программу, столько раз нам понадобится интерпретатор.

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

При чём тут Python и C++?

Python и JavaScript — скриптовые языки, поэтому для запуска их программ нужен интерпретатор. В случае с JavaScript интерпретатором выступает браузер, а с Python — одноимённая программа. Они берут скрипты и шаг за шагом выполняют, что в них написано. Не будет браузера или другого интерпретатора — не получится запустить JavaScript. На компьютере не установлен Python — не получится запустить .py-скрипт.

C++ и Swift — компилируемые языки. Это значит, что после успешной компиляции можно взять получившийся файл и запустить его на том компьютере, где нет никакой среды разработки. Этот файл уже не зависит ни от чего и может работать где угодно.

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy