Математический анализ. 3е издание
Скачать 4.86 Mb.
|
В чем сильные стороны Python? Естественно – это вопрос разработчика. Если у вас еще нет опыта про граммирования, язык следующих нескольких разделов может пока заться немного непонятным, но не волнуйтесь, мы будем рассматри вать все эти термины позднее, в ходе изложения материала. А для раз работчиков ниже приводится краткое введение в некоторые особенно сти языка Python. Он объектноориентированный Python изначально является объектноориентированным языком про граммирования. Его объектная модель поддерживает такие понятия, как полиморфизм, перегрузка операторов и множественное наследова ние, однако, учитывая простоту синтаксиса и типизации Python, ООП не вызывает сложностей в применении. Если эти термины вам непо В чем сильные стороны Python? 47 нятны, позднее вы обнаружите, что изучать Python гораздо легче, чем другие объектноориентированные языки программирования. Объектноориентированная природа Python, являясь мощным средст вом структурирования программного кода многократного пользова ния, кроме того, делает этот язык идеальным инструментом поддерж ки сценариев для объектноориентированных языков, таких как C++ и Java. Например, при наличии соответствующего связующего про граммного кода программы на языке Python могут использовать меха низм наследования от классов, реализованных на C++, Java и C#. Как бы то ни было, но ООП не является обязательным в Python; вы сможете стать опытным программистом и при этом не быть специали стом по ООП. Как и C++, Python поддерживает оба стиля программи рования – процедурный и объектноориентированный. Объектноори ентированные механизмы могут использоваться по мере необходимо сти. Это особенно удобно при решении тактических задач, когда отсут ствует фаза проектирования. Он свободный Python может использоваться и распространяться совершенно бес платно. Как и в случае с другими открытыми программными продук тами, такими как Tcl, Perl, Linux и Apache, вы сможете получить в Ин тернете полные исходные тексты реализации Python. Нет никаких ог раничений на его копирование, встраивание в свои системы или распро странение в составе ваших продуктов. Фактически вы сможете даже продавать исходные тексты Python, если появится такое желание. Но «свободный» не означает «не поддерживается». Напротив, сообще ство сторонников Python в Интернете отвечает на вопросы пользовате лей со скоростью, которой могли бы позавидовать большинство разра ботчиков коммерческих продуктов. Кроме того, свободное распростра нение кода способствует расширению команды экспертов по реализа ции. И хотя предоставляемая возможность изучать или изменять реализацию языка не у всех вызывает восторг, тем не менее наличие последней инстанции в виде исходных текстов придает уверенность. Вы уже не зависите от прихотей коммерческого производителя. Разработка Python ведется сообществом, усилия которого координи руются в основном через Интернет. В состав сообщества входит созда тель Python – Гвидо ван Россум (Guido van Rossum), получивший офи циальное звание Пожизненного Великодушного Диктатора (Benevo lent Dictator for Life, BDFL) Python, плюс тысячи других разработчи ков. Изменения в языке принимаются только после прохождения формальной процедуры (известной как «программа совершенствова ния продукта», или PEP) и тщательно проверяются формальной систе мой тестирования и самим Пожизненным Диктатором. Это обеспечи вает большую степень консерватизма Python в отношении изменений по сравнению с некоторыми другими языками программирования. 48 Глава 1. Python в вопросах и ответах Он переносим Стандартная реализация языка Python написана на переносимом ANSI C, благодаря чему он компилируется и работает практически на всех основных платформах. Например, программы на языке Python могут выполняться на самом широком спектре устройств, начиная от наладонных компьютеров (PDA) и заканчивая суперкомпьютерами. Ниже приводится далеко не полный список операционных систем и устройств, где можно использовать Python: • Операционные системы Linux и UNIX • Microsoft Windows и DOS (все современные версии) • Mac OS (обе разновидности: OS X и Classic) • BeOS, OS/2, VMS и QNX • Системы реального времени, такие как VxWorks • Суперкомпьютеры Cray и ЭВМ производства компании IBM • Наладонные компьютеры, работающие под управлением PalmOS, PocketPC или Linux • Сотовые телефоны, работающие под управлением операционных систем Symbian и Windows Mobile • Игровые консоли и iPod • И многие другие Помимо самого интерпретатора языка в составе Python распространя ется стандартная библиотека модулей, которая также реализована пе реносимым способом. Кроме того, программы на языке Python компи лируются в переносимый байткод, который одинаково хорошо рабо тает на любых платформах, где установлена совместимая версия Py thon (подробнее об этом будет рассказываться в следующей главе). Все это означает, что программы на языке Python, использующие основ ные возможности языка и стандартные библиотеки, будут работать оди наково и в Linux, и в Windows, и в любых других операционных систе мах, где установлен интерпретатор Python. В большинстве реализаций Python под определенные операционные системы имеется также под держка специфических механизмов этих систем (например, поддержка COM в Windows), но ядро языка Python и библиотеки работают совер шенно одинаково в любой системе. Как уже говорилось выше, Python включает в себя средства создания графического интерфейса Tk GUI под названием Tkinter, что позволяет программам на языке Python созда вать графический интерфейс, совместимый со всеми основными графи ческими платформами без индивидуальной программной настройки. Он мощный С точки зрения функциональных возможностей Python можно назвать гибридом. Его инструментальные средства укладываются в диапазон В чем сильные стороны Python? 49 между традиционными языками сценариев (такими как Tcl, Scheme и Perl) и языками разработки программных систем (такими как C, C++ и Java). Python обеспечивает простоту и непринужденность языка сце нариев и мощь, которую обычно можно найти в компилирующих язы ках. Превышая возможности других языков сценариев, такая комби нация делает Python удобным средством разработки крупномасштаб ных проектов. Для предварительного ознакомления ниже приводится список основных возможностей, которые есть в арсенале Python: Динамическая типизация Python сам следит за типами объектов, используемых в программе, благодаря чему не требуется писать длинные и сложные объявле ния в программном коде. В действительности, как вы увидите в гла ве 6, в языке Python вообще отсутствуют понятие типа и необходи мость объявления переменных. Так как программный код на языке Python не стеснен рамками типов данных, он автоматически может обрабатывать целый диапазон объектов. Автоматическое управление памятью Python автоматически распределяет память под объекты и освобо ждает ее («сборка мусора»), когда объекты становятся ненужными. Большинство объектов могут увеличивать и уменьшать занимае мый объем памяти по мере необходимости. Как вы узнаете, Python сам проиводит все низкоуровневые операции с памятью, поэтому вам не придется беспокоиться об этом. Модульное программирование Для создания крупных систем Python предоставляет такие возмож ности, как модули, классы и исключения. Они позволяют разбить систему на составляющие, применять ООП для создания программ ного кода многократного пользования и элегантно обрабатывать возникающие события и ошибки. Встроенные типы объектов Python предоставляет наиболее типичные структуры данных, та кие как списки, словари и строки, в виде особенностей, присущих самому языку программирования. Как вы увидите позднее, эти ти пы отличаются высокой гибкостью и удобством. Например, встро енные объекты могут расширяться и сжиматься по мере необходи мости, могут комбинироваться друг с другом для представления данных со сложной структурой и многое другое. Встроенные инструменты Для работы со всеми этими типами объектов в составе Python имеют ся мощные и стандартные средства, включая такие операции, как конкатенация (объединения коллекций), получение срезов (извлече ние части коллекции), сортировка, отображение и многое другое. 50 Глава 1. Python в вопросах и ответах Библиотеки утилит Для выполнения более узких задач в состав Python также входит большая коллекция библиотечных инструментов, которые поддер живают практически все, что только может потребоваться, – от по иска с использованием регулярных выражений до работы в сети. Библиотечные инструменты языка Python – это то место, где вы полняется большая часть операций. Утилиты сторонних разработчиков Python – это открытый программный продукт, и поэтому разработ чики могут создавать свои, предварительно скомпилированные, инструменты поддержки задач, решить которые внутренними сред ствами невозможно. В Сети вы найдете свободную реализацию под держки COM, средств для работы с изображениями, распределен ных объектов CORBA, XML, механизмов доступа к базам данных и многое другое. Несмотря на широкие возможности, Python имеет чрезвычайно про стой синтаксис и архитектуру. В результате мы имеем мощный инст румент программирования, обладающий простотой и удобством, при сущими языкам сценариев. Он соединяемый Программы на языке Python с легкостью могут «склеиваться» с ком понентами, написанными на других языках программирования. На пример, прикладной интерфейс C API в Python позволяет программам на языке C вызывать и быть вызываемыми из программ на языке Py thon. Из этого следует, что вы можете расширять возможности про грамм на языке Python и использовать программный код на языке Py thon в других языковых средах и системах. Возможность смешивать Python с библиотеками, написанными на та ких языках, как C или C++, например, превращает его в удобный язык для создания интерфейсов к этим библиотекам и в средство на стройки программных продуктов. Как уже говорилось выше, все это делает Python прекрасным средством разработки прототипов – систе ма может быть сначала реализована на языке Python, чтобы повысить скорость разработки, а позднее, в зависимости от требований к произ водительности системы, по частям перенесена на язык C. Он удобен Чтобы запустить программу на языке Python, достаточно просто ввести ее имя. Не требуется выполнять промежуточную компиляцию и связы вание, как это делается в языках, подобных C или C++. Интерпретатор Python немедленно выполняет программу, что позволяет программиро вать в интерактивном режиме и получать результаты сразу же после внесения изменений – в большинстве случаев вы сможете наблюдать В чем сильные стороны Python? 51 эффект изменения программы с той скоростью, с которой вы вводите изменения с клавиатуры. Безусловно, скорость разработки – это лишь один из аспектов удобства Python. Кроме того, он обеспечивает чрезвычайно простой синтаксис и набор мощных встроенных инструментов. Поэтому некоторые даже называют Python «исполняемым псевдокодом». Поскольку большая часть сложностей ликвидируется другими инструментами, програм мы на языке Python проще, меньше и гибче эквивалентных им про грамм, написанных на таких языках, как C, C++ и Java! Программирование на языке Python – это технический процесс, а не искусство Когда в начале 1990 годов Python впервые появился на сцене про граммного обеспечения, это породило чтото вроде конфликта ме жду сторонниками языка Python и другого популярного языка сценариев – Perl. Лично я считаю такие дебаты пустыми и бес смысленными – разработчики достаточно умны, чтобы самостоя тельно сделать выводы. Однако в моей преподавательской прак тике мне часто приходится слышать вопросы на эту тему, поэтому я считаю необходимым сказать несколько слов по этому поводу. В двух словах: все, что можно сделать на Perl, можно сделать и на Python, но при использовании Python вы еще сможете прочи+ тать свой программный код . Для большинства удобочитаемость программного кода на языке Python означает возможность много кратного его использования и простоту сопровождения, что дела ет Python отличным выбором для написания программ, которые не попадут в разряд написанных и сразу после отладки выбро шенных. Программный код на языке Perl легко писать, но слож но читать. Учитывая, что период жизни большинства программ длится много дольше, чем период их создания, многие усматрива ют в Python более эффективный инструмент программирования. Вообще говоря, история этого противоречия отражает опыт про ектировщиков двух языков программирования и подчеркивает некоторые из основных причин, по которым программисты от дают предпочтение языку Python. Создатель языка Python – ма тематик по образованию, и потому он создал язык, обладающий высокой степенью однородности – его синтаксис и набор воз можностей отличаются удивительной согласованностью. Более того, если говорить математическими терминами, язык Python обладает ортогональной архитектурой – большая часть вырази тельных возможностей языка следует из небольшого числа базо вых концепций. Как только программист схватывает суть поли морфизма в Python, все остальное становится для него мелочью. 52 Глава 1. Python в вопросах и ответах Создатель языка Perl, напротив, – лингвист, поэтому и язык от ражает его профессиональный опыт. В языке Perl одну и ту же задачу можно решить множеством способов, а языковые конст рукции взаимодействуют между собой контекстнозависимым, порой трудноуловимым способом, во многом напоминая естест венный язык общения. Как известно, девизом языка Perl явля ется выражение: «Всякую задачу можно решить более чем од ним способом». Учитывая это, можно сказать, что язык Perl и сообщество его пользователей исторически стремились к сво боде выражения мыслей при создании программного кода. Про граммный код одного программиста может радикально отли чаться от программного кода другого. И правда, искусство созда ния уникального хитросплетения инструкций всегда было пред метом гордости программистов на Perl. Однако любой, кто когдалибо занимался сопровождением про граммного кода, скажет вам, что свобода выражения хороша для искусства, но не для технологического процесса. В технологии нам требуется минимальный набор возможностей и высокая сте пень предсказуемости. Свобода выражения мыслей в техноло гии может превратить процесс сопровождения в непрекращаю щийся кошмар. По секрету говоря, уже не от одного пользовате ля Perl я слышал, что проще написать свой код, чем внести из менения в чужой. Когда художник пишет картину или ваяет скульптуру, он выра жает этим исключительно себя, свои эстетические побуждения. Он не предполагает, что картина или скульптура будет изме няться другим художником. Это важное различие между искус ством и технологическим процессом. Когда программист пишет сценарий, он пишет его не для себя самого. Более того, сценарий пишется даже не для компьютера. Хороший программист знает, что свой программный код он пишет для другого человека, кото рый будет вынужден читать его в ходе сопровождения и исполь зования. Если этот человек не сможет понять сценарий, он ста нет практически бесполезным в реальной жизни. Многие находят в этом самое четкое отличие Python от других языков сценариев, подобных языку Perl. Синтаксическая мо дель Python вынуждает пользователя писать удобочитаемый программный код, поэтому программы на языке Python лучше вписываются в полный цикл разработки программного обеспе чения. А такие свойства Python, как ограниченное число спосо бов взаимодействия, единообразие, закономерность и непроти воречивость способствуют появлению программного кода, кото рый будет использоваться после того, как будет написан. В чем сильные стороны Python? 53 Он прост в изучении Это самый важный аспект данной книги: по сравнению с другими язы ками программирования базовый язык Python очень легко запомина ется. В действительности вы сможете писать на языке Python более или менее значимые программы уже через несколько дней (или даже через несколько часов, если вы уже опытный программист). Это от личная новость для разработчиков, стремящихся изучить язык для применения его в своей работе, а также для конечных пользователей, которые применяют Python для настройки или управления программ ным продуктом. Сегодня многие системы исходят из того, что конеч ные пользователи могут быстро изучить Python в достаточной степе ни, чтобы самостоятельно создать свой собственный программный код настройки системы при незначительной поддержке со стороны разра ботчика. И хотя в Python имеются сложные инструменты программи рования, основа языка попрежнему остается простой для изучения как начинающими, так и опытными программистами. Он назван в честь Монти Пайтона (Monty Python) Это не имеет отношения к технической стороне дела, но похоже, что эта тайна, которую я собираюсь открыть, на удивление хорошо охра няется. Несмотря на то что на эмблеме Python изображена рептилия, правда в том, что создатель Python, Гвидо ван Россум (Guido van Ros sum), назвал свое детище в честь комедийного сериала «Летающий цирк Монти Пайтона» (Monty Python’s Flying Circus), который транс лировался по телеканалу BBC. Он большой поклонник Монти Пайтона (Monty Python), как и многие программисты (похоже, что есть какая то аналогия между разработкой программ и цирком). В конечном счете, в центре внимания языка Python находится ка чество программного кода, что само по себе повышает производи тельность программиста и приводит к появлению у него чувства удовлетворенности. Программисты, использующие язык Python, могут быть не менее творческими натурами и, как мы увидим позднее, в некоторых случаях этот язык также способен предло жить несколько способов решения одной и той же задачи. Тем не менее в своей основе Python стимулирует ведение разработки спо собами, часто недоступными в других языках сценариев. По крайней мере, это общее мнение многих из тех, кто принял Python на вооружение. Вы всегда должны сами оценивать подоб ные суждения при изучении Python. А приступить к изучению мы сможем в следующей главе. |