Перейти к основному содержимому

Компиляторы и интерпретаторы

Компилятор и интерпретатор превращают программу в действия робота

Коротко

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

Зачем это нужно

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

Если этот шаг не понимать, ошибки выглядят странно. Код написан, но робот не реагирует. Программа не загружается на плату. На компьютере скрипт запускается, а на микроконтроллере нет. Среда разработки сообщает об ошибке еще до запуска. Все это связано с тем, как программа превращается в выполнение.

Главная идея

Есть два основных подхода.

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

Два пути выполнения программы: компиляция и интерпретация

Компиляция похожа на подготовку инструкции заранее: сначала проверили и собрали программу, потом загрузили и запустили. Интерпретация похожа на чтение инструкции во время работы: среда читает команды и сразу выполняет их.

Что такое исходный код

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

Компилятор

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

Компилятор может найти ошибки заранее:

  • пропущена скобка;
  • команда написана неправильно;
  • переменная не объявлена;
  • тип данных не подходит;
  • библиотека не подключена.

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

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

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

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

Не путай язык и способ выполнения

Один язык может иметь разные реализации. А один проект может использовать и компилируемые, и интерпретируемые части. Для новичка главное - понять саму идею: программа либо заранее готовится к запуску, либо выполняется через среду по ходу работы.

Сравнение

ВопросКомпиляторИнтерпретатор
Когда идет переводдо запускаво время выполнения
Где часто встречаетсяC/C++, Arduino-проектыPython-скрипты, учебные эксперименты
Когда видно часть ошибокдо загрузки или запускачасто во время выполнения
Что удобноготовить программу для платыбыстро проверять идеи
Что может мешать новичкусообщения компилятора выглядят сложнымиошибка может появиться не сразу

Оба подхода полезны. Компилятор не "лучше" интерпретатора, а интерпретатор не "проще всегда". Выбор зависит от платы, языка, среды и задачи.

Как это выглядит в робототехнике

Рассмотрим два сценария.

Первый сценарий: робот на микроконтроллере.

написали код -> среда собрала программу -> загрузили на плату -> робот выполняет цикл

Второй сценарий: робот или макет управляется с компьютера.

запустили скрипт -> интерпретатор выполняет команды -> робот получает команды

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

Пример: загрузка программы в плату

Загрузка программы в микроконтроллер робота

Представим робота на микроконтроллере. У него есть датчик расстояния и два мотора. Программа написана на компьютере.

Путь может быть таким:

  1. Ученик пишет код в среде разработки.
  2. Среда проверяет код.
  3. Компилятор собирает программу.
  4. Программа загружается в память платы.
  5. После запуска микроконтроллер выполняет ее без постоянного подключения к компьютеру.

Если во время проверки появилась ошибка, робот еще не виноват. Нужно прочитать сообщение, найти строку и исправить код.

Ошибки компиляции и ошибки выполнения

Ошибки бывают разными.

Тип ошибкиКогда проявляетсяПример
Ошибка компиляциидо запусказабыта скобка или неверно написана команда
Ошибка загрузкипри передаче на платувыбран не тот порт или плата не подключена
Ошибка выполненияво время работыделение на ноль, неверное значение датчика
Ошибка логикипрограмма запускается, но делает не торобот поворачивает вправо вместо влево

Для робототехники особенно важна ошибка логики. Компилятор может сказать, что код записан правильно, но робот все равно поведет себя неверно. Значит, нужно проверять алгоритм, подключение и механическую часть.

Что запомнить про компиляторы и интерпретаторы

ИдеяКак понимать
Исходный код удобен человекуплате нужна выполняемая форма
Компилятор готовит программу заранееошибки часто видны до запуска
Интерпретатор выполняет по ходуудобно быстро проверять идеи
Среда разработки скрывает часть деталейкнопка "загрузить" может запускать несколько шагов
Робот может ошибаться даже при правильном синтаксиселогика и железо тоже требуют проверки

Практика

Задание 1

Разделите ошибки по типам.

СитуацияКакой тип ошибки?
Программа не собирается из-за пропущенной скобки
Среда не видит плату
Робот запускается, но едет назад
Скрипт падает только после нажатия кнопки

Задание 2

Опишите путь программы для робота на микроконтроллере:

код -> ... -> ... -> робот выполняет

Задание 3

Представьте, что компилятор не нашел ошибок, но робот не останавливается перед препятствием. Запишите три проверки: программу, датчик и подключение моторов.

Проверьте себя

  • Что делает компилятор?
  • Что делает интерпретатор?
  • Почему ошибка компиляции появляется до запуска?
  • Почему интерпретируемая программа удобна для экспериментов?
  • Чем ошибка логики отличается от ошибки синтаксиса?
  • Почему в робототехнике нужно проверять не только код, но и железо?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

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

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

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

Связанные темы

Источники