Что дальше?

В самом деле, что же дальше? Есть много направлений, в которых вы можете развиваться, расширяя и углубляя ваши знания языка Python и программирования в целом.

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

  1. Программирование графического интерфейса пользователя (GUI, от английского graphical user interface) позволяет вашей программе создавать окна и другие графические элементы для взаимодействия с пользователем, а также отображать картинки.
  2. Tkinter — старейший графический пакет для Python — основан на скриптовых языках Tcl и Tk, разработанных Джоном Оустерхаутом. Tkinter входит в инсталляционный пакет Python.
  3. Другая популярная графическая библиотека, wxPython, представляет собой Python-обертку над wxWindows, C++ библиотекой, реализующей графические интерфейсы для платформ Windows и Unix (включая Linux). Окна и графические элементы управления wxPython, в отличие от Tkinter, выглядят и ведут себя на этих платформах как родные, и программировать их иногда проще.
  4. Программирование графического интерфейса пользователя приведет вас к программам, управляемым событиями, в которых пользователь, а не программист, определяет поток выполнения. От программиста, не имеющего опыта разработки подобных программ, этот подход требует переосмысления того, как строится взаимодействие программы и пользователя.
  5. Web-программирование открывает программисту на Python мир Интернета. Например, можно создавать программы, которые открывают и читают web страницы из Интернета почти так же просто, как файлы на диске. Также существуют модули Python, которые позволяют работать с файлами на удаленных компьютерах по протоколу ftp, или отправлять и получать сообщения по электронной почте. Python широко используется для создания серверных программ, обрабатывающих формы ввода на web страницах.
  6. Базы данных немного похожи на суперфайлы, в которых данные структурированы согласно заранее определенным правилам, а связи между элементами данных позволяют извлекать и обрабатывать данные различными способами. Python предоставляет несколько модулей для подключения и работы с различным системами управления базами данных (СУБД), как бесплатными, так и платными.
  7. Программирование потоков (англ.: thread) позволяет организовать одновременную работу нескольких потоков выполнения внутри одной программы. Обратите внимание, что, пока вы прокручиваете только что открытую страницу в браузере, браузер продолжает ее загрузку! Это возможно благодаря нескольким потокам выполнения в браузере.
  8. Когда первоочередную важность приобретает скорость выполнения программы, можно написать расширения для Python на компилируемых языках, таких, как C и C++. Такие расширения лежат в основе многих модулей Python из стандартной библиотеки. Техника создания расширений достаточно сложная, однако имеется инструмент, облегчающий этот процесс для разработчиков. Это SWIG, названный так по первым буквам полного английского названия Simplified Wrapper and Interface Generator — упрощенный генератор оберток и интерфейсов.

Книги и сайты по Python

Джеффри Элкнер рекомендует следующие ресурсы в Интернете:

  1. Домашняя страница Python www.python.org — это то место, откуда следует начать поиск любой информации, относящейся к Python. Там вы найдете справочные материалы, официальную документацию, ссылки на другие сайты и групповые списки рассылки, к которым можно присоединиться.
  2. Сайт проекта Open Book Project openbookproject.net содержит не только оригинальную версию этой книги на английском языке, но и подобные этой книги для языков программирования Java и C++, написанные Алленом Дауни. Дополнительно, там имеются
    • Lessons in Electric Circuits (Уроки по электрическим цепям) Тони Купхалдта,
    • подборка учебных материалов Getting down with ... (Приступим...) на разные темы из информатики, созданные учащимися старшей школы,
    • Python for Fun (Python для удовольствия), серия практических примеров на Python Криса Мейерса,
    • The Linux Cookbook (Поваренная книга Linux) Майкла Стулца, 300 страниц полезных приемов и техник,
    • и другие материалы по информатике и электронике.
  3. И наконец, если вы погуглите строку python -snake -monty, то получите море ссылок на материалы по Python.

Джеффри Элкнер рекомендует следующие книги по Python:

  1. Core Python Programming Уэсли Чана — большая книга около 750 страниц. Первая часть книги рассказывает об основных возможностях Python. Вторая часть предлагает доступное введение в более сложные области, включая многие из тех, что были перечислены выше.
  2. Python. Подробный справочник Дэвида М. Бизли — небольшая книга со справочной информацией о языке Python и модулях стандартной библиотеки. В книге имеется очень хороший указатель. 4-е издание книги вышло на русском языке в 2010 году в издательстве “Символ-Плюс”.
  3. Python. Карманный справочник Марка Лутца в самом деле помещается в кармане. Хотя и не такая всеобъемлющая, как Python. Подробный справочник, эта книга — удобный справочник по наиболее часто использующимся функциям и модулям. Марк Лутц является также автором книги Программирование на Python, одной из самых первых (и самых объемных) книг по Python, не адресованной начинающим программистам. Его другая книга, Изучаем Python, меньше в объеме и лучше подходит начинающим программистам. 4-ое издание этой книги вышло на русском языке в 2011 году в издательстве “Символ-Плюс”.
  4. Программирование на Python для Win32 (англ.: Python Programming on Win32) Марка Хэммонда и Энди Робинсона — книга, которую просто необходимо иметь всем, кто использует Python для разработки приложений по Windows. Среди многих тем, в книге обсуждается взаимодействие Python и COM, рассматривается создание wxPython-приложения, и даже демонстрируется использование Python для автоматизации Word и Excel.

Рекомендуемые книги по информатике

Среди следующих книг, рекомендуемых для дальнейшего чтения, много любимых книг автора. Это книги о хороших практиках программирования и информатике вообще.

  1. Практика программирования (англ.: The Practice of Programming) Кернигана и Пайка рассказывает не только о разработке и кодировании алгоритмов и структур данных, но также об отладке, тестировании и повышении производительности программ. Приводятся примеры на языках C++ и Java.
  2. Элементы стила Java (англ.: The Elements of Java Style) под редакцией Эла Вермулена — небольшая книга, в которой обсуждаются многие вопросы хорошего стиля программирования, такие как соглашения об именовании, комментарии и даже пробелы и отступы (последнее не является проблемой в Python). В книге также рассматривается программирование по контракту, использование утверждений (assertions) для обнаружения ошибок при проверке пред- и постусловий, работа с потоками и их синхронизация.
  3. Жемчужины программирования (англ.: Programming Pearls) Джона Бентли — классическая книга. Она создана на основе материалов, первоначально размещенных в авторской колонке издания Communications of the ACM. В частности, книга рассказывает о компромиссах в программировании, и почему часто первая идея относительно реализации программы оказывается не самой лучшей. 2-е издание книги вышло на русском языке в издательстве “Питер” в 2002 году. В книге много упражнений, некоторые с решениями, другие — с подсказками.
  4. Новый омнибус Тьюринга (англ.: The New Turing Omnibus) А. К. Дьюдни предлагает увлекательное введение в 66 проблем информатики, от параллельных вычислений до компьютерных вирусов, от компьютерной томографии до обобщенных алгоритмов. Каждая тема небольшая по объему. Более ранняя книга Дьюдни Вселенная в кресле (англ.: The Armchair Universe) — подборка его статей из колонки Компьютерный досуг (англ.: Computer Recreations) в журнале Scientific American. Обе книги являются богатыми источниками идей для проектов.
  5. Черепахи, термиты и дорожные пробки (англ.: Turtles, Termites and Traffic Jams) Майлка Резника — книга о силе децентрализации и о том, как возникает сложное поведение из скоординированных простых действий множества агентов. Книга представляет язык StarLogo, позволяющий пользователям программировать агентов. Выполнение программы демонстрирует сложное поведение, часто противоречащее интуиции. Многие из программ в этой книге были разработаны студентами средней и старшей школы. Подобные программы могут быть написаны и на Python с использованием несложной графики и потоков.
  6. Гедель, Эшер, Бах. Эта бесконечная гирлянда (англ.: Godel, Escher, Bach: An Eternal Golden Braid) Дугласа Хофштадтера. Коротко говоря, если вы видите магию в рекурсии, то вы найдете ее и в этой книге, ставшей бестселлером. Одна из тем книги — странные циклы, когда некоторые упорядоченные структуры развиваются и усложняются, чтобы на определенном этапе встретиться сами с собой. Точка зрения Хофштадтера состоит в том, что эти необычные циклы — существенная часть того, что отличает живое от неживого. Автор демонстрирует упорядоченные структуры в музыке Баха, картинах Эшера и теореме Геделя о неполноте.