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

Компилируемость vs Интерпретируемость#

Всем известно, что python является интерпретируемым языком программирования, а C/C++ — компилируемым. Снизу приводятся определения из Wikipedia (1 и 2):

Компилятор — программа, переводящая текст, написанный на языке программирования, в набор машинных кодов.

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

Однако, если пытаться углубиться и провести черту между интерпретируемыми и компилируемыми языками программирования, то оказывается, что не всё так просто. Например, существует интерпретатор для C++ cling, а некоторые интерпретаторы python (например, PyPy) и библиотеки для python (например, numba) осуществляют JIT-компиляцию исходного кода python в машинный код.

Тем не менее стандартный режим работы с C/C++ включает в себя этап компиляции, а наиболее распространенный стандартный интерпретатор CPython для python не поддерживает JIT -компиляцию. Поэтому, для того чтобы обрисовать разницу между компилируемостью и интерпретируемостью, воспользуемся этими языками в качестве примеров.

Компилятор C/С++ #

Цель компилятора — преобразовать текст программы на языке программирования высокого уровня ( C/C++ в данном случае) и в машинный код, который может быть исполнен целевой машинной непосредственно. Большинство современных компиляторов (например, gcc ) состоят из трех этапов в соответствии с следующей схемой.

../_images/Compiler_design.png

  • Первая часть (front end) просматривает файлы исходного кода на высокоуровневом языке программирования (например, файлы .cpp ), и в первую очередь осуществляет проверки: корректность синтаксиса, согласованность типов ( C/C++ статически типизированный язык) и т.п. Если обнаруживается ошибка, то генерируется ошибка компиляции. Если ошибок нет, то результатом работы первого блока является внутреннее (промежуточное) представление программы, которые абстрагировано от исходного высокоуровневого языка.
  • Вторая часть (middle end) принимает на вход это промежуточное представление, анализирует его и оптимизирует из соображений логики программы. Например, если какая-то ветвь программы недостижима, то она может быть выкинута, или, например, если компилятор обнаруживает способ переорганизовать вычисления, гарантирующий одновременно неизменный результат и меньшее время исполнения, то он может его применить в зависимости от настроек компиллятора. Однако, важно понимать, что на этом этапе ещё не учитывается информация об архитектуре целевой машины, и уже не учитывается информация об особенностях исходного языка программирования.
  • Третья часть (back end) принимает на вход оптимизированное промежуточное представление и транслирует его в машинный код для конкретной машины, попутно производя оптимизации, специфичные для архитектуры этой машины.

Такой трёх этапный процесс компиляции позволяет использовать один и тот же middle end для разных языков программирования и архитектур процессоров, меняя front end и back end.

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

Уже упоминалось, что существует несколько разных интерпретаторов для python , однако CPython является самым популярным их них с большим заделом. CPython — интерпретатор для python , написанный на языке C . Под установкой python чаще всего имеют в виду установку интерпретатора CPython .

CPython — программа, которая принимает на вход файл с исходным кодом на python и интерпретирует его по строкам сверху вниз. В процессе интерпретации тоже осуществляется трансляция исходного кода в более низкоуровневую форму, называемою байт-кодом. Байт-код представляет собой последовательность инструкций для виртуальной машинной python , которая входит в состав интерпретатора. Виртуальная машина python поддерживает более широкий набор инструкций, чем центральный процессор, и байт-код намеренно является гораздо более абстрактным, чем машинный код. Всё это с одной стороны заметно снижает возможности оптимизации, а с другой стороны обеспечивает более гибкую и динамическую природу языка.

Читайте также:  Найти подстроку строки php

Интерпретатор vs. компилятор#

  1. Требования к наличию транслятора:
    • компилятор требуется только на этапе компиляции программы. Когда программа скомпилирована, она может полноценно функционировать без наличия самого компилятора.
    • интерпретатор требуется при каждом запуске программы. Без интерпретатора запустить программу не удастся.
  2. Возможность оптимизации:
    • Так как компилятор анализирует весь исходный код программы целиком, то он может оценить сценарии её работы и сгенерировать эффективный машинный код.
    • Так как интерпретатор видит код программы кусками, то он не может оценить возможные сценарии её работы и возможности оптимизации сводятся к минимуму.
  3. Интерактивность:
    • Так как компилятор требует весь исходный код программы целиком, то возможности интерактивного взаимодействия сильно ограничены.
    • Так как интерпретатор обрабатывает исходный код кусками, то открываются возможности к интерактивной подаче новых команд на лету.
  4. Кроссплатформенность:
    • компилятор генерирует машинный код, который оптимизируется с учетом особенностей операционной системы и архитектуры целевой платформы. В связи с этим требуется отдельная компиляция исходного кода, чтобы сгенерировать машинный код под машину с отличной архитектурой.
    • Исходный код на python запускается внутри виртуальной машины python (интерпретатора), которая изначально компилируется для работы на определенной платформе. За счет этого в подавляющем большинстве случаев программист может абстрагироваться от особенностей операционной системы и архитектуры целевой платформы.

Источник

Топ-15 компиляторов Python — онлайн и офлайн

Топ-15 компиляторов Python — онлайн и офлайн

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

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

Python — это популярный язык, во многом потому, что он высокоуровневый, а значит, его проще освоить, чем, например, С. Высокоуровневые языки понятны человеку, но непонятны компьютеру, поэтому для работы с ними нужен компилятор. Эта программа переводит строки на Python в код, который может прочитать и выполнить машина. Чтобы писать и запускать код на Python с рабочего компьютера или в дороге на планшете, существуют разные онлайн- и офлайн-компиляторы для Python. Мы собрали полный список актуальных сервисов.

Читайте также:  Annotations support in java

dffsdd (3)

Лучшие компиляторы Python онлайн

Сохранять версии кода на GitHub и дорабатывать проект вместе с коллегами в режиме реального времени помогут онлайн-компиляторы. Доступ к ним будет у вас везде, где есть интернет.

Replit

Replit для Python — это онлайн-среда разработки, которая дает доступ к интерактивному редактору кода. Писать здесь проекты можно также на Java, Ruby, JavaScript. В редакторе можно открыть доступ к проекту всей команде, оставлять комментарии и работать над кодом вместе. Платформа интегрирована с GitHub, поэтому сохранять версии проекта можно быстро и просто. Также Replit дает возможность пользователям здесь же запустить и протестировать свои приложения, в том числе нейросети.

Anywhere Python

Онлайн-компилятор языка Python, который дает пользователю все функции полноценного редактора в браузере. Простые приложения, для которых не нужно много места и функционала, можно писать в этом редакторе бесплатно, самый дорогой тариф –– 10 долларов, дает по 2 ГБ памяти, возможность зарегистрировать собственный домен. В компиляторе предустановлено много библиотек для Python, есть интеграция с Git и другими открытыми репозиториями.

Trinket

Еще один онлайн-компилятор кода Python — Trinket. Его преимущество в том, что он позволяет открыть несколько вкладок и писать проекты параллельно. Платформу используют для обучения детей программированию на Python, у нее довольно простой интерфейс, установлены базовые библиотеки. Есть возможность запускать код и делиться им с командой.

IDEone

Онлайн-среда для Python, которая подойдет для быстрого тестирования простой программы. Он может переводить в машинный код более 60 языков программирования, но не богат разнообразием функционала. Например, в нем нельзя создавать новые файлы по ходу работы, а на максимальное время компиляции поставлены ограничения от 5 до 10 секунд.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов

Google Colab

Компилятор Python от Google. Дает возможность писать код программы онлайн, пользоваться библиотекой TensorFlow, тренировать нейросети и модели для аналитики данных. Код сохраняется в течение 12 часов, потом стирается, поэтому если компилятор нужен вам постоянно — нужно оформить подписку за 10 долларов.

Python Fiddle

Облачный компилятор кода Python, который не только позволяет использовать язык программирования онлайн, но и содержит большую базу знаний с примерами кода. Онлайн-среда разработки Fiddle поддерживает внешние библиотеки Python и дает возможность импортировать нужные данные из внешних источников по URL.

Офлайн-интерпретаторы и компиляторы для Python

Интерпретаторы работают так же, как компиляторы, только переводят код не целым блоком, а по одной строке. Ниже приводим список популярных реализаций Python, которые работают одновременно как компиляторы и интерпретаторы.

CPython

Компилятор и интерпретатор Python, написанный на языке C сообществом разработчиков языка. Это наиболее распространенная, классическая реализация Python. Эта платформа компилирует код Python в байт-код, а затем выполняет его. Подробнее о компиляторах, интерпретаторах и байт-кодах читайте в словарной статье.

Jython

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

Читайте также:  Aim cfg css 2013

PyJS

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

PyPy

Интерпретатор Python, который позволяет преодолеть ограничения скорости оригинальной версии языка. PyPy совместим с библиотеками NumPy, Selenium, Flack, Django и другими. По отзывам пользователей, пока интерпретатор может читать не весь синтаксис Python, но большую его часть, и ускоряет приложения в разы.

IronPython

Это реализация Python, которая связана с фреймворком .NET и дает веб-разработчикам возможность использовать одновременно библиотеки Python и .NET. IronPython — это динамический язык, который будет полезен, если вам нужно быстро разработать веб-приложение.

ActivePython

Десктопная среда разработки для Python от разработчика Active State подойдет для коммерческой разработки, где необходима высокая степень безопасности кода. Скачать ActivePython можно бесплатно, но пользоваться им с сохранением кода можно ограниченное количество времени. Этот интерпретатор Python поддерживает большое количество библиотек для Data Science и машинного обучения (NumPy, SciPy, Matplotlib, TensorFlow, Theano, Keras).

Nuitka

Офлайн-компилятор Python, который переводит код на язык уровня C, а затем в исполняемый файл. Онлайн-среда работает со всеми версиями Python, а последняя версия увеличила производительность программирования на 335%. У компилятора есть бесплатная версия, которую можно использовать для личных проектов, и коммерческая — для компаний.

Stackless Python

Это интерпретатор Python, который позволяет повысить производительность разработки при помощи многопоточного программирования. Многие интерпретаторы не поддерживают эту функцию, но Stackless дает возможность быстро написать программу с читаемым кодом, не усложняя ее структуру.

Советы для изучения Python

  • Начните с синтаксиса — это базовые правила, по которым пишутся команды на Python. Ваш главный источник — это официальная документация, затем можно обратиться к самоучителям для новичков, например, «Программируем на Python», или выбрать себе материалы из нашей большой подборки.
  • Выберите удобную IDE (среду разработки). Это программа, которая объединяет все необходимое для написания кода: редактор кода, инструменты для сборки, выполнения и отладки, систему контроля версий. Чтобы выбрать подходящую IDE, воспользуйтесь нашим гайдом.
  • Практикуйтесь. Пишите собственные простые программы, например, Telegram-боты, участвуйте в конкурсах, хакатонах и квестах для новичков, используйте интерактивные тренажеры.

Изучить Python, как и любой язык программирования, можно самостоятельно. Это потребует от вас усидчивости, постоянства и умения организовать собственные процессы обучения. Непросто, зато бесплатно. Облегчить и ускорить свой путь можно на платных курсах, например, «Fullstack-разработчик на Python» от Skillfactory, где вы будете получать актуальные знания от экспертов из индустрии и практиковаться на реальных задачах под руководством наставников.

Освойте Python с нуля. Подготовим к трудоустройству: дадим много практики, реальные проекты для портфолио, поможем с резюме. Лучшие студенты пройдут стажировки в проектах компаний-партнеров.

Источник

Оцените статью