На протяжении всей книги мы работали с программами, написанными на языке Python. Мы пользовались интерфейсами к внешним службам и писали многократно используемые инструменты на языке Python, но мы использовали только язык Python. Независимо от размера и практичности наших программ они до самого последнего символа были написаны на языке Python.
Для многих программистов и разработчиков сценариев это и есть конечная цель. Такое автономное программирование является одним из основных способов применения Python. Как мы видели, Python поставляется в пол ном комплек те — с интерфейсами к системным инструментам, протоколам Интернета, графическим интерфейсам, хранилищам данных и многим другим имеющимся средствам. Кроме того, для большого круга задач, с которыми мы столкнемся на практике, уже имеются готовые решения в мире открытого программного обеспечения. Система PIL, например, предоставляет возможность обрабатывать изображения в графических интерфейсах на основе библиотеки tkinter после простого запуска мастера установки.
Но для некоторых систем важнейшей характеристикой языка является возможность интеграции (или совместимость) с языком программирования C. На самом деле роль Python как языка расширений и интерфейсов в больших системах является одной из причин его популярности и того, что его часто называют «управляющим» языком. Его архитектура поддерживает гибрид ные системы, в которых смешаны компоненты, написанные на разных языках программирования. Так как у каждого языка есть свои сильные стороны, возможность отбирать и набирать компонент за компонентом является мощным методом. Python можно включать во все системы, где требуется простой и гибкий языковый инструмент, — полагаясь на сохранение скорости выполнения в случаях, когда это имеет значение.
Компилируемые языки, такие как C и C++, оптимизированы по скорости вы пол не ния, но программировать на них сложно и разработчикам, и, особенно, конечным пользователям, если им приходится адаптировать программы. Python оптимизирован по скорости разра бот ки, поэтому при использовании сценариев Python для управления или индивидуальной подгонки программных компонентов, написанных на C или C++, получаются быстрые и гибкие системы и резко ускоряется скорость разработки. Например, перенос отдельных компонентов программ с языка Python на язык C может увеличить скорость выполнения программ. Кроме того, системы, спроектированные так, что их подгонка возлагается на сценарии Python, не требуют поставки полных исходных текстов и изучения конечными пользователями сложных или специализированных языков.
В этой последней технической главе мы коротко познакомимся с инструментами, предназначенными для организации взаимодействий с программными компонентами, написанными на языке C. Кроме того, мы обсудим возможность использования Python в качестве встроенного языкового инструмента в других системах и поговорим об интерфейсах для расширения сценариев Python новыми модулями и типами, реализованными на языках программирования, совместимых с C. Помимо этого мы кратко рассмотрим другие технологии интеграции, менее связанные с языком C, такие как Jython.
Обратите внимание на слово «кратко» в предыдущем абзаце. Из-за того, что далеко не всем программистам на Python требуется владение этой темой; из-за того, что для этого требуется изучать язык C и порядок создания файлов с правилами сборки для утилиты make; и из-за того, что это заключительная глава и без того весьма объемной книги, в этой главе будут опущены подробности, которые можно найти и в комплекте стандартных руководств по языку Python, и непосредственно в исходных текстах самого языка Python. Вместо этого мы рассмотрим ряд простых примеров, которые помогут вам начать двигаться в этом направлении и продемонстрируют некоторые возможности для систем Python.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011