Дочитал книгу Марка Лутца «Изучаем Python», выход которой ждал еще с ноября прошлого года. Книга, как и ожидал, оказалась просто отличная, особенно понравилась манера изложения автора. Похоже именно так и надо писать технические книги.
А манера эта состоит в том, что сначала Лутц начинает рассказывать о какой-то теме в общих чертах, чтобы было понятно даже новичку (книга все-таки считается учебником по Python, хоть и предполагает средний уровень подготовки читателя), но постепенно доходит до очень низкоуровневых вещей, которые будут интересны и тем, кто язык Python уже знает, а элементы языка разбирает буквально по косточкам, чтобы не осталось ни одного недопонятого момента.
Например, в главе, посвященной общей работе интерпретатора, начинается все с того, как вообще можно запускать скрипты (двойной клик, командная строка и т.п.), затем рассказывается о том как работает виртуальная машина Python, какие файлы и когда она создает, а затем рассказывается о разновидностях Python – CPython, IronPython, JPython, после чего коротко говорится о способах ускорения скриптов с помощью сторонних библиотек (Psyco, Shedskin C++) и кратко упоминает библиотеки для создания полноценных exe-шников (py2exe, PyInstaller и Freeze). В конце каждой главы находится раздел, где автор описывает возможные ошибки при использовании элементов языка, рассмотренные в текущей главе. Некоторые моменты Лутц повторяет по несколько раз для тупых в течение одной главы, но это не раздражает, а новичкам, думаю, это должно сильно облегчить понимание.
Благодаря такому подходу книгу будет интересно читать и тем, кто с Python уже знаком. Я, например, в книге выяснил для себя вопрос, который меня давно волновал: является ли класс list связанным списком. Оказалось, что нет, внутри языка это обычный массив, в некотором роде аналог std::vector из C++. За одно я узнал о существовании некоторых конструкций вроде «a < X < b«. Некоторые конструкции, которыми пользовался до этого, стали казаться более логичными, чем до прочтения книги. Да и вообще появилось ощущение, что все элементы языка выстроились в законченную мозаику.
Понравилось, что Лутц постоянно сравнивает элементы языка Python с похожими элементами других языков (в основном C). Кроме того автор постоянно делает сноски на возможности Python 2.6 и 3.0, которые еще только планировались, когда писалась книга, и в то же время он пишет в какой версии языка появилась та или иная фича.
Из недостатков могу назвать только цену книги. Я ее покупал на Савелке за 1100 рублей, а, как потом выяснилось, в Интернет-магазинах ее продают за 800 рублей. Я эту книгу покупал нам на кафедру, но теперь подумываю купить ее и себе домой. А может быть просто дождусь, когда ее выложат в инет
В общем, книга на твердую пятерку и на нее можно ставить штамп «маст рид». Теперь хотелось бы прочитать еще книгу того же Лутца «Programming Python», но, к сожалению, на русский ее не переводили, а дойдут ли руки до оригинала не знаю.
PS. Оказывается, «Programming Python» все-таки переводили на русский – http://www.ozon.ru/context/detail/id/1299270/. В электронном виде ее выложил Gluek у себя в блоге.