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