Компиляторы и интерпретаторы
Программу на Python написали. Процессор всё ещё ждёт нули и единицы. Между ними - транслятор: компилятор, интерпретатор или гибрид. Без него «исходник» для железа - просто текст.
Транслятор - программа, переводящая текст на языке программирования в форму, пригодную для исполнения (машинный код, байткод) или выполняющая его напрямую.
Общий обзор языков - здесь.
Компилятор
Читает исходный код и строит исполняемый файл или объектный модуль до запуска. Ошибки синтаксиса ловит на этапе сборки. Плюс - скорость готовой программы. Минус - цикл правки длиннее.
Интерпретатор
Разбирает и выполняет программу по частям во время запуска. Удобно учить и отлаживать скрипты. Обычно медленнее «чистой» компиляции в машинный код.
Гибридные схемы
Java: исходник → байткод → виртуальная машина. C#: похожая идея. Современный Python тоже не примитивный «построчный динозавр» - внутри есть оптимизации. На экзамене важна идея уровней, а не маркетинг версий.
Ошибки компиляции и выполнения
Ошибка компиляции: «так писать нельзя». Ошибка выполнения: «написать можно, но на этих данных падает или врёт». Логическая ошибка может не ронять программу вовсе - просто ответ неверный.
Связка с IDE
IDE часто прячет вызов транслятора за кнопкой Run. Под капотом всё равно компилятор/интерпретатор и иногда отладчик.
Ошибки в ответах
- «Интерпретатор всегда медленнее в абсолюте и всё».
- Путают язык и транслятор.
- Считают, что после компиляции исходник больше не нужен для понимания программы (для сопровождения как раз нужен).
Шпаргалка
- Компилятор - перевод заранее.
- Интерпретатор - выполнение по ходу.
- Гибриды сочетают оба подхода.
- Синтаксис ловят рано; логику - тестами и головой.