Разновидности модели выполнения
Прежде чем двинуться дальше, я должен заметить, что внутренний поток
выполнения, описанный в предыдущем разделе, отражает современную
стандартную реализацию интерпретатора Python, которая в действительности не
является обязательным требованием самого языка Python. Вследствие этого
модель выполнения склонна изменяться с течением времени. Фактически уже
существуют системы, которые несколько меняют картину, представленную на
рис. Давайте потратим несколько минут, чтобы ознакомиться с наиболее
заметными изменениями. Далее...
Производительность и скорость разработки Python 3
Читатели, имеющие опыт работы с компилирующими языками
программирования, такими как С и C++, могут заметить несколько отличий в модели
выполнения Python. Первое, что бросается в глаза, - это отсутствие этапа сборки,
или вызова утилиты «make»: программный код может запускаться сразу же,
как только будет написан. Второе отличие: байт-код не является двоичным
машинным кодом (например, инструкциями для микропроцессора Intel). Байт-
код - это внутреннее представление программ на языке Python.
По этой причине программный код на языке Python не может выполняться
так же быстро, как программный код на языке С или C++, о чем уже
говорилось в главе 1. Обход инструкций выполняет виртуальная машина, а не
микропроцессор, и чтобы выполнить байт-код, необходима дополнительная
интерпретация, инструкции которого требуют на выполнение больше времени,
чем машинные инструкции микропроцессора. С другой стороны, в отличие от
классических интерпретаторов, здесь присутствует дополнительный этап
компиляции - интерпретатору не требуется всякий раз снова и снова
анализировать инструкции исходного текста. В результате Python способен обеспечить
скорость выполнения где-то между традиционными компилирующими и
традиционными интерпретирующими языками программирования. Далее...
Виртуальная машина Python (PVM)
Как только программа будет скомпилирована в байт-код (или байт-код будет
загружен из существующих файлов .рус), он передается механизму под
названием виртуальная машина Python (PVM - для любителей аббревиатур).
Аббревиатура PVM выглядит более внушительно, чем то, что за ней стоит на самом
деле, - это не отдельная программа, которую требуется устанавливать.
Фактически PVM - это просто большой цикл, который выполняет перебор инструкций в байт-коде, одну за одной, и выполняет соответствующие им операции.
PVM - это механизм времени выполнения, она всегда присутствует в составе
системы Python и это тот самый программный компонент, который выполняет
ваши сценарии. Формально - это последняя составляющая того, что называют
«интерпретатором Python». Далее...
Python 3 - Компиляция в байт-код
Когда вы запускаете программу, практически незаметно для вас Python сначала компилирует ваш исходный текст (инструкции в файле) в формат, известный под названием байт-код. Компиляция - это просто этап перевода программы, а байт-код - это низкоуровневое, платформонезависимое представление исходного текста программы. Интерпретатор Python транслирует каждую исходную инструкцию в группы инструкций байт-кода, разбивая ее на отдельные составляющие. Такая трансляция в байт-код производится для повышения скорости - байт-код выполняется намного быстрее, чем исходные
инструкции в текстовом файле. В предыдущем абзаце вы могли заметить фразу - практически незаметно для вас. Если интерпретатор Python на вашем компьютере обладает правом записи, он будет сохранять байт-код вашей программы в виде файла с расширением .рус (.рус - это компилированный исходный файл .ру). Вы будете обнаруживать эти файлы после запуска программ по соседству с файлами, содержащими исходные тексты (то есть в том же каталоге).
Интерпретатор сохраняет байт-код для ускорения запуска программ. В следующий раз, когда вы попробуете запустить свою программу, Python загрузит файл .рус и минует этап компиляции - при условии, что исходный текст программы не изменялся с момента последней компиляции. Чтобы определить, необходимо ли выполнять перекомпиляцию, Python автоматически сравнит время последнего изменения файла с исходным текстом и файла с байт-кодом.Далее...
Выполнение программы на Python 3
С точки зрения программиста
Программа на языке Python, в самой простой форме, - это обычный текстовый файл, содержащий инструкции Python. Например, следующий файл, с именем scriptO.py, - это один из простейших сценариев на языке Python, который только можно придумать, но его официально можно назвать программой на языке Python:print('hello world')
pnntB ** 100)
Этот файл содержит две инструкции print, которые просто выводят строку (текст в кавычках) и результат числового выражения B в степени 100) в выходной поток. Не надо сейчас стараться вникнуть в синтаксис языка - в этой главе нас интересует лишь сам порядок запуска программ.
Позднее я расскажу об инструкции print и объясню, почему можно возвести число 2 в степень 100, не опасаясь получить ошибку переполнения.Далее...
Введение в интерпретатор Python
До сих пор я говорил о Python в основном как о языке программирования. Но в текущей реализации это еще и программный пакет , который называется интерпретатором. Интерпретатор - это такой модуль, который исполняет другие программы. Когда вы пишете код на языке Python, интерпретатор Python читает вашу программу и выполняет составляющие ее инструкции. По сути дела интерпретатор - это слой программной логики между вашим программным кодом и аппаратурой вашего компьютера.
В процессе установки пакета Python на компьютер создается ряд программных компонентов - как минимум, интерпретатор и библиотека поддержки. В зависимости от особенностей использования интерпретатор Python может иметь вид исполняемой программы или набора библиотек, связанных с другой программой. В зависимости от версии Python сам интерпретатор может быть реализован как программа на языке С, как набор классов Java или в каком-либо другом виде.
Независимо от используемой разновидности Python ваш программный код на этом языке всегда будет выполняться этим интерпретатором. А чтобы обеспечить такую возможность, вы должны установить интерпретатор Python на свой компьютер.
Что можно делать с помощью Python?
Будучи удачно спроектированным языком программирования Python прекрасно подходит для решения реальных задач из разряда тех, которые разработчикам приходится решать ежедневно. Он используется в самом широком спектре применений - и как инструмент управления другими программными компонентами, и для реализации самостоятельных программ. Фактически круг ролей, которые может играть Python как многоцелевой язык программирования, практически не ограничен: он может использоваться для реализации
всего, что угодно, - от веб-сайтов и игровых программ до управления роботами и космическими кораблями.
Однако сферу использования Python в настоящее время можно разбить на несколько широких категорий. Следующие несколько разделов описывают наиболее типичные области применения Python в наши дни, а также инструментальные средства, используемые в каждой из областей. У нас не будет возможности заняться исследованием инструментов, упоминаемых здесь. Если какие-то из них заинтересуют вас, обращайтесь на веб-сайт проекта Python за более
подробной информацией. Далее...
Какими преимуществами обладает Python перед другими языками?
Наконец, чтобы разместить язык Python среди уже, возможно, известных вам понятий, сравним Python с другими языками программирования, такими как Perl, Tel и Java. Ранее мы уже говорили о проблеме производительности, поэтому здесь мы сосредоточим свое внимание на функциональных возможностях.
Другие языки программирования также являются достаточно полезными ин-струментами, чтобы знать и использовать их, но многие программисты находят, что Python:
• Имеет более широкие возможности, чем Tel. Язык Python поддерживает «программирование в целом», что делает его применимым для разработки крупных систем.
• Имеет более четкий синтаксис и более простую архитектуру, чем Perl, что делает программный код более удобочитаемым, простым в сопровождении и снижает вероятность появления ошибок.
• Проще и удобнее, чем Java. Python - это язык сценариев, a Java унаследовала сложный синтаксис от таких языков программирования, как C++.
• Проще и удобнее, чем C++, но нередко он не может конкурировать с C++, поскольку, будучи языком сценариев, Python предназначен для решения другого круга задач. Далее...
В чем сильные стороны Python?
Естественно - это вопрос разработчика. Если у вас еще нет опыта
программирования, язык следующих нескольких разделов может показаться немного
непонятным, но не волнуйтесь, мы будем рассматривать все эти термины
позднее, в ходе изложения материала. А для разработчиков ниже приводится
краткое введение в некоторые особенности языка Python.
Python 3 объектно-ориентированный
Python изначально является объектно-ориентированным языкомпрограммирования. Его объектная модель поддерживает такие понятия, как
полиморфизм, перегрузка операторов и множественное наследование, однако,
учитывая простоту синтаксиса и типизации Python, ООП не вызывает сложностей
в применении. Если эти термины вам непонятны, позднее вы обнаружите, что
изучать Python гораздо легче, чем другие объектно-ориентированные языки
программирования. Далее...
Как осуществляется поддержка Python?
Будучи популярным и открытым проектом, Python имеет многочисленное
и активное сообщество разработчиков, которые решают проблемы и вносят
улучшения со скоростью, которую многие коммерческие разработчики сочли
бы поразительной (если не шокирующей). Деятельность разработчиков Python
координируется с помощью системы управления исходными текстами.
Изменения в языке принимаются только после прохождения формальной
процедуры (известной как «программа совершенствования продукта», или PEP)
и должны сопровождаться обширными наборами тестов для системы
регрессивного тестирования Python. Фактически в настоящее время работа над
Python мало чем отличается от работы над коммерческими программными
продуктами и очень сильно отличается от того, как велась разработка на первых
порах, когда достаточно было отправить создателю языка письмо по
электронной почте. Но самое главное преимущество проекта - огромное количество
добровольных помощников. Далее...