Продолжаем поиск лучшей книги по программированию на Питоне и сегодня на обзоре книга Рика Гаско «Простой Python. просто с нуля».
На первый взгляд может показаться, что Рик Гаско — это иностранный автор, а данная книга — это не перевод. Но, на самом деле Рик Гаско — это псевдоним, судя по содержанию, какого-то средней руки преподавателя или учителя информатики. И у него не одна книга, а целая серия компьютерной литературы по программированию, математике и ООП. Но нас интересует в первую очередь Python поэтому давайте заглянем внутрь.
Сама книга содержит 256 страниц и при этом она формата А5, а это очень мало для хорошего объяснения Python. К тому же, автор очень много пишет не по теме. Даже не про IT — это какие-то анекдоты, советские истории, цитаты великих людей, и всё это в целом еще сильнее уменьшает концентрацию пользы.
Вообще, когда я начал читать эту книгу, то ощущения были схожи со стилем Тони Гэддиса, только в «Начинаем программировать на Python» ты читаешь и тебе хочется еще и еще больше узнать о развитии компьютеров и возможностях Python, а тут ты читаешь и просто не можешь остановиться в ожидании какого-нибудь перла, который выкинет автор. И он радует своими мыслями и комментариями буквально через абзац.
Устаревшая информация
Только вот к питону это ни имеет никакого отношения, да и сам Python тут версии 2.7. А это всё, клиника. Хотя, казалось бы, книга 2022 года. Вообще-то первое издание вышло в 2018 году и, судя по всему, эти четыре года книга просто переиздавалась. Но Python 3 вышел в 2008 году, за 10 лет до первого издания книги и к 18 году он уже был более чем в ходу, так что почему тут используется именно вторая версия — для меня загадка.
Именно из-за второй версии вы встретите в книге такие конструкции как xrange.
xrange в Python 2, это то же самое что и range в python 3. В ранних версиях питона, функция range генерировала последовательность чисел сразу, а не по одному за раз. Что негативно сказывалось на оперативной памяти при больших циклах.
Когда же в Python появились концепция итераторов, которые могли поставлять по одному значению за раз, то сперва, во второй версии, использовали xrange, а уже в третьей версии xrange заменили на просто range.
И это одна из причин, почему программы на python2 могут не работать в третьем питоне. И, собственно, в книге мы будем работать по большой части с xrange, что морально устарело.
Также тут вы встретите оператор print. Не функцию как в Python 3, а именно оператор, который не требует наличия открывающей и закрывающей скобки. Разумеется, такой код в третьем питоне работать не будет.
Что еще вы можете тут встретить? Во-первых, это не понимание автором того, что при выводе, функция и оператор print разделяют выводимые данные пробелом, поэтому дополнительный пробел, после равенства тут не нужен. Программа не сломается, но это просто не красиво.
Также вы встретите тут функцию raw_input, которая в python 3 была переименована просто в input.
Разумеется, вы найдете в книге строку, которая сообщает интерпретатору, в какой кодировке находится файл. В python 3 такая строка не нужна, так как все файлы по умолчанию должны находиться в кодировке utf-8.
Также, помимо устаревшей информации, вы найдете тут массу опечаток, особенно связанных со строками.
Например, в коде ниже нет чередования двойных и одинарных кавычек, что в целом программу не поломает, но фраза будет выведена не так как задумано:
А в этом примере кавычки чередуются, только вот редакторы используют неправильные двойные кавычки. Я точно не знаю, как они называются, похожи на французские лапки. В любом случае в Python так писать нельзя:
А здесь редакторы не поставили закрывающую скобку. Кстати, в какой-то момент автор перешел на функцию print(), но почему — он не объяснил. Возможно, он сам не до конца понимает разницу.
Хотя если смотреть в целом, то многие темы Рик Гаско объясняет весьма неплохо, например, глава по списки начинается бойко и понятно. Приводятся хорошие примеры.
Но надолго автора не хватает и уже через 6 страниц в главе «Списки плюс циклы. Начало. Философия» он полностью раскрывает свою некомпетентность в Python перебирая списки с помощью xrange, а не напрямую:
Вы справедливо можете заметить, что помимо элементов цикла в примере он выводит и индекс, поэтому тут это оправдано. И будете правы. Однако такой подход к перебору автор использует везде в книге, даже там, где индексы нам не нужны. Так что философию циклов автор явно не познал.
Хотя в одном из примеров, автор всё же приводит правильный перебор списка, но потом добавляет, что такой подход менее очевиден, и лучше использовать что-то более подлинное и традиционное.
Судя по всему, к традиционным он относит нотацию lowerCamelCase или CamelCase для имен функций и переменных. Возможно, это больше понятно лично ему, но это не лучшие практики с точки зрения Python, особенно если вы придерживаетесь PEP8.
Также автор прямым текстом сообщает, что не понимает, где могут пригодиться лямбда-функции, а также говорит, что ему не нравятся исключения. И, собственно, тут вы не найдете ни лямбд, ни исключений. Да и ООП тут нет, хотя сам Рик Гаско утверждает, что он очень хорошо разбирается в объектно-ориентированном программировании, не просто хорошо, а лучше, чем Марк Лутц. Прямо так и пишет. Конечно, самоуверенности у Рика Гаско много, только вот мне не понятно, почему он использует псевдоним, раз он так хорош.
Что ж пришло время итогов, разумеется, я эту книгу не рекомендую ни в каком виде. В моём рейтинге она уходит далеко в конец, и это не столько из-за нагловатого стиля изложения, сколько из-за её устаревшей информации. Эта книга вам не нужна. Радует, что те, кто не смотрит мои обзоры, вряд ли купят это творение, так как книга издана всего в 100 экземплярах, я даже не знал, что такое бывает.
Ну а те, кто смотрит, ставьте лайк и подписывайтесь на канал. На этом у меня всё, пока и успехов в учебе!