Предисловие к русскому изданию

Эту книгу я встретил очень кстати. У меня давно зрело желание познакомиться с языком Python, и вот весной 2010 года вместе с моим 10-летним сыном Иваном мы решили его осуществить. Мы читали вслух 2-ое издание этой книги на английском языке. В результате, Ваня познакомился с основами программирования и научился писать простые программы на Python. Энтузиазм, с которым он осваивал программирование, заглядывал вперед, делился сделанными открытиями стал для меня неожиданной и очень приятной наградой. Книга ориентирована авторами на учеников старших классов школы, поэтому время от времени Ивану требовались дополнительные разъяснения. Но это сделало совместное изучение книги только интереснее.

Книга приятно удивила меня вот в каком отношении. Хотя она адресована людям, которые только начинают изучать программирование, книга рассказывает о приемах и лучших практиках разработки из арсенала профессиональных программистов. Это разработка дизайна программы, автоматическое модульное тестирование, приемы отладки, использующие вспомогательный код (“строительные леса”), и многое другое. Таким образом, книга не играет в программирование с новичками, а дает основные понятия и навыки, необходимые для профессиональной работы.

В книге нет обсуждения низкоуровневых деталей программирования, таких, как двоичный код или байтовая организация данных. Однако есть обсуждение типов данных, встроенных в Python, а также абстрактных структур данных: списков, словаря, стека, очередей, деревьев. Читатель, кроме конструкций языка Python, знакомится с понятиями алгоритма, рекурсии, чистых функций и функций с побочными эффектами, осваивает основы процедурного и объектно-ориентированного программирования. То есть, книга учит читателя как раз тому, что обещает ее название: мыслить (и работать) как программист.

Работая над русским вариантом книги, я сделал некоторые изменения и дополнения.

Авторы исходили из того, что читатель работает с Python в ОС семейства Linux, и в ряде мест в оригинале даже присутствует привязка к конкретным версиям ОС Ubuntu. Я отступил от этой практики. Ведь изучать программирование с помощью Python можно с равным успехом и в ОС Windows.

Англоязычные строки и комментарии в примерах программ оставлены без изменения. Дело в том, что использование русского языка в программах требует дополнительных знаний и усилий. А начинающим программистам дополнительные сложности ни к чему. Однако, в Приложении A подробно изложено, как подружить Python и русский язык, если вы работаете в ОС Windows. Руководствуясь приведенными инструкциями, все желающие смогут русифицировать примеры из книги.

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

Отмечу один случай нетрадиционного перевода термина. Исходные тексты программ на интерпретируемых языках программирования по-английски называют “script”. Это слово в литературе по программированию часто переводят на русский как “сценарий”. Слово “script” имеет много значений, связанных с письменностью. И “сценарий” — лишь одно из них. Ни я, ни кто-либо из моих знакомых коллег-программистов не использует слово “сценарий” в повседневном профессиональном общении, предпочитая ему короткое “скрипт”. Вот почему в книге используется слово “скрипт”.

В разных странах при записи чисел по-разному отделяют целую часть числа от дробной. В России пишут 3,14 через запятую. Во многих англоязычных странах, а также в языках программирования, пишут 3.14, через точку. Поскольку в книге много примеров программ и объяснений этих примеров, то для единообразия я повсюду использую точку в качестве такого разделителя. А тип данных для хранения действительных чисел называется “число с плавающей точкой” вместо “число с плавающей запятой”. Надеюсь, что последовательное применение точки в примерах и остальном тексте книги не затруднит, а облегчит чтение.

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

Для меня перевод книги такого объема был совершенно новым делом, и в ходе работы я сделал для себя много попутных открытий. Среди прочего, мне пришлось учиться работать с литературным текстом, освоить систему подготовки документации Sphinx. Кроме того, пришлось потребовать от себя элементарной дисциплины для того, чтобы завершить начатую работу. Соприкоснувшись с Python и его “экосистемой”, насчитывающей тысячи библиотек и пакетов для разных приложений, я также понял одну важную вещь. Я понял, что информационные технологии обязаны занять в интеллектуальной жизни человека более важное место, чем они занимают сегодня.

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

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

Оригинальную версию книги на английском языке можно найти на сайте проекта Открытая Книга по адресу http://openbookproject.net. Размещенные там книги доступны для скачивания, чтения, изменения и распространения без каких-либо практических ограничений. Такой подход создает отличную возможность для улучшения текстов, их адаптации к конкретным нуждам и распространения среди всех заинтересованных лиц. Данный перевод книги на русский язык не является исключением, см. раздел О правах на эту книгу. Как и открытый код в программировании, открытые книги способствуют коллективному и личному творчеству, и свободному развитию тех, кто с ними соприкасается.

Андрей Трофимов,
инженер-программист,
Владивосток, Россия