Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 11
Текст из файла (страница 11)
Более того, Python не принимает решения за вас,когда порядок взаимодействий неочевиден – предпочтение отдается явномуописанию, а не «волшебству». В терминах Python явное лучше неявного, а простое лучше сложного.1Помимо философии Python обладает такими возможностями, как модульноеи объектно-ориентированное программирование, что естественно упрощаетвозможность многократного использования программного кода. Посколькукачество находится в центре внимания самого языка Python, оно также находится в центре внимания программистов.Высокая скорость разработкиВо время бума развития Интернета во второй половине 1990-х годов было сложно найти достаточное число программистов для реализации программных проектов – от разработчиков требовалось писать программы со скоростью развития Интернета.
Теперь, в эпоху экономического спада, картина изменилась.1Чтобы получить более полное представление о философии Python, введите в командной строке интерпретатора команду import this (как это сделать, будет рассказанов главе 2). В результате будет активизировано «пасхальное яйцо», скрытое в недрахPython, – сборник принципов проектирования, лежащих в основе Python. Аббревиатура EIBTI, происходящая от фразы «explicit is better than implicit» («явное лучшенеявного»), превратилась в модное жаргонное словечко.44Глава 1. Python в вопросах и ответахСегодня от программистов требуется умение решать те же задачи меньшимчислом сотрудников.В обоих этих случаях Python блистал как инструмент, позволяющий программистам получать большую отдачу при меньших усилиях. Он изначальнооптимизирован для достижения высокой скорости разработки – простой синтаксис, динамическая типизация, отсутствие этапа компиляции и встроенныеинструментальные средства позволяют программистам создавать программыза меньшее время, чем при использовании некоторых других инструментов.В результате Python увеличивает производительность труда разработчика вомного раз по сравнению с традиционными языками программирования.
Этозначительное преимущество, которое с успехом может использоваться как вовремя бума, так и во время спада, а также во время любого промежуточногоэтапа развития индустрии программного обеспечения.Является ли Python «языком сценариев»?Python��������������������������������������������������������������� – это многоцелевой язык программирования, который зачастую используется для создания сценариев. Обычно он позиционируется как объектно-ориентированный язык сценариев – такое определение смешивает поддержку ООП с общей ориентацией на сценарии.
Действительно, для обозначенияфайлов с программным кодом на языке 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 миллиону человек во всеммире (с небольшой погрешностью). Эта оценка основана на различных статистических показателях, таких как количество загрузок и результаты опросовразработчиков.