Главная страница
Навигация по странице:

  • Почему программисты используют Python

  • Качество программного обеспечения

  • Высокая скорость разработки

  • Является ли Python «языком сценариев»

  • Математический анализ. 3е издание


    Скачать 4.86 Mb.
    Название3е издание
    АнкорМатематический анализ
    Дата04.02.2022
    Размер4.86 Mb.
    Формат файлаpdf
    Имя файлаpython_01.pdf
    ТипДокументы
    #351981
    страница5 из 98
    1   2   3   4   5   6   7   8   9   ...   98
    Благодарности
    Учитывая, что я работаю уже над третьим изданием этой книги, я не могу не пребывать в настроении, что «сложное задание выполнено».
    Я использовал и пропагандировал Python на протяжении 15 лет и обу
    чал этому языку 10 лет. Несмотря на то, что все течет и все меняется,
    я попрежнему поражаюсь успеху, который сопутствует языку Python.
    В 1992 году большинство из нас едва ли могло предполагать, какими путями он будет развиваться. Но, чтобы не выглядеть безнадежно эго

    Предисловие
    31
    центричным, я хотел бы немного вспомнить о прошлом и сказать не
    сколько слов благодарности.
    Это была длинная и извилистая дорога. Огладываясь назад, когда в 1992 году я открыл для себя Python, я предположить не мог, какое влияние он будет оказывать на мою жизнь в следующие 15 лет. Через два года после начала работы над первым изданием «Learning Python»
    в 1995 году я начал путешествовать по стране и миру, обучая начинаю
    щих программистов этому языку программирования. После выхода первого издания в 1999 году преподавание Python и работа над книга
    ми стали моей основной работой, во многом благодаря интенсивному росту популярности Python.
    В середине 2007 года, когда я пишу эти слова, мною уже написано де
    вять книг о Python; опыт преподавания Python насчитывает более
    10 лет. Проведя более 200 курсов в США, Европе, Канаде и Мексике,
    я обучил более 3000 студентов. Помимо множества мучительных ча
    сов, проведенных в самолетах, эти курсы дали мне возможность суще
    ственно улучшить эту и другие книги о Python. За эти годы преподава
    ние помогало улучшать качество книг, а работа над книгами – качест
    во преподавания. Фактически книга, которую вы читаете, была почти полностью получена из программы моих курсов.
    В связи с этим я хотел бы поблагодарить всех студентов, которые уча
    ствовали в моих курсах на протяжении последних 10 лет. Как разви
    тие языка Python, так и ваши отзывы сыграли немаловажную роль в становлении этой книги. (Нет ничего более поучительного, чем на
    блюдение за 3000 студентами, которые совершают одни и те же ошиб
    ки, свойственные начинающим программистам!) Это издание стало возможным в первую очередь благодаря тем, кто посещал мои курсы после 2003 года, и тем не менее, все, кто посещал мои курсы, начиная с 1997 года, так или иначе помогли в улучшении этой книги. Я особен
    но хотел бы поблагодарить компании, предоставившие помещения для проведения курсов в Дублине, Мехико, Барселоне, Лондоне, Эдмон
    тоне и Пуэрто Рико; лучшие условия аренды трудно себе представить.
    Я также хотел бы выразить свою благодарность всем, кто принимал участие в производстве этой книги. Редакторам, работавшим над этим проектом: Татьяне Апанди (Tatiana Apandi), работавшей над этим из
    данием, и многим другим редакторам, работавшим над предыдущими изданиями. Лизе Дейли (Liza Daly) за участие в техническом обзоре этой книги. И издательству O’Reilly, за то что я получил шанс рабо
    тать над этими девятью проектами книг – это было здорово (правда,
    порой я чувствовал себя как герой фильма «День сурка»).
    Я хочу поблагодарить своего первого соавтора Дэвида Ашера (David
    Ascher) за его работу над ранними изданиями этой книги. Дэвид на
    писал часть «Outer Layers (Внешние уровни)» для предыдущих изда
    ний, которую мы, к сожалению, убрали из книги, чтобы освободить место для новых материалов об основах языка Python. В это издание

    32
    Предисловие я добавил больше усложненных программ и заключительное упраж
    нение для самостоятельного изучения, но это не компенсирует все то,
    что пришлось вырезать. Если вам не хватает этого материала, прочи
    тайте ранее приведенные в предисловии примечания по поводу книг,
    описывающих вопросы прикладного программирования.
    За создание такого замечательного и полезного языка я должен поблаго
    дарить Гвидо ван Россума (Guido van Rossum) и все сообщество разработ
    чиков и пользователей Python. Подобно большинству программных про
    дуктов с открытыми исходными текстами Python развивается благода
    ря героическим усилиям многих программистов. Обладая 15летним опытом программирования на Python, я попрежнему нахожу его серь
    езной забавой. Мне очень повезло, что я смог наблюдать, как из малень
    кого младенца в семействе языков сценариев Python вырос в популяр
    ный инструмент, которым пользуются практически все компании, зани
    мающиеся разработкой программного обеспечения. Участвовать в этом процессе было очень волнующим занятием, и поэтому я хотел бы побла
    годарить и поздравить с достигнутыми успехами все сообщество Python.
    Я также хотел бы поблагодарить своего первого редактора из изда
    тельства O’Reilly, Фрэнка Уиллисона (Frank Willison). Идея этой кни
    ги во многом принадлежит Фрэнку, и в ней нашли отражение его взгляды. Оглядываясь назад, можно заметить, что Фрэнк оказал су
    щественное влияние как на мою карьеру, так и на Python. Не будет преувеличением сказать, что успех развития Python на начальном эта
    пе в определенной степени обусловлен влиянием Фрэнка. Мы по
    прежнему скучаем по нему.
    В заключение хотелось бы выразить личную благодарность. Компании
    OQO за самые лучшие игрушки, какие я только видел. Покойному
    Карлу Сагану (Carl Sagan), за то что вдохновил 18летнего мальчишку из Висконсина. Йону Стюарту (Jon Stewart) и Майклу Муру (Michael
    Moore) за патриотизм. И всем крупным корпорациям, с которыми мне приходилось иметь дело, за то, что напоминают мне о том, как это здо
    рово – работать на самого себя.
    Моим детям, Майку (Mike), Сэмми (Sammy) и Рокси (Roxy), за любую будущность, которую они выберут. Вы были детьми, когда я начинал работать с языком Python, и вы какимто образом выросли за это вре
    мя; я горжусь вами. Жизнь может перекрыть нам все пути, но путь до
    мой всегда остается открытым.
    Но больше всего я благодарен Вере (Vera), моему лучшему другу, моей подруге и моей жене. День, когда я нашел тебя, был лучшим днем в моей жизни. Я не знаю, что принесут мне следующие 50 лет, но я знаю, что хотел бы прожить их рядом с тобой.
    Марк Лутц (Mark Lutz)
    Бертуд, Колорадо
    Июль 2007

    I
    Введение

    1
    Python в вопросах и ответах
    Если вы купили эту книгу, вы, скорее всего, уже знаете, что такое Py
    thon и насколько важно овладеть этим инструментом. Если это не так,
    вы наверняка не сможете зарабатывать на Python, пока не изучите язык, прочитав оставшуюся часть этой книги, и не напишете пару проектов. Но прежде чем мы приступим к изучению деталей, давайте сначала рассмотрим основные причины высокой популярности языка
    Python. Перед тем как приступить собственно к языку Python, в этой главе рассматриваются некоторые вопросы, которые обычно задают начинающие программисты, и даются ответы на них.
    Почему программисты используют Python?
    Это самый типичный вопрос, который задают начинающие програм
    мисты, потому что на сегодняшний день существует масса других язы
    ков программирования. Учитывая, что число пользователей Python составляет порядка 1 миллиона человек, достаточно сложно однознач
    но ответить на этот вопрос. Выбор средств разработки иногда зависит от уникальных особенностей и личных предпочтений.
    Однако после обучения примерно 200 групп и 3000 студентов за по
    следние 10 лет у меня накопились некоторые общие мысли по этому поводу. Основные факторы, которые приводятся пользователями Py
    thon, примерно таковы:
    Качество программного обеспечения
    Для многих основное преимущество языка Python заключается в удобочитаемости, ясности и более высоком качестве, отличающи
    ми его от других инструментов в мире языков сценариев. Программ
    ный код на языке Python читается легче, а значит, многократное его использование и обслуживание выполняется гораздо проще, чем использование программного кода на других языках сценариев.

    36
    Глава 1. Python в вопросах и ответах
    Единообразие оформления программного кода на языке Python об
    легчает его понимание даже для тех, кто не участвовал в создании этого кода. Кроме того, Python поддерживает самые современные механизмы многократного использования программного кода, ка
    ким является объектноориентированное программирование (ООП).
    Высокая скорость разработки
    По сравнению с компилирующими или строго типизированными языками, такими как C, C++ и Java, Python во много раз повышает производительность труда разработчика. Объем программного кода на языке Python обычно составляет треть или даже пятую часть эк
    вивалентного программного кода на языке C++ или Java. Это озна
    чает меньший объем ввода с клавиатуры, меньшее количество вре
    мени на отладку и меньший объем трудозатрат на сопровождение.
    Кроме того, программы на языке Python запускаются сразу же, ми
    нуя длительные этапы компиляции и связывания, необходимые в некоторых других языках программирования, что еще больше увеличивает производительность труда программиста.
    Переносимость программ
    Большая часть программ на языке Python выполняется без измене
    ний на всех основных платформах. Перенос программного кода из операционной системы Linux в Windows обычно заключается в про
    стом копировании программного кода сценария с одной машины на другую. Более того, Python предоставляет массу возможностей по созданию переносимых графических интерфейсов, программ досту
    па к базам данных, вебприложений и многих других типов про
    грамм. Даже интерфейсы операционных систем, включая способ запуска программ и обработку каталогов, в языке Python реализо
    ваны переносимым способом.
    Поддержка библиотек
    В составе Python поставляется большое число собранных и перено
    симых функциональных возможностей, известных как стандарт+
    ная библиотека
    . Эта библиотека предоставляет массу возможно
    стей, востребованных в прикладных программах, начиная от поис
    ка текста по шаблону и заканчивая сетевыми функциями. Кроме того, Python допускает расширение, как за счет ваших собственных библиотек, так и за счет библиотек, созданных сторонними разра
    ботчиками. Из числа сторонних разработок можно назвать инстру
    менты создания вебсайтов, программирование математических вычислений, доступ к последовательному порту, разработку игро
    вых программ и многое другое. Например, расширение NumPy по
    зиционируется как свободный и более мощный эквивалент системы программирования математических вычислений Mathlab.
    Интеграция компонентов
    Сценарии Python легко могут взаимодействовать с другими частя
    ми приложения благодаря различным механизмам интеграции.

    Почему программисты используют Python?
    37
    Эта интеграция позволяет использовать Python для настройки и расширения функциональных возможностей программных про
    дуктов. На сегодняшний день программный код на языке Python имеет возможность вызывать функции из библиотек на языке C/
    C++, сам вызываться из программ, написанных на языке C/C++,
    интегрироваться с Javaкомпонентами, взаимодействовать с такими платформами, как COM и .NET, и производить обмен данными по сети с помощью таких протоколов, как SOAP, XMLRPC и CORBA.
    Python не является обособленным инструментом.
    Удовольствие
    Благодаря непринужденности языка Python и наличию встроен
    ных инструментальных средств процесс программирования может приносить удовольствие. На первый взгляд это трудно назвать пре
    имуществом, тем не менее, удовольствие, получаемое от работы,
    напрямую влияет на производительность труда.
    Из всех перечисленных факторов наиболее существенными для поль
    зователей являются первые два (качество и производительность).
    Качество программного обеспечения
    По своей природе Python имеет простой, удобочитаемый синтаксис и яс
    ную модель программирования. Согласно лозунгу, выдвинутому на недавней конференции по языку Python, основное его преимущество состоит в том, что Python «каждому по плечу» – характеристики язы
    ка взаимодействуют ограниченным числом непротиворечивых спосо
    бов и естественно вытекают из небольшого круга базовых концепций.
    Это делает язык простым в освоении, понимании и запоминании. Про
    граммистам, использующим язык Python, почти не приходится при
    бегать к справочным руководствам – это непротиворечивая система,
    на выходе которой получается профессиональный программный код.
    Философия Python диктует использование минималистского подхода.
    Это означает, что даже при наличии нескольких вариантов решения задачи в этом языке обычно существует всего один очевидный путь,
    небольшое число менее очевидных альтернатив и несколько взаимосвя
    занных вариантов организации взаимодействий. Более того, Python не принимает решения за вас, когда порядок взаимодействий неочевиден –
    предпочтение отдается явному описанию, а не «волшебству». В терми
    нах Python явное лучше неявного, а простое лучше сложного.
    1 1
    Чтобы получить более полное представление о философии Python, введите в командной строке интерпретатора команду import this (как это сделать,
    будет рассказано в главе 2). В результате будет активизировано «пасхаль
    ное яйцо», скрытое в недрах Python, – сборник принципов проектирова
    ния, лежащих в основе Python. Аббревиатура EIBTI, происходящая от фра
    зы «explicit is better than implicit» («явное лучше неявного»), превратилась в модное жаргонное словечко.

    38
    Глава 1. Python в вопросах и ответах
    Помимо философии Python обладает такими возможностями, как мо
    дульное и объектноориентированное программирование, что естест
    венно упрощает возможность многократного использования программ
    ного кода. Поскольку качество находится в центре внимания самого языка Python, оно также находится в центре внимания программистов.
    Высокая скорость разработки
    Во время бума развития Интернета во второй половине 1990х годов,
    было сложно найти достаточное число программистов для реализации программных проектов – от разработчиков требовалось писать про
    граммы со скоростью развития Интернета. Теперь, в эпоху экономиче
    ского спада, картина изменилась. Сегодня от программистов требует
    ся умение решать те же задачи меньшим числом сотрудников.
    В обоих этих случаях Python блистал как инструмент, позволяющий программистам получать большую отдачу при меньших усилиях. Он изначально оптимизирован для достижения высокой скорости разра+
    ботки –
    простой синтаксис, динамическая типизация, отсутствие эта
    па компиляции и встроенные инструментальные средства позволяют программистам создавать программы за меньшее время, чем при ис
    пользовании некоторых других инструментов. В результате Python увеличивает производительность труда разработчика во много раз по сравнению с традиционными языками программирования. Это значи
    тельное преимущество, которое с успехом может использоваться как во время бума, так и во время спада, а также во время любого проме
    жуточного этапа развития индустрии программного обеспечения.
    Является ли Python «языком сценариев»?
    Python – это многоцелевой язык программирования, который зачас
    тую используется для создания сценариев. Обычно он определяется как объектно+ориентированный язык сценариев – такое определение смешивает поддержку ООП с общей ориентацией на сценарии. Дейст
    вительно, для обозначения файлов с программным кодом на языке Py
    thon программисты часто используют слово «сценарий» вместо слова
    «программа». В этой книге термины «сценарий» и «программа» рас
    сматриваются как взаимозаменяемые, с некоторым предпочтением термина «сценарий» для обозначения простейших программ, поме
    щающихся в единственный файл, и термина «программа» для обозна
    чения более сложных приложений, программный код которых разме
    щается в нескольких файлах.
    Термин «язык сценариев» имеет множество различных толкований.
    Некоторые предпочитают вообще не применять его к языку Python.
    У большинства термин «язык сценариев» вызывает три разных ассо
    циации, из которых одни более применимы к языку Python, чем другие:

    Является ли Python «языком сценариев»?
    39
    Командные оболочки
    Иногда, когда ктото слышит, что Python – это язык сценариев, то представляет себе Python как инструмент для создания системных сценариев. Такие программы часто запускаются из командной строки с консоли и решают такие задачи, как обработка текстовых файлов и запуск других программ.
    Программы на языке Python способны решать такие задачи, но это лишь одна из десятков прикладных областей, где может приме
    няться Python. Это не только язык сценариев командной оболочки.
    Управляющий язык
    Другие пользователи под названием «язык сценариев» понимают
    «связующий» слой, который используется для управления (то есть для описания сценария работы) другими прикладными компонен
    тами. Программы на языке Python действительно нередко исполь
    зуются в составе крупных приложений. Например, при проверке аппаратных устройств программы на языке Python могут вызывать компоненты, осуществляющие низкоуровневый доступ к устройст
    вам. Точно так же программы могут запускать программный код на языке Python для поддержки настройки программного продукта у конечного пользователя, что ликвидирует необходимость постав
    лять и пересобирать полный объем исходных текстов.
    Простота языка Python делает его весьма гибким инструментом управления. Тем не менее, технически – это лишь одна из многих ро
    лей, которые может играть Python. Многие программисты пишут на языке Python автономные сценарии, которые не используют какие
    либо интегрированные компоненты. Это не только язык управления.
    Удобство в использовании
    Пожалуй, лучше всего представлять себе термин «язык сценариев»
    как обозначение простого языка, используемого для быстрого ре
    шения задач. Это особенно верно, когда термин применяется к язы
    ку Python, который позволяет вести разработку гораздо быстрее,
    чем компилирующие языки программирования, такие как C++.
    Ускоренный цикл разработки способствует применению зондирую
    щего, поэтапного стиля программирования, который следует по
    пробовать, чтобы оценить по достоинству.
    Не надо заблуждаться, Python предназначен не только для реше
    ния простых задач. Скорее он упрощает решение задач, благодаря своей простоте и гибкости. Язык Python имеет небольшой набор возможностей, но он позволяет создавать программы неограничен
    ной сложности. По этой причине Python обычно используется как для быстрого решения тактических, так и для решения долговре
    менных, стратегических задач.
    Итак, является ли Python языком сценариев? Ответ зависит от того,
    к кому обращен вопрос. Вообще термин «создание сценариев», вероят

    1   2   3   4   5   6   7   8   9   ...   98


    написать администратору сайта