Часть I. Python мыслит так, как мыслит новичок

Часть 1

Python мыслит так, как мыслит новичок

Темы занятий

  1. Общие представления о языке Python
  2. Интерпретатор Python
  3. Арифметические действия в Python
  4. Переменные и управление ими
  5. Основные типы данных: числовые
  6. Основные типы данных: последовательности и словари
  7. Функции и модули
  8. Полезные средства и приёмы программирования

1-й час

Общие представления о языке Python

  В данной главе Вы получите общее представление о Python: что это за язык, какова его история, в каких случаях он хорош и где неприменим. Для усвоения материала этой части Вам даже не понадобится компьютер, пока Вы не дойдете до раздела "Примеры и задания", где предложен список полезных Web-страниц.

Зачем вообще программировать и почему на Python

  Если требования, предъявляемые к возможностям Вашего компьютера, ограничиваются всего лишь сведением баланса чековой книжки, Вам совершенно не обязательно знать программирование. Для этого имеются более приемлемые инструментальные средства, например карандаш, бумага и калькулятор. А если Вы используете компьютер только для редактирования и верстки текстов, то опять же, нет никакой нужды изучать программирование. Имеется множество программ, которые превосходно справятся с любой вашей прихотью и выполнят все, что Вы захотите.

  Но если вдруг окажется, что для осуществления ваших замыслов не найдется соответствующего программного обеспечения, или то, что имеется, не удовлетворяет вашим запросам, единственный выход — написать своё собственное приложение. Вероятно, эта простая идея и привела человечество к новым и значительным прорывам в программировании и появлению более качественных программ. Отличный пример тому — операционная система Linux. Линус Торвальдс (Linus Torvalds), удрученный существующими реализациями UNIX для компьютеров на платформе PC, решился написать свою собственную версию. Сегодня Linux стала настолько популярной, что на неё с беспокойством оглядывается даже Билл Гейтс со своей компанией Microsoft.

  *Прим. В. Шипкова: Это не преувеличение. На конец 2005 года популярность платформы на столько возросла, что такие монстры, как IBM, Oracle, Sun Microsystems вкладывают в платформу в общей сложности от 2 до 4 млрд. долларов.

UNIX была разработана в начале семидесятых в лаборатории AT&T в Мюррей Хил (Murray Hill), штат Нью-Джерси. Мощная многопользовательская операционная система UNIX — это детище Денниса Ритчи (Dennis Ritchie), Брайана Кернигана (Brian Kernighan) и Кена Томпсона (Ken Thompson), у которых была масса свободного времени и лишний компьютер, на котором никто, кроме них, не хотел работать. До конца восьмидесятых даже такой, по нашим меркам, маломощный компьютер стоил слишком дорого, чтобы появиться в домах людей, увлеченных информатикой. Те, кто повседневно работал с UNIX, с улыбкой сожаления смотрел на слабенькие операционные системы, применяемые в персональных компьютерах. Мы были разбалованы, где-то даже испорчены нашей "большой железкой". Однако в 1987 г. Эндрю Танненбаум (Andrew Tannenbaum) разработал очень маленькую UNIX-подобную операционную систему, которая могла работать на домашних PC. Он назвал её Minix. Позже Линус Торвальдс разработал переносимую и ещё более мощную версию операционной системы, которую назвал Linux. По мощности Linux не уступала производственным операционным системам, но работала даже на дешевых домашних персональных компьютерах. Основное отличие между Minix и Linux (особенно э первое время) состояло в том, что условия лицензирования Minix содержали больше ограничений, чем при лицензировании Linux. Сегодня отличие состоит в том, что во всем мире имеются тысячи поклонников Linux, реализовавших для своей любимой системы практически все приложения, известные в мире.

  Научные работники часто ощущают потребность в программах, которые в этот момент отсутствуют, и для продвижения своих исследовательских проектов нередко пишут собственные приложения. Хотя я не отношу себя к ученым, но не могу себе отказать в проведении собственных исследований. У меня сложилось твердое убеждение, что календарь индейцев Майя — это нечто восхитительное и захватывающее. В течение нескольких лет я создавал программы на языке С, которые помогли мне исследовать эту столь интересную тему. Когда я обнаружил Python, то быстро отказался от всей массы приложений, которую успел наваять, и повторно реализовал все программы с помощью языка Python. Завершив свою работу, я обнаружил, что все модули и библиотеки читаются проще и яснее, уменьшились в размере и стали значительно более мощными. Более того, все, что мне было необходимо, я смог создать значительно быстрее, чем когда упражнялся на С.

  Многие люди часто приходят к выводу, что им необходимо изучить как минимум основы программирования, чтобы автоматизировать некоторые регулярно повторяющиеся рутинные задачи. В качестве примера можно привести небольшие программки, которые собирают еженедельные отчёты сотрудников коллектива из специального каталога или папки, затем проверяют время обновления отчёта, после чего осуществляют какую-нибудь простейшую обработку. Например, объединяют индивидуальные отчёты в один сводный и распечатывают полученный результат или отсылают его по электронной почте руководителю группы. Мне приходилось заниматься подобными задачами в самом начале своей карьеры программиста. Я справлялся со своими обязанностями, но приходилось повозиться, даже использовать несколько различных языков написания сценариев. Если бы в то время существовал Python, то я смог бы выполнить все задачи значительно быстрее и существенно уменьшить число строк в коде, причём опираясь только на этот язык программирования.

  Приведу небольшой перечень некоторых регулярно повторяющихся рутинных задач, которые мне приходилось решать на протяжении многих лет своей работы. Практически все они могут быть вполне удовлетворительно реализованы с помощью Python:

  В былые времена, чтобы написать свою собственную программу для решения какой-либо задачи, нужно было изучить массу литературы о сложном и непонятном синтаксисе языка. Возьмём для примера FORTRAN — один из самых старых, но до сих пор популярных языков программирования. Он хорошо оснащен средствами для решения многих научных задач и сложных математических вычислений, но его синтаксис, мягко говоря, не совсем очевиден. Другой язык программирования — С. Вы о нем, безусловно, уже наслышаны. Язык С может гордиться числом приверженцев во всем мире, сердца которых он завоевал мощью и эффективностью средств программирования. Но с этим языком не успеешь оглянуться, как программа становится мудрёной, запутанной и трудно читаемой. Профессиональные программисты признают, что язык С прививает не лучшие навыки программирования, a FORTRAN навязывает свои правила игры. В противоположность им Python стимулирует своих поклонников к приобретению хороших навыков программирования, но никого ни к чему не принуждает. ещё одна отличительная черта Python состоит в том, что ему легко учиться, поскольку стиль этого языка в наибольшей мере соответствует представлениям новичков о программировании.

  Давайте рассмотрим несколько выполняемых программ, написанных на FORTRAN, С и Python. Конечно, они не обладают большой функциональностью. Традиционная программа для начинающих на любом языке программирования просто выводит на экран фразу "Hello, World" (Привет, мир), и результат её работы можно увидеть своими глазами на экране монитора.

  *Прим. В. Шипкова: здесь и далее я тексты программ выделял в отдельные блоки. Как я уже в начале высказался - в первоисточнике неправильно было сделано форматирование, непропечатаны многие символы, что однозначно, приводило бы к невозможности выполнять программы.

FORTRAN:

PROGRAM

PRINT *, "Hello, World"

END PROGRAM

C:

#include <stdiо.h>

main()

{

  printf("Hello, World\n");

}

Python:

print "Hello, World"

  Я считаю, что Python ближе всех подошел к тому, что можно назвать идеальным языком программирования. Его синтаксис предельно прост и понятен. Вместо концепции множества решений одной задачи в нем, как правило, предлагается одно или несколько очевидных и наилучших решений. Причем многие особо полезные методы, необходимые для научного программирования, уже встроены в интерпретатор Python и устанавливаются вместе с ним. Это чрезвычайно удобно, так как не нужно тратить время на поиск модулей независимых изготовителей и на их установку. Но для выполнения более сложных задач программирования Вам действительно понадобится дополнительный пакет под названием Tcl/Tk. Пользователям Windows повезло, так как этот пакет входит в состав дистрибутива и устанавливается автоматически при установке Python. Несмотря на кажущуюся простоту языка, Python позволяет моделировать сложные процессы и взаимоотношения благодаря тому, что в нем реализованы концепции объектно-ориентированного программирования (ООП).

  В следующих главах я постараюсь донести до Вас основы программирования на Python. Первая треть книги охватывает большую часть базовых элементов Python. Следующая треть полностью посвящена объектам, которые играют важнейшую роль в реализации всей мощи данного языка. Последняя треть книги посвящена использованию переносимого графического интерфейса пользователя — tkinter. В последней трети мы также немного коснемся вопросов программирования с применением интерфейса CGI (common gateway interface — интерфейс общего шлюза), позволяющего программировать для Internet. Это убедит Вас в перспективности программирования на Python и необходимости продолжить обучение.

  При изложении материала в этой книге я исхожу из того, что Вы ничего не знаете о программировании. Отсутствие предвзятого мнения и излишних знаний, почерпнутых из других языков программирования, окажется для Вас даже полезным. Я надеюсь, что для Вас быстро станет очевидным тот факт, что программирование значительно проще, чем это принято считать. Тем не менее я все же полагаю, что Вы умеете пользоваться компьютером и имеете базовые знания хотя бы б таких программах, как текстовые редакторы, и об интерфейсе командной строки вашей операционной оболочки (DOS или другой, такой как ksh, csh или bash для UNIX).

  Хотя уже много сказано об объективных причинах, побуждающих людей к программированию, последний штрих, который я хочу добавить, состоит в том, что создание работоспособных программ — это ещё и увлекательно. Ничто не может сравниться с тем чувством удовлетворения, которое охватывает Вас от ощущения способности расставить в опредёленном порядке инструкции и наблюдать, что их работа точно соответствует тому, что Вы задумали. Если раньше компьютер диктовал Вам свои условия, когда Вы обучались работе с тем или иным приложением, то теперь Вы указываете компьютеру, как он должен себя вести. Программирование на Python никогда не было для меня только работой. Надеюсь, что когда Вы закончите чтение данной книги, то сможете получать от программирования столько же удовольствия, сколько получаю я.

История Python

  Python был разработан в конце 1989 г. Гуидо ван Россумом (Guido van Rossum) во время рождественских каникул, когда его исследовательская лаборатория была закрыта и ему просто некуда было деваться. Он позаимствовал многие средства программирования, присущие другим языкам, таким как ABC, Modula-3, С и некоторым другим (по крайней мере, наиболее общие средства). Он обожал телевизионную передачу Monty Python's Flying Circus (Летающий цирк питона Монти), и когда пришло время дать название своему языку, он выбрал имя Python. В 1991 г. после испытаний и экспериментов в узком кругу друзей и коллег по работе Python был размещен в домене общего доступа на суд широкой общественности. В отличие от других языков программирования, Python не только распространяется совершенно бесплатно, он не имеет абсолютно никаких ограничений в условиях применения. Никто не ограничивает коммерческое использование программных продуктов, написанных на этом языке, без каких-либо лицензионных отчислений. Программисты также вольны модернизировать язык, не ставя в известность автора.

  В дополнение к перечисленным выше преимуществам синтаксиса само по себе размещение интерпретатора Python в домене общего доступа способствовало быстрому распространению и росту популярности этого языка во всем мире. Другие языки, возможно, имеют большую армию пользователей, но немногие языки могут похвастать таким же широким сообществом пылких почитателей, какое имеет Python. И хотя Python ещё молодой язык программирования, его пользователи регулярно собираются на международные конференции (как минимум один раз в год, а иногда и чаще).

  *Прим. В. Шипкова: совсем недавно такая конференция проходило в Москве. Очень жаль, но я туда не попал.

  Пользователи Python создали неформальную организацию, призванную поддерживать и повсеместно расширять применение приложений на Python. Эта организация называется PSA (Python Software Activity). Она объединяет более 300 человек и 30 предприятий и существует в основном на пожертвования частных лиц и предприятий. Членство не является обязательным, лишь бы Вы любили Python. Никто и никогда не обязан платить ни копейки за использование Python в каких бы то ни было целях. Поэтому просто замечательно, что были сделаны столь значительные денежные вклады для развития и роста этого языка программирования.

  Первое время очень часто задавали такой вопрос: "Что произойдет, если Гуидо однажды потеряет ко всему этому интерес?" Поклонники Python были обеспокоены тем, что если однажды с Гуидо что-нибудь случится, то язык умрет. Поэтому в 1998 г. был основан консорциум, отвечающий за поддержку и развитие языка Python. Корпоративные члены консорциума выделили средства для Гуидо, чтобы он продолжал работу над Python (и больше ни над чем другим), а также нашел преемника к тому времени, когда у него пропадет желание или иссякнут силы управлять развитием Python.

  Гуидо характеризует себя как "консервативного программиста", уверенного в том, что Python будет изменяться под его руководством и только в тех направлениях, которые, по его мнению, являются необходимыми. Основное достоинство такой перспективы состоит в том, что программы, написанные в ранних версиях Python, будут по-прежнему выполняться в неизменном виде и в последующих версиях (по крайней мере, большая часть кода). Лично я начал пользоваться Python с версии 1.3, а сейчас уже вышла в свет версия 2.0,

  *Прим. В. Шипкова: на ноябрь-2005 - последняя версия Python 2.4.1

но все программы, написанные мной ранее, успешно выполняются во всех версиях. Версия 1.5.2 была взята за основу при создании рисунков для этой книги, но Вы можете все также бесплатно выгрузить и установить на своём компьютере последнюю версию. Гарантирую, что все коды, приведенные в этой книге, будут выполняться без внесения каких-либо изменений. Большинство кодов также прошли проверку на более ранних версиях Python.

Инструкция goto как враг программирования

  В 1968 г. Эдсгер У. Дейкстра (Edsger W. Dijkstra), один из величайших столпов программирования, написал письмо редактору издания Communications of the ACM, в котором чётко обосновывал, что инструкция goto, присутствовавшая в то время практически во всех языках программирования, оказывает неблагоприятный эффект на ход мышления программистов .

Инструкция компьютерного языка goto сообщает компьютеру, что необходимо перейти по указанному месту в программе и выполнять команды, начиная с этого места. Когда выполнение этих инструкций будет закончено, программист должен использовать следующую инструкцию goto, чтобы перенаправить компьютер для выполнения дальнейших команд. Программирование без инструкции goto называют структурированным, поскольку в таких случаях программа состоит из отдельных модулей, назначение которых, как правило, понятно как программистам, так и пользователям. Применение инструкции goto нарушает структуру программного кода и требует от программиста тщательной документации всех мест применения инструкции, что, тем не менее, не спасает от ошибок.

  В 1968 г. абсолютное большинство программ было линейными. Такие программы ещё называли "спагетти"

  *Прим. В. Шипкова: в нашей стране более распространено название "макароны".

  Для этого стиля свойственно частое применение инструкций goto и отсутствие разбиения на модули. Впрочем, уже тогда использовались функции и подпрограммы, дальнейшее развитие которых привело к возникновению структурированных языков программирования. (Тему функций мы подробнее раскроем в следующих главах.)

  В 1968 г. я писал программы на COBOL, и это были типичные представители "спагетти". Хитросплетения кода были ужасно трудными для чтения и понимания даже автором, а прочесть все это постороннему было вообще невозможно. Единичные структурированные программные конструкции имели ограниченное применение. Они были трудны в использовании, а достать подробную документацию на эти модули было почти невозможно. Единственным методом описания программы была блок-схема, графически представляющая логику программы и взаимосвязи её частей. В диаграмме использовались специальные символы, обозначающие ввод и вывод данных, выбор условий и другие операции. Для облегчения работы программистов были разработаны программы, которые считывали коды других программ и создавали по ним блок-схемы. В идеале предполагалось, что работа программиста должна начинаться с создания блок-схемы, которой он затем должен придерживаться при написании программы. Но в реальной жизни такого почти никогда не бывало. Исходя из личного опыта должен признать, что инструкция goto действительно провоцирует программистов к нарушению логической структуры, что приводит к невообразимому хаосу .

COBOL является одним из самых ранних языков программирования. Он помог популяризировать применение компьютеров в эру господства мэйнфреймов — огромных вычислительных машин, таких как IBM 360. Данный язык был разработан адмиралом ВМФ США Грейс Хоппером (Grace Hopper) и её помощниками. Адмирал Хоппер известен своим высказыванием: "Легче получить прощение, чем разрешение". COBOL был примечателен тем, что программы писались "человеческим" языком вместо общепринятого машинного, который понимали только компьютер и профессиональные программисты. Команды COBOL легко было читать и понимать. По сегодняшним меркам COBOL чрезмерно многословен. Я хотел было включить программу "Hello, World", написанную на COBOL, но она оказалась слишком длинной.

  Бенджамин Хорф (Benjamin Whorf) и Ноам Шомски (Noam Chomsky) уверены, что язык формирует структуру сознания. Мыслить можно только словами. Действительно, если в Вашем языке отсутствует будущее время, то трудно или даже невозможно размышлять о будущих событиях. Компьютерные языки программирования являются прекрасным подтверждением этой точки зрения. Если в компьютерном языке нет "слова" или метода для выражения того, что Вы хотите сделать, то просто невозможно найти никакое решение. Первые языки программирования представляли собой монолитные конструкции, в которые невозможно было ничего добавить или изменить. Доступ к коду первоисточника и разработчикам языка был ограничен ведомственными интересами компаний-изготовителей. Обычный программист мог использовать - только те средства программирования, которые уже были в языке, без права что-либо изменять.

  Со временем расширяемость языка программирования стало целью, к которой стремились многие разработчики. Когда Гуидо работал над Python, он приложил массу усилий, чтобы максимально упростить добавление новых средств и модулей в среду программирования. Он отказался также от инструкции goto, полностью сосредоточившись на концепции структурированного объектно-ориентированного программирования. Первые теоретики программного конструирования утверждали, что первостепенное значение имеют данные, передаваемые программе. Был провозглашен тезис: "определите структуру данных, и методы, выбранные для их обработки, сами собой станут очевидными". Позже в программировании всё больше внимания стали уделять объектам — программным единицам, которые объединяют как структурированные данные, так и методы их обработки. Гуидо сумел упростить применение объектов в Python, причём по сравнению с большинством других языков в Python их применение стало значительно проще. Некоторые языки имплантируют объекты в первоначальное линейное ядро, но Python с самого начала был нацелен на объектно-ориентированное программирование. Мы потратим несколько часов на изучение концепций и приемов объектно-ориентированного программирования во второй трети данной книги. Вы на собственном опыте убедитесь, что как только у Вас в голове прояснится понятие объекта, так сразу исчезнут все проблемы с программированием объектов в Python.

Сильные и слабые стороны Python

  Python — превосходный язык для реализации многих целей. Python можно использовать для написания сценариев оболочки. При этом часто удаётся значительно сократить число строк в коде и упростить программу. Многие программисты на C++ используют Python для создания прототипов программ. Как уже говорилось, в Python проще придерживаться концепций объектно-ориентированного программирования, а код его более компактный и пишется быстрее. Поэтому бывает полезно написать прототип программы на Python, а затем, если нужно, переписать программу или некоторые её блоки, используя другой язык программирования. Экономия времени и повышение эффективности программирования иногда просто поражает. Создание прототипов в Python тем более удобно, так как этот язык поддерживает интерфейс GUI (Graphical User Interface — графический интерфейс пользователя). Мне приходилось слышать от программистов, которые регулярно использовали Python для создания прототипов, что в результате их проекты получались более качественными, поскольку Python помогал находить чёткие и элегантные решения. Даже если конечная версия программы должна была быть написанной на C++, применение Python на промежуточном этапе ничуть не замедляло выполнение проекта. Напротив, значительно сокращалось время, затраченное на отладку программы.

  В то же время есть области (их немного), в которых Python не может блеснуть своими возможностями. Таковым является анализ больших текстовых файлов с использованием ключевых слов и словосочетаний. Эту же задачу средствами Perl обычно удаётся решить эффективнее, чем с помощью Python, а программа будет работать быстрее. Хотя и в Python существуют довольно мощные средства для решения подобных задач, все же общепринято, что Perl подходит лучше для этих целей.

  *Прим. В. Шипкова: на просторах интернета лежит сравнительный анализ скоростных характеристик Питона, Перла и Явы. На сегодняшний день Питон не уступает Перлу по скорости работы с текстом. Общее же превосходство над Перлом оказывается от 2 до 4 раз. Над Явой - от 1,5 до 8 раз!!!

  В то же время простота и быстрота написания программ на Python часто компенсируют потерю в скорости выполнения приложения. Часто критическим оказывается именно время, необходимое для реализации идеи, так как ложка дорога к обеду. Python лучше, чем любой другой язык, соответствует термину "выполняемой идеи" — концепции идеального языка программирования, предложенной Франком Стаяно (Frank Stajano). Суть этой концепции состоит в том, что язык должен быть настолько прост, что программист должен иметь возможность реализовать идеи с ходу, по мере их возникновения. С помощью Python можно не только быстро реализовать свои замыслы, но также анализировать их, делать чётче и понятнее прежде всего для самого себя, что обычно позволяет значительно сократить время на разработку эффективного проекта.

  Программы, которые должны работать в режиме реального времени, — не лучшая область применения Python. Интерпретируемые языки вообще слишком медленны для тех случаев, когда необходим мгновенный отклик от выполняемой программы. Python окажется плохим выбором для реализации средств голосовой почты или для коммутации сотни телефонных линий. Впрочем, существуют средства, позволяющие ускорить выполнение программ на Python. Во-первых, наиболее ответственные модули приложения могут быть написаны на языке низкого уровня, например на С. Другие модули, реализованные на Python, смогут обращаться к С-блокам точно так же, как Python использует собственные встроенные модули. Так, если обработку строк текста написать на С, а все остальные блоки — на Python, то такое приложение будет работать достаточно быстро. Это означает, что Python является расширяемым языком, позволяющим эффективно использовать в приложениях программные блоки, реализованные средствами языков низкого уровня. В свою очередь, низкоуровневые языки могут импортировать в свой программный код модули, написанные на Python. Поэтому, разрабатывая проект на языке С, Вы можете использовать свои наработки на языке Python без необходимости переписывать их. А иногда бывает даже полезно целенаправленно написать часть программного кода на Python, чтобы совместить в приложении сильные стороны низкоуровневого языка программирования с простотой и эффективностью программирования на Python. Кроме того, благодаря расширяемости и импортируемости языка Python его можно использовать для создания связующих модулей, так как с его помощью легко можно связать в одно приложение блоки, написанные на разных языках программирования.

Резюме

  В первой главе Вы узнали, что такое программирование, для чего оно может Вам понадобиться и почему Python идеально подойдёт в качестве первого языка программирования. Вы познакомились с краткой историей этого языка и некоторыми историческими данными о языках программирования вообще. Вам также была представлена фундаментальная идея информатики: от выбора языка зависит то, насколько успешно Вы сможете решить поставленную задачу и какие средства идеально подойдут для этого решения. В заключение мы рассмотрели некоторые задачи, для решения которых Python подходит идеально, а также области, где этот язык практически не применим.

Практикум

Вопросы и ответы

Является ли Python переносимым языком?

  Можно сделать так, что Python будет работать на любой платформе. Его предварительно откомпилированные двоичные коды доступны для большинства операционных систем. Единственной из когорты ведущих операционных систем, которая не поддерживает его, является NetWare. Но, насколько мне известно, есть люди, которые работают над устранением этой проблемы.

  Могу ли я использовать Python для программирования интерфейса общего шлюза?

  Да. Для этого всего лишь необходимо, чтобы на Web-сервере был установлен Python. Возможно, эта идея не понравится администратору Web-сервера, но попробуйте его убедить в том, что ещё один язык программирования CGI никогда не будет лишним.

  Безопасен ли Python для программирования CGI?

  Можно сказать, что Python в этой области более безопасен, чем Perl, но с точки зрения безопасности идеальным решением, безусловно, будет Java.

  *Прим. В. Шипкова: в 2004-2005 годах в Яве было обнаружено несколько уязвимостей, которые оказались весьма серьёзными. Насколько известно мне, таких уязвимостей в Питоне нет до сих пор.

  Подходит ли Python для создания звездоносных приложений, которые прославят авторов в веках и станут популярными во всем мире?

  Возможно, для реализации наполеоновских целей — это не самый подходящий язык, но зато он идеален для решения многих рутинных ежедневных задач.

  Использует ли Python какая-нибудь из ведущих компаний для разработки своих приложений?

  Да, конечно. В число компаний, которые доверились его возможностям, входят NASA, Yahoo, Red Hat, Infoseek и Industrial Light and Magic. Нам известно, что и другие столпы компьютерной индустрии применяют его, но они не склонны афишировать это. Зачем сообщать конкурентам, что высокая эффективность программирования была достигнута благодаря использованию Python. Это не означает, что какие-то компании полностью перешли на программирование на Python. Просто, как уже говорилось в этой главе, использование Python для создания прототипов и разработки отдельных служебных блоков может существенно ускорить выполнение проекта, что, в свою очередь, позволит компании обогнать конкурентов.

Контрольные вопросы

  1. Что является веской причиной выбора Python в качестве своего первого языка программирования?

    а) Мощь, скорость, монолитность.

    б) Гибкость, расширяемость, импортируемость.

    в) Элегантность, четкость, простота.

    г) Возможность программирования в режиме реального времени, мощные средства текстового анализа, схожесть с языком С.

  2. Кто первым предположил, что применение в программах инструкции goto разрушает логику и структуру программы?

    а) Никлаус Вирт.

    б) Эдсгер Дейкстра.

    в) Бенджамин Хорф.

    г) Чарльз Е. Томпсон-младший

  3. Кто создал Python?

    а) Тим Петере.

    б) Иван ван Лейнингем.

    в) Гуидо ван Россум.

    г) Эдсгер Дейкстра.

Ответы

  1. б и в. Веским доводом в пользу выбора Python являются его гибкость, расширяемость, импортируемость, элегантность, четкость и простота.
  2. б. Эдсгер Дейкстра охарактеризовал инструкцию goto как тлетворную, поскольку она побуждает программистов к превращению своих программ в "комок из спагетти".
  3. в. Python был создан Гуидо ван Россумом, хотя от такой славы не отказался бы и Тим Петере, да я и сам был бы не прочь. Но надо отдать должное, что Тим внес огромный вклад в развитие Python (да и вообще он отличный парень!), я же просто счастлив возможности использовать Python в своих целях.

Примеры и задания

  Посетите Web-страницу по адресу http://www.python.org/- "святилище" всего, что связано с Python. Сразу после того как была написана эта книга, появился ещё один исключительно полезный оперативный ресурс - The Vaults of Parnassus (http://www.vex.net/parnassus). Это богатый сервер, обладающий широкими поисковыми возможностями, содержащий массу ссылок на программы, написанные на Python и представленные на серверах по всему миру.

  Зарегистрируйтесь в списке рассылки новостей Python или в списке рассылки курсов обучения Python, которые представлены по адресу http://www.python.org/psa/MailingLists.html.

  Познакомьтесь со статьей Эдсгера Дейкстра об инструкции goto, которую можно найти на Web-странице АСМ по адресу http://www.acm.org/classics/oct95/.

  Составьте список своих рутинных задач, которые Вам приходится выполнять ежедневно и с которыми, как Вам кажется, мог бы справиться Ваш компьютер без Вашего участия. По мере ознакомления с содержанием данной книги возвращайтесь к этому списку и пробуйте применить полученные знания для решения этих проблем. ещё до окончания чтения книги постарайтесь воплотить хотя бы одно из этих решений, экономящих Ваше время. Если Вы написали только одну программу и сумели тем самым сэкономить себе хотя бы несколько минут в неделю, значит, Вы не зря потратились на эту книгу.