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

«IT-специалист с нуля» наш лучший курс для старта в IT
Это один из двух способов перевода кода в понятный компьютеру вид. Второй вариант — компиляция, когда код «переводят» в машинные команды целиком. Мы расскажем об их различиях ниже.
Языки программирования, которые работают с интерпретаторами, называются интерпретируемыми. Большинство популярных сейчас языков именно такие. Некоторые из них — популярный вариант для обучения информатике и программированию.
Для чего нужны интерпретаторы
Языки программирования создаются такими, чтобы писать на их было удобно человеку. Они близки к английскому языку, команды на них — человекопонятные. Это в первую очередь касается высокоуровневых ЯП — тех, которые ближе к человеку, чем к «железу».
Компьютер такие языки не понимает. По умолчанию код на них для него — обычный текст, а не команды. Ведь компьютер — вычислительная машина, для которой понятен не текст, а наборы из нулей и единиц. Но писать команды на так называемых машинных кодах — задача очень трудная, почти невозможная. Ведь они очень длинные, особенно если программа сложная, и непонятны человеку.
Поэтому при разработке языка программирования для него всегда создается программа, переводящая код на нем в понятный компьютеру вид. Интерпретатор — один из вариантов, как можно реализовать этот процесс. Программа на интерпретируемом языке без интерпретатора просто не запустится — компьютер ее не поймет.
То есть интерпретатор нужен, чтобы программы на том или ином языке могли запускаться и выполняться.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

Как работает интерпретатор
Интерпретатор получает на вход команду, написанную на языке программирования, читает ее и сразу же выполняет. Его работу можно условно разделить на два режима: интерактивный и пакетный.
Интерактивный режим. Это обычно работа в консоли. Его еще называют REPL — Read-eval-print loop, цикл чтения, исполнения и печати. Работает он так. Человек пишет в консоли какую-то команду интерпретатору, и она тут же выполняется, как только он нажимает Enter.
Обычно для этого сначала нужно запустить интерпретатор отдельной командой, но не всегда. Например, если команда на JavaScript пишется в консоли браузера, ничего дополнительно включать не надо — в браузеры по умолчанию встроен интерпретатор JS.
Пакетный режим. Он используется для более крупных задач, таких, которые не получится писать построчно и выполнять сразу же. Человек пишет какой-то код в файле, сохраняет его с нужным расширением и отдает интерпретатору. Тот получает файл, построчно считывает написанный там код и выполняет его.
В пакетном режиме пишется большинство программ: писать их в консоль и сразу же выполнять было бы неудобно. А REPL используют для быстрых подсчетов, отправки запросов и других действий, которым достаточно одной команды.
Разница между интерпретатором и компилятором
Еще один способ «переводить» код в понятный машине вид — компиляция. Программы, которые ею занимаются, называются компиляторами, а языки, которые с ними работают, — компилируемыми. Разница в том, что компилятор ничего не выполняет: он получает на вход файл с кодом, расшифровывает его и переводит в машинные коды целиком. Получается исполняемый файл, который можно запустить внутри той или иной операционной системы.
У интерпретаторов и компиляторов есть ряд различий — теоретических и чисто практических.
- Интерпретатор работает с кодом построчно, а компилятор переводит весь блок кода целиком.
- Интерпретатор исполняет код, как только «прочтет» нужную строку, а компилятор отдает его на выполнение системе — сам он только переводит.
- С компилятором нельзя работать в режиме REPL — только в пакетном.
Интерпретатор можно сравнить с синхронным переводчиком, который сразу же озвучивает перевод. А компилятор — с литературным переводчиком, который переводит тексты, а потом отправляет перевод тем, кто будет с ним работать.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Известные интерпретируемые языки и их применение
Самые популярные сегодня языки, работающие с интерпретатором, — JavaScript и Python. Первый обрел популярность благодаря тому, что именно он работает в браузере. Поэтому им активно пользуются в вебе, особенно во фронтенде. Python же применяют в машинном обучении, анализе данных, при работе с математикой, аналитикой и автоматизацией, а еще в вебе и во многих других отраслях.
Другие примеры интерпретируемых языков — PHP, который активно применяют в вебе для «серверной» части, универсальный Ruby и Perl — его часто используют для автоматизации, системного администрирования или работы с текстом.
Интерпретируемые языки не зависят от системы, поэтому их в теории можно использовать где угодно. Главное, чтобы на конечном устройстве, где будет запускаться код, был установлен интерпретатор.
А вот там, где нужно максимальное быстродействие или близость к «железу», обычно предпочитают компилируемые языки. В них код исполняется быстрее за счет перевода в машинные коды: система понимает их и быстро выполняет.
У некоторых языков, таких как Basic или Python, есть и компилируемая, и интерпретируемая версии. Они используются для разных целей.
Несколько интерпретаторов у одного языка
Чаще всего бывает так, что у одного языка есть несколько интерпретаторов, или, как говорят, несколько реализаций или движков. Яркий пример — JavaScript: там основных интерпретаторов три, причем одним пользуются браузеры на базе Chromium, другим — Mozilla, а третьим — браузеры Apple.
Разные реализации могут чуть-чуть отличаться в исполнении или в обработке некоторых сложных запросов. У каждого движка свои механизмы оптимизации, свои особенности. Если предполагается, что код будет запускаться из-под разных движков, желательно учесть их все. Например, тот же JavaScript: фронтенд-разработчики, работающие с «браузерной» частью сайта, должны учитывать и тестировать поведение кода в разных браузерах. Но общий принцип работы похож у всех.
Как именно должен работать код, определяет спецификация — большой документ, обычно от разработчиков языка, который подробно описывает все возможные команды и принципы. Создатели интерпретаторов ориентируются именно на этот документ.
Достоинства интерпретируемых языков
Интерактивность. Код выполняется построчно, и это удобно. Если нужно протестировать какой-то простой запрос, можно просто включить интерпретатор и отдать ему команду в консоли — все выполнится тут же без временных затрат на компиляцию и передачу системе. А еще так можно выполнять простые действия, например для автоматизации рутины.
Скорость освоения и написания кода. Благодаря уже упомянутой интерактивности язык проще учить. Во-первых, сразу видно, к какому результату приведет то или иное действие, во-вторых, если появится ошибка, интерпретатор укажет где. Да и код пишется быстрее — по этой же причине.
Удобство отладки. Отлаживать код, написанный на интерпретируемом языке, проще по той же причине: он исполняется сразу. В случае с компилируемыми языками ошибка может возникнуть в одном месте, а заметной для компилятора стать в другом. Это затрудняет отладку. С интерпретируемыми языками в этом смысле проще: интерпретатор начинает «ругаться», как только доходит до ошибочного места.
Более того: если компилируемая программа обнаружит ошибку, она не выполнится совсем. А интерпретируемая — выполнится до места сбоя. Это тоже удобно при поиске ошибок, а еще помогает решить хотя бы часть задачи, прежде чем программа «упадет».
Понятность для человека. Большинство интерпретируемых языков — высокоуровневые, близкие к человеку. Поэтому у них понятный синтаксис, код на них легко читается, а сами языки освоить относительно просто. И уж точно проще, чем писать на низкоуровневых языках или вообще на машинных кодах.
Независимость от платформы. Исполнение берет на себя интерпретатор, а не система. Поэтому язык не зависит от ОС, то есть по умолчанию кроссплатформенный. Это выгодно отличает интерпретируемые языки от компилируемых: в них исполнение напрямую зависит от системы. Ведь разные ОС воспринимают машинные коды по-разному, поэтому программы-компиляторы — свои для каждой системы . И код, скомпилированный для Windows, не запустится в Linux или на Mac.
Механизмы оптимизации. На руку программисту играют и сами интерпретаторы: в них встраивают механизмы, которые оптимизируют код сами. Это значит, что, если код написан не самым оптимальным способом, интерпретатор сгладит недостаток оптимизации за счет встроенных механизмов.
Конечно, это не означает, что нужно забыть о качестве кода. Оно все еще важно. Но такая возможность позволяет сконцентрироваться на том, чтобы код был чистым и понятным для человека, и не жертвовать понятностью ради нескольких миллисекунд.
Недостатки интерпретируемых языков
Низкая скорость программ. Сами программы на интерпретируемых языках работают медленнее, чем на компилируемых, потому что код выполняет не система напрямую. Но разница в скорости сглаживается за счет двух факторов: оптимизация самих интерпретаторов и отсутствие промежуточного шага — компиляции, перевода в машинный код. Хотя в критичных по быстродействию процессах предпочитают использовать компилируемые языки, для большинства задач интерпретируемых вполне достаточно.
Риск ошибки. Выше мы говорили, что отлаживать код на интерпретируемых языках легче. Это так, но у преимущества есть оборотная сторона. Так как программа запускается сразу и выполняется до ошибочного места, какую-то ошибку в редко выполняемых блоках кода легко пропустить. Есть риск, что программа выполнится, а разработчик так и не узнает, что в ней ошибка. Компилируемые языки от этого защищены: если ошибка есть хоть где-то, программа просто не запустится. Проблемы, правда, можно избежать за счет качественного тестирования.
Зависимость от установленного интерпретатора. Интерпретируемые языки не зависят от операционной системы, но зависят от интерпретатора. Чтобы код запустился, нужно не только скачать файл с ним, но и установить интерпретатор. Если тот не установлен, компьютер просто не сможет выполнить программу — нечему будет понимать ее. А вот исполняемый файл, созданный через компилятор, можно запустить где угодно, но только в нужной ОС.
Открытость исходного кода. При компиляции в машинные коды «исходники» скрываются, и никто не может посмотреть, как была реализована та или иная функция. Интерпретируемые языки такого достоинства лишены: код не переводится в исполняемый файл, а выполняется интерпретатором сразу. Поэтому исходники остаются открытыми и их может посмотреть кто угодно. Это минус, если код программы — коммерческая тайна или разработчик просто по какой-то причине хочет его скрыть. Придется пользоваться дополнительными инструментами, чтобы «спрятать» написанное.
Какие языки лучше учить: компилируемые или интерпретируемые
Нет однозначного ответа, что лучше: у обоих типов свои сферы применения, достоинства и недостатки. Поэтому мы рекомендуем ориентироваться на область, в которой вы хотите работать, и на языки, которые в ней принято использовать. Например, в геймдеве и при создании приложений под разные ОС обычно применяют компилируемые языки. В вебе и для автоматизации — интерпретируемые. А еще вы можете попробовать разные варианты и разобраться, какой подход вам ближе.
Узнайте больше о программировании и информационных технологиях на наших курсах. Мы поможем получить новую высокооплачиваемую профессию.
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.
Транслятор

Транслятор обычно выполняет также диагностику ошибок, форирует словари идентификаторов, выдаёт для печати тексты программы и т. д.
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
Понятие трансляции относится не только к языкам программирования, но и к другим компьютерным языкам, вроде языков разметки, аналогичных HTML, и к естественным языкам, вроде английского или русского. Однако данная статья только о языках программирования, о естественных языках см.: Перевод.
Виды трансляторов
- Адресный. Функциональное устройство, преобразующее виртуальный адрес (Virtual address) в реальный адрес памяти (Memory address).
- Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени.
- Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
- Обратный. То же, что детранслятор. См. также: декомпилятор, дизассемблер.
- Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
- Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
- Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
- Тестовый. Набор макрокомандязыка ассемблера, позволяющих задавать различные отладочныепроцедуры в программах, составленных на языке ассемблера.
Реализации
Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.
Основная статья: Компилятор
Язык процессоров (машинный код) обычно является низкоуровневым. Существуют платформы, использующие в качестве машинного язык высокого уровня (например, iAPX-432
Шаблон:Начало цитаты Можно привести ряд других примеров, в которых архитектура разработанных серий вычислительных машин базировалась или сильно зависела от некоторой модели структуры программы. Так, серия GE/Honeywell Multics основывалась на семантической модели выполнения программ, написанных на языке ПЛ/1. В Шаблон:Не переведено B5500, B6700 … B7800 прототипом послужила модель программы этапа выполнения, написанной на расширенном языке Алгол. …
Процессор i432, подобно этим ранним архитектурам, также базируется на семантической модели структуры программы. Однако, в отличие от своих предшественников, i432 не основывается на модели некоторого конкретного языка программирования. Вместо этого, основной целью разработчиков было обеспечение непосредственной поддержки на этапе выполнения как для абстрактных данных (то есть программирование с абстрактными типами данных), так и для доменно-ориентированных операционных систем. …
Язык Ада поддерживает объектно-базированное программирование, что и послужило причиной выбора его в качестве основного языка программирования для i432. Шаблон:Конец цитаты), но они являются исключением из правила в силу сложности и дороговизны. Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется компилятором.
Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и Шаблон:Не переведено, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять из себя отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при начале исполнения программы загрузчиком.
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.
Основная статья: Ассемблер
В случае, если исходный язык является языком ассемблера (низкоуровневым языком, близким к машинному языку), то компилятор такого языка называется ассемблером.
Основная статья: Интерпретатор
Противоположный метод реализации — когда программа исполняется с помощью интерпретатора вообще без трансляции. Интерпретатор программно моделирует машину, цикл выборки-исполнения которой работает с командами на языках высокого уровня, а не с машинными командами. Такое программное моделирование создаёт виртуальную машину, реализующую язык. Этот подход называется чистой интерпретацией. Чистая интерпретация применяется как правило для языков с простой структурой (например, АПЛ или Лисп). Интерпретаторы командной строки обрабатывают команды в скриптах в UNIX или в пакетных файлах (.bat) в MS-DOS также как правило в режиме чистой интерпретации.
Достоинство чистого интерпретатора: отсутствие промежуточных действий для трансляции упрощает реализацию интерпретатора и делает его удобнее в использовании, в том числе в диалоговом режиме. Недостаток — интерпретатор должен быть в наличии на целевой машине, где должна исполняться программа. А свойство чистого интерпретатора, что ошибки в интерпретируемой программе обнаруживаются только при попытке выполнения команды (или строки) с ошибкой, можно признать как недостатком, так и достоинством.
Существуют компромиссные между компиляцией и чистой интерпретацией варианты реализации языков программирования, когда интерпретатор перед исполнением программы транслирует её на промежуточный язык (например, в байт-код или p-код), более удобный для интерпретации (то есть речь идёт об интерпретаторе со встроенным транслятором). Такой метод называется смешанной реализацией. Примером смешанной реализации языка может служить Perl. Этот подход сочетает как достоинства компилятора и интерпретатора (бо́льшая скорость исполнения и удобство использования), так и недостатки (для трансляции и хранения программы на промежуточном языке требуются дополнительные ресурсы; для исполнения программы на целевой машине должен быть представлен интерпретатор). Также, как и в случае компилятора, смешанная реализация требует, чтобы перед исполнением исходный код не содержал ошибок (лексических, синтаксических и семантических).
Основная статья: Динамическая компиляция
По мере увеличения ресурсов компьютеров и расширения гетерогенных сетей (в том числе интернета), связывающих компьютеры разных типов и архитектур, выделился новый вид интерпретации, при котором исходный (или промежуточный) код компилируется в машинный код непосредственно во время исполнения, «на лету». Уже скомпилированные участки кода кешируются, чтобы при повторном обращении к ним они сразу получали управление, без перекомпиляции. Этот подход получил название динамической компиляции.
Достоинством динамической компиляции является то, что скорость интерпретации программ становится сравнимой со скоростью исполнения программ в обычных компилируемых языках, при этом сама программа хранится и распространяется в единственном виде, независимом от целевых платформ. Недостатком является бо́льшая сложность реализации и бо́льшие требования к ресурсам, чем в случае простых компиляторов или чистых интерпретаторов.
Этот метод хорошо подходит для веб-приложений. Соответственно, динамическая компиляция появилась и поддерживается в той или иной мере в реализациях Java, Microsoft .NET, Perl, Python.
Смешение понятий трансляции и интерпретации
Трансляция и интерпретация — разные процессы: трансляция занимается переводом программ с одного языка на другой, а интерпретация отвечает за исполнение программ. Однако, поскольку целью трансляции как правило является подготовка программы к интерпретации, то эти процессы обычно рассматриваются вместе. Например, языки программирования часто характеризуются как «компилируемые» или «интерпретируемые», в зависимости от того, преобладает при использовании языка компиляция или интерпретация. Причём практически все языки программирования низкого уровня и третьего поколения, вроде ассемблера, Си или Модулы-2, являются компилируемыми, а более высокоуровневые языки, вроде Python или SQL, — интерпретируемыми.
С другой стороны, существует взаимопроникновение процессов трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или для шаблонов в C++).
Более того, один и тот же язык программирования может и транслироваться, и интерпретироваться, и в обоих случаях должны присутствовать общие этапы анализа и распознавания конструкций и директив исходного языка. Это относится и к программным реализациям, и к аппаратным — так, процессоры семейства x86 перед исполнением инструкций машинного языка выполняют их декодирование, выделяя в опкодах поля операндов (регистров, адресов памяти, непосредственных значений), разрядности и т. п.
Язык программирования Python. Часть 2. Компиляторы и Интерпретаторы
При взаимодействии человека и компьютера мостиком выступает высокоуровневый язык программирования. Высокоуровневые языки программирования создаются такими, чтобы писать на их было удобно человеку, компьютер такие языки не понимает. Компьютер — вычислительная машина, для которой понятны только наборы из нулей и единиц.
Так как же превратить наш исходный код во что-то, что могут прочитать компьютеры? Совсем, как в реальной жизни, для перевода с одного языка на другой обратиться к переводчикам. В программировании их называют трансляторами – это компилятор и интерпретатор. Оба делают перевод исходного кода в машинный, но делают это по-разному.
Компилятором называется транслятор, который получает файл с кодом, расшифровывает его и переводит в машинные коды целиком. Получается исполняемый файл, который можно запустить внутри той или иной операционной системы (например, исполняемый файл .exe для запуска в MS Windows). В результате работы компилятора пользователь может пользоваться программой, но не может прочитать ее исходный код.
Первый готовый к работе Компилятор был представлен в 1952 году Грейс Хоппер — американским учёным и коммодором флота США.
Интерпретатор – это транслятор, который запускает код построчно. Интерпретатор получает команду, написанную на языке программирования, читает ее и сразу же выполняет. Условно его работа может выполняться в интерактивном или пакетном режимах.
Интерактивный режим еще называют циклом «чтения – исполнения – печати» (Read-eval-print loop или REPL). Пользователь пишет в консоли какую-то команду и как только нажимает клавишу Enter, команда выполняется. Такой режим используют для быстрых подсчетов, отправки запросов и других действий, которым достаточно одной команды.
Пакетный режим используется для более крупных задач, которые неудобно писать построчно и выполнять сразу же. Пользователь пишет код в файле и сохраняет его с нужным расширением. Интерпретатор получает файл, построчно считывает написанный там код и выполняет его.
Первый Интерпретатор был создан в 1958 году Стивом Расселом — американским ученым-программистом, наиболее известным благодаря созданию «Spacewar!», одной из самых ранних видеоигр.
Интерпретатор можно сравнить с синхронным переводчиком, который сразу же озвучивает перевод. А компилятор — с литературным переводчиком, который переводит тексты, а потом отправляет перевод тем, кто будет с ним работать.
Компилятор и интерпретатор делают одну и ту же работу и у вас может возникнуть логичный вопрос — а что же лучше? Процесс компиляции или интерпретации? Тут нет очевидного ответа, ведь если бы он был, то один из этих трансляторов давно бы перестал существовать. У каждого из них есть свои преимущества и недостатки.

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

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

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

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

С помощью интерпретатора проще добавить дополнительные функции, не расширяя язык программирования. Также их проще переписать или перекомпилировать для новых платформ.
Написание же компилятора для процессора требует добавления множества функций, или полной переработки. Но как только компилятор написан, можно скомпилировать много интерпретаторов и на выходе получить перспективный язык.
Что все это значит для языка программирования Python?
Python является интерпретируемым высокоуровневым языком программирования. Это означает, что он наследует все описанные выше преимущества и недостатки процесса интерпретации. Отметим, что это вовсе не делает Python, как и любой другой язык программирования, «хорошим» или «плохим». Каждый язык индивидуален и добавляет свои уникальные особенности к обоим наборам.
А о том, каков именно язык программирования Python, мы расскажем в следующей статье!
Следите за продолжением…

Наш адрес: г. Могилев, ул. Чайковского, дом 11 (БЦ «БРИКС»), офис 214
Компиляторы и трансляторы кода Python

Компьютерная программа, переводящая код, написанный на одном языке программирования, в другой, называется транслятором, а из языка в машинный код — компилятором. Python возглавляет фракцию самых быстрорастущих языков программирования. Таким образом, нет недостатка в компиляторах и трансляторах для Python, которые могут удовлетворить различные потребности проекта.
Введение
В первую очередь, компиляторы — это программы, которые преобразуют исходный код, написанный на языке программирования высокого уровня, в язык программирования более низкого уровня, такой как машинный код, для создания исполняемой программы.
Хотя компилятор CPython является де-факто компилятором для Python, поскольку он относится к эталонной реализации Python, т.е. CPython, существует несколько других компиляторов Python, которые разработчики любят использовать.
Давайте рассмотрим 7 лучших компиляторов для Python.
Brython — реализация Python для браузера

Brython, отмеченный как «реализация Python 3 для веб-программирования на стороне клиента», является популярным компилятором, который преобразует код Python в код JavaScript.
Адаптированный к среде HTML5, Brython поставляется с интерфейсом для объектов и событий DOM. Brython — это сокращение от Browser Python. Он может похвастаться широким функционалом, начиная от создания простых элементов документа и перетаскивания до трехмерной навигации. Компилятор Python работает в Firefox намного лучше, чем в Google Chrome. Brython поддерживает не только все современные настольные браузеры, но и так же мобильные веб-браузеры. Компилятор Python поставляется с консолью JavaScript, которую можно использовать для оценки времени выполнения некоторой программы JS по сравнению с ее эквивалентом Python в редакторе. Согласно официальному блогу Пьера Квентеля, создателя и ведущего разработчика Brython, Brython намного быстрее Pypy.js и Skulpt. В некоторых случаях компилятор Python работает даже быстрее, чем эталонная реализация Python, то есть CPython. Brython поддерживает большую часть синтаксиса Python 3, например генераторы и импорт библиотек. Он также обеспечивает поддержку нескольких модулей, принадлежащих дистрибутиву CPython, и поставляется с библиотеками для взаимодействия с элементами и событиями DOM. Поддержка последних спецификаций HTML5 / CSS3 также доступна в Brython, а компилятор Python может использовать популярные CSS-фреймворки, такие, как BootStrap и LESS.
Nuitka — компилятор Python написанный на языке Python

Nuitka — это компилятор Python, написанный на языке Python.
Официальный сайт проекта: https://nuitka.net
Nuitka берет код Python и компилирует его в исходный код C / C++ или исполняемые файлы. Его можно использовать для разработки автономных программ, даже если на вашем компьютере не запущен Python.
Написанная полностью на Python, Nuitka позволяет использовать различные библиотеки Python и модули расширения.
Компилятор доступен для платформ FreeBSD, Linux, macOS X, NetBSD и Windows и находится под лицензией Apache License версии 2.0. Nuitka также доступна с Anaconda для тех, кто предпочитает ее для разработки проектов, связанных с наукой о данных и машинным обучением.
Платформа для разработки PyJS

Для тех, кто хочет писать код Python и выполнять его в веб-браузерах, PyJS — один из вариантов.
Официальный сайт проекта: http://pyjs.org
Компилятор PyJS переводит код Python в эквивалентный код JavaScript, чтобы он мог выполняться внутри веб-браузера. Важным аспектом PyJS является то, что он поставляется с фреймворком AJAX, который заполняет пробелы, оставшиеся между поддержкой JS и DOM, доступной для различных веб-браузеров. Чтобы сгенерировать эквивалентный код JS, PyJS использует абстрактное синтаксическое дерево Python.
Исходный код веб-приложения Python можно запустить как автономное настольное приложение (которое работает под Python) с помощью модуля PyJS Desktop. Интересно, что в некоторых системах Unix предустановлены версии PyJS и PyJS Desktop. Несмотря на различия между Python и JavaScript, большинство типов данных в двух популярных языках программирования идентичны.
При использовании PyJS некоторые типы данных Python преобразуются в настраиваемые объекты, например списки. PyJS — легкое приложение. Кроме того, он может использоваться непосредственно из веб-браузера и позволяет запускать программы из JS-консоли веб-браузера. Компилятор PyJS также предлагает поддержку во время выполнения.
Поскольку код Python можно встраивать в код JS, разработчики JS могут проектировать и разрабатывать приложения в чисто объектно-ориентированной парадигме с использованием PyJS.
Shed Skin — экспериментальный компилятор для Python

Еще один популярный компилятор Python — Shed Skin.
Он преобразует статически типизированную программу Python в эквивалентную программу на чистом C++. Статически типизированный означает, что используемые переменные должны относиться только к одному типу данных. Shed Skin не поддерживает некоторые общие функции, такие как использование вложенных функций и определение функций, которые принимают различное количество аргументов. Только некоторые стандартные функции библиотеки Python доступны для использования с Shed Skin. В качестве экспериментальной программы компилятора Shed Skin предлагает перевести статически типизированные программы Python в оптимизированный код C++ с несколькими ограничениями. Кроме того, Shed Skin не может масштабироваться более, чем на несколько тысяч строк кода. Если в вашем коде есть неподдерживаемый модуль Shed Skin, вы должны удалить его и добавить простой код для воспроизведения желаемой функциональности.
Несмотря на свой экспериментальный статус, Shed Skin может создавать автономные программы или модули расширения, которые можно импортировать и использовать в больших программах Python. Самым большим преимуществом использования Shed Skin является то, что он позволяет значительно повысить производительность. Это главным образом связано с тем, что компилятор Python переопределил встроенные типы данных Python в свой собственный набор классов, реализованный в эффективном коде C++.
Skulpt — полностью браузерная реализация Python

Написанный на JavaScript и доступный по лицензии MIT, Skulpt предлагает настоящую среду, в которой скомпилированный код выполняется в форме JS.
Официальный сайт проекта: https://skulpt.org
Поскольку Skulpt — это реализация Python в браузере, нет необходимости в дополнительной обработке, плагинах или поддержке на стороне сервера, необходимых для запуска Python в веб-браузере. Любой код Python, написанный в Skulpt, выполняется непосредственно в веб-браузере. Skulpt — хороший вариант для разработчиков, которые хотят создать веб-приложение, позволяющие пользователям запускать программы Python внутри веб-браузера, обеспечивая безопасность фоновых сервисов. Популярный компилятор Python также можно легко встроить в существующий блог или веб-страницу. Для индивидуальной интеграции в HTML можно добавить код Skulpt. Вы также можете научить Skulpt импортировать свои собственные модули для большего контроля. Хотя Skulpt переводит код Python в код JS, он не облегчает выполнение последнего.
Transcrypt — быстрый транслятор кода Python в JavaScript

Еще один популярный компилятор Python — Transcrypt. Он позволяет скомпилировать довольно обширное подмножество Python в компактный, читаемый и простой для отладки код JavaScript.
Компилятор Python следует упрощенному и мощному синтаксису, не требуя дополнительных расширений. Transcrypt прекомпилирует в быстрый, читаемый JS-код, который можно отлаживать из исходного кода Python с помощью исходных карт. Облегченный компилятор обеспечивает поддержку нарезки с помощью матрицы [i: j: k] и векторных операций с операторами +, -, * и /. Линтер, минификатор и валидатор статического типа встроены в Transcrypt. Таким образом, компилятор Python улучшает взаимодействие команды, работающей над полномасштабными проектами. Помимо беспрепятственного доступа к любой JS-библиотеке, Transcrypt также может работать поверх Node.js.
Благодаря поддержке иерархических модулей, локальных классов и множественного наследования Transcrypt может похвастаться гибкой и стабильной общей структурой.
WinPython — версия Python адаптированная для Windows

WinPython — это дистрибутив Python, специально созданный для операционной системы Windows.
Более ранние версии CPython не были оптимизированы под Windows и, как таковые, содержали много ошибок. WinPython был инкубирован как решение проблемы. Хотя нынешние версии CPython очень стабильны в операционной системе Windows, WinPython имеет несколько эксклюзивных функций. Поскольку WinPython является автономным дистрибутивом для Python, вам нужно только загрузить и распаковать его, чтобы начать работу. WinPython также поставляется с некоторыми из самых популярных библиотек Python для науки о данных и машинного обучения, таких как NumPy, Pandas и SciPy. Следовательно, вы можете сразу же работать с этими библиотеками Python.
WinPython поставляется с множеством встроенных функций, которые в большинстве случаев не требуются, например, компилятор C и C ++. Это может быть серьезным ограничением, поскольку нет возможности выбрать и загрузить только те функции, которые необходимы. Тем не менее, WinPython доступен в варианте нулевого пакета, который поставляется только с компилятором Python и не более того.
Заключение
На этом завершается данный список из семи лучших компиляторов Python. Поскольку каждый из них разработан с учетом конкретных требований, вы можете использовать их для удовлетворения различных потребностей. В программировании, чем больше программист знает, тем лучше.