Наверно каждый слышал, что питон - это интерпретируемый язык программирования, но не каждый знает что за этим кроется.
Что такое язык программирования. Трансляторы.
Для начала разберёмся что такое «язык программирования». Как можно понять из названия - это, как и любой другой язык (русский, немецкий, английский) набор правил, слов, букв и взаимосвязей на котором человек может изъясняться, тут никаких отличий нет кроме того что на обычном языке мы общаемся друг с другом, а на языках программирования мы объясняемся с машиной.
Но на самом деле все языки программирования - это прослойка между человеком и языком машины (который называется машинным кодом). Любой компьютер не понимает ничего кроме машинного кода (двоичный код, состоящий из нулей и единиц, набор команд, операций и данных состоящий из последовательностей 1000111010)
Так как же машины понимают что мы от них хотим?
С этой задачей нам помогают уже написанные программы, которые называются трансляторы и делятся на два вида:
- компиляторы
- Интерпретаторы
Отличие между ними лежит на поверхности.
Компиляторы
Компиляторы - это специальные программы написанные программистами для программистов, чья задача собрать весь написанный нами код, обработать его, упростить, проверить на наличие ошибок и на выходе выдать нам файл с машинным кодом понятным для компьютера.
Получается компиляторы на выходе дают так сильно любимые нам файлы с расширением .exe .msi и множество других (для каждой операционной системы они кстати свои)
Интерпретаторы
С интерпретаторами все сводится к похожей схеме, но с небольшими отклонениями.
Интерпретаторы не создают исполняемый файл на машинном коде, они в режиме реального времени транслируют написанный код в машинный и сразу передают на исполнение.
Что лучше?
Зависит от поставленных целей, применение компиляторов позволяет выполнять код быстрее чем это было бы с интерпретаторами, потому что во время работы программы нет задержки во времени для преобразования программного кода в машинный код. Все это время было затрачено один раз во время компиляции (создания исполняемого файла с машинным кодом с помощью компилятора).
Зачем тогда нужны интерпретаторы если они работают медленнее?
Все просто, дело в удобстве и комфорте, который мы все так любим. Применение интерпретатором позволяет запускать один и тот же код (в особых случаях с минимальными изменениями) на разных операционных системах. То есть если код скомпилировать, то он компилируется под определённую операционную систему (или версию операционной системы) и может использоваться только на ней. Если вам нужно написать приложение под windows, Linux, Mac OS то придётся писать три отличающихся кода и запускать три разных компилятора. В случае с интерпретатором все проблемы совместимости (ну почти все) он берет на себя. И в итоге один и тот же файл может исполняться на любой версии ос если ее поддерживает интерпретатор
Кстати если язык интерпретируемый это не значит что его нельзя скомпилировать, просто для этого нужно использовать специальные инструменты.
Python, например по умолчанию интерпретируемый, но его возможно скомпилировать с помощью специальных модулей.
На нашей практике был интересный кейс с попыткой ускорения выполнения кода на Python, без изменений в самом коде, исключительно с помощью замены интерпретаторов и компилировании кода, если интересно почитать на эту тематику, либо вы сами можете порекомендовать инструменты для ускорения Python, пишите в комментариях!