М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 11
Текст из файла (страница 11)
Обычно он позиционируется как объектно-ориентированный язык сценариев – такое определение смешивает поддержку ООП с общей ориентацией на сценарии. Действительно, для обозначенияфайлов с программным кодом на языке Python программисты часто используют слово «сценарий» вместо слова «программа». В этой книге термины «сценарий» и «программа» рассматриваются как взаимозаменяемые с некоторымпредпочтением термина «сценарий» для обозначения простейших программ,помещающихся в единственный файл, и термина «программа» для обозначения более сложных приложений, программный код которых размещаетсяв нескольких файлах.Термин «язык сценариев» имеет множество различных толкований.
Некоторые предпочитают вообще не применять его к языку Python. У большинстватермин «язык сценариев» вызывает три разных ассоциации, из которых одниболее применимы к языку Python, чем другие:Командные оболочкиИногда, когда кто-то слышит, что Python – это язык сценариев, то представляет себе Python как инструмент для создания системных сценариев. Такиепрограммы часто запускаются из командной строки с консоли и решаюттакие задачи, как обработка текстовых файлов и запуск других программ.Программы на языке Python способны решать такие задачи, но это лишьодна из десятков прикладных областей, где может применяться Python.Это не только язык сценариев командной оболочки.Управляющий языкДругие пользователи под названием «язык сценариев» понимают «связующий» слой, который используется для управления другими прикладнымикомпонентами (то есть для описания сценария работы).
Программы на языке Python действительно нередко используются в составе крупных приложений. Например, при проверке аппаратных устройств программы на языке Python могут вызывать компоненты, осуществляющие низкоуровневыйдоступ к устройствам. Точно так же программы могут запускать программ-Все хорошо, но есть ли у него недостатки?45ный код на языке Python для поддержки настройки программного продукта у конечного пользователя, что ликвидирует необходимость поставлятьи пересобирать полный объем исходных текстов.Простота языка Python делает его весьма гибким инструментом управления.
Тем не менее технически – это лишь одна из многих ролей, которыеможет играть Python. Многие программисты пишут на языке Python автономные сценарии, которые не используют какие-либо интегрированныекомпоненты. Это не только язык управления.Удобство в использованииПожалуй, лучше всего представлять себе термин «язык сценариев» какобозначение простого языка, используемого для быстрого решения задач.Это особенно верно, когда термин применяется к языку Python, которыйпозволяет вести разработку гораздо быстрее, чем компилирующие языкипрограммирования, такие как C++.
Ускоренный цикл разработки способствует применению зондирующего, поэтапного стиля программирования,который следует попробовать, чтобы оценить по достоинству.Не надо заблуждаться, Python предназначен не только для решения простых задач. Скорее, он упрощает решение задач благодаря своей простотеи гибкости. Язык Python имеет небольшой набор возможностей, но он позволяет создавать программы неограниченной сложности. По этой причинеPython обычно используется как для быстрого решения тактических, таки для решения долговременных, стратегических задач.Итак, является ли Python языком сценариев? Ответ зависит от того, к комуобращен вопрос. Вообще термин «создание сценариев», вероятно, лучше использовать для описания быстрого и гибкого способа разработки, который поддерживается языком Python, а не для описания прикладной области программирования.Все хорошо, но есть ли у него недостатки?После 17 лет работы с языком Python и 12 лет преподавания единственный недостаток, который мне удалось обнаружить, – это скорость выполнения программ, которая не всегда может быть такой же высокой, как у программ, написанных на компилирующих языках программирования, таких как C или C++.Подробнее о концепциях реализации мы поговорим ниже в этой книге.
В двухсловах замечу, что в современной реализации Python компилирует (то естьтранслирует) инструкции исходного программного кода в промежуточноепредставление, известное как байт-код, и затем интерпретирует этот байт-код.Байт-код обеспечивает переносимость программ, поскольку это платформонезависимый формат. Однако из-за того что Python не создает двоичный машинный код (например, машинные инструкции для микропроцессора Intel), некоторые программы на языке Python могут работать медленнее своих аналогов,написанных на компилирующих языках, таких как C.Будет ли вас когда-нибудь волновать разница в скорости выполнения программ, зависит от того, какого рода программы вы пишете.
�����������������Python�����������многократно подвергался оптимизации и в отдельных прикладных областях программный код на этом языке отличается достаточно высокой скоростью выполнения.46Глава 1. Python в вопросах и ответахКроме того, когда в сценарии Python делается что-нибудь «значительное», например обрабатывается файл или конструируется графический интерфейс,ваша программа фактически выполняется со скоростью, которую способендать язык C, потому что такого рода задачи решаются компилированнымс языка С программным кодом, лежащим в недрах интерпретатора Python.
Гораздо важнее, что преимущество в скорости разработки порой важнее потерискорости выполнения, особенно если учесть быстродействие современных компьютеров.Тем не менее даже при высоком быстродействии современных процессоровостаются такие области, где требуется максимальная скорость выполнения.Реализация математических вычислений и анимационных эффектов, например, часто требует наличия базовых вычислительных компонентов, которыерешают свои задачи со скоростью языка C (или еще быстрее).
Если вы работаете как раз в такой области, вы все равно сможете использовать Python, достаточно лишь выделить из приложения компоненты, требующие максимальнойскорости работы, в виде компилированных расширений и связать их системойсценариев на языке Python.В этой книге мы не будем обсуждать расширения слишком подробно, но этоодин из примеров, когда ������������������������������������������������Python������������������������������������������может играть упоминавшуюся выше роль языка управления.
Типичным примером такой двуязычной стратегии может служить расширение NumPy, содержащее реализацию математических вычислений для ������������������������������������������������������������Python������������������������������������������������������; благодаря комбинированию компилированных и оптимизированных библиотек расширения с языком Python NumPy превращает Pythonв мощный, эффективный и удобный инструмент математических вычислений.Возможно, вам никогда не придется создавать подобные расширения, но выдолжны знать, что в случае необходимости они могут предоставить в ваше распоряжение мощный механизм оптимизации.Кто в наше время использует Python?К моменту, когда я пишу эти строки, наиболее правдоподобной оценкой числа пользователей Python является число, близкое 1 миллиону человек во всеммире (с небольшой погрешностью).
Эта оценка основана на различных статистических показателях, таких как количество загрузок и результаты опросовразработчиков. Дать более точную оценку достаточно сложно, потому что ���Python является открытым программным обеспечением – для его использованияне требуется проходить лицензирование. Более того, Python по умолчаниювключается в состав дистрибутивов ����������������������������������������Linux�����������������������������������, поставляется вместе с компьютерами �����������������������������������������������������������������Macintosh��������������������������������������������������������и некоторыми другими программными и аппаратными продуктами, что существенно затрудняет оценку числа пользователей.Вообще же количество пользователей Python значительно больше и вокругнего сплотилось очень активное сообщество разработчиков.
Благодаря тому,что ���������������������������������������������������������������������Python���������������������������������������������������������������появился более 19 лет тому назад и получил широкое распространение, он отличается высокой стабильностью и надежностью. Python����������������������используется не только отдельными пользователями, он также применяется компаниями для создания продуктов, приносящих настоящую прибыль. Например:Кто в наше время использует Python?47•• Компания Google широко использует Python в своей поисковой системеи оплачивает труд создателя Python.•• Служба коллективного использования видеоматериалов ����������������YouTube���������в значительной степени реализована на языке Python.•• Популярная программа BitTorrent����������������������������������������������������������������������������������для обмена файлами в пиринговых сетях (peer-to-peer) написана на языке Python.•• Популярный веб-фреймворк App Engine от компании Google используетPython в качестве прикладного языка программирования.•• Такие компании, как EVE Online и Massively Multiplayer Online Game(MMOG), широко используют Python в своих разработках.•• Мощная система трехмерного моделирования и создания мультипликации Maya поддерживает интерфейс для управления из сценариев на языкеPython.•• Такие компании, как Intel, Cisco, Hewlett-Packard, Seagate, Qualcommи IBM, используют Python для тестирования аппаратного обеспечения.•• Такие компании, как Industrial Light & Magic, Pixar и другие, используютPython в производстве анимационных фильмов.•• Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python дляпрогнозирования финансового рынка.•• NASA, Los Alamos, Fermilab, JPL и другие используют Python для научныхвычислений.•• iRobot использует Python в разработке коммерческих роботизированныхустройств.•• ESRI использует ������������������������������������������������������Python������������������������������������������������в качестве инструмента настройки своих популярных геоинформационных программных продуктов под нужды конечногопользователя.•• NSA использует Python для шифрования и анализа разведданных.•• В реализации почтового сервера IronProt используется более 1 миллионастрок программного кода на языке Python.•• Проект «ноутбук каждому ребенку» (One Laptop Per Child, OLPC) строитсвой пользовательский интерфейс и модель функционирования на языкеPython.И так далее.
Пожалуй, единственное, что объединяет все эти компании, – этото, что для решения широкого спектра задач прикладного программированияиспользуется язык программирования Python. Универсальная природа языкаобеспечивает возможность его применения в самых разных областях. Фактически с определенной долей уверенности можно утверждать, что Python такили иначе используется практически каждой достаточно крупной организацией, занимающейся разработкой программного обеспечения, – как для решения краткосрочных тактических задач, так и для разработки долгосрочныхстратегических проектов.