Четырнадцатый десяток прочитанных книг и журналов
14 января 2016
Настало время вновь поговорить об интересных книгах. Так получилось, что в этот раз почти все книги будут как-то связаны с программированием на C++, Си и даже ассемблере. Также мне чисто случайно под руку подвернулись книжка про Sphinx и книжка про CentOS. Предыдущие мои рецензии: тринадцатый десяток, двенадцатый десяток, одиннадцатый десяток, десятый десяток.
C in a Nutshell, 2nd Edition
Peter Prinz, Tony Crawford
Свежая (2015 год) книга о Си, обновленная с учетом стандартов C99 и C11. Из почти 1000 страниц примерно половина посвящена детальному описанию всех функций стандартной библиотеки C11, что делает данную книгу незаменимым настольным справочником. Много дотошного описания каждого отдельного оператора, разбора случаев, когда возникает неопределенное поведение и подобных вещей. Словно читаешь стандарт по языку.
Хотя, надо признать, вдумчиво читать такое от начала до конца — не очень интересно. Я лично эти части пробежал по-диагонали. В остальном книга очень классная. Рассматривается работа с юникодом, комплексными числами, TLS, мьютексами, атомарными переменными, conditional variables и прочей многопоточностью, а также i18n. Плюс в книге есть памятка по флагам gcc, использованию make (узнал, что в GNU’том make можно писать что-то вроде процедур) и отладчику gdb.
Благодаря этой книге я узнал про существование restrict и _Static_assert. А еще я понял, что что Си является действительно очень сложным языком. И пусть объем книжки Кернигана и Ритчи не вводит вас в заблуждение. Я стал намного лучше понимать людей, которые не любят C++ (небезызвестный пример — Линус Торвальдс). Си уже достаточно сложный и запутанный, чтобы не помещаться целиком в голову одного среднего по больнице человека, что уж говорить о C++.
Книга очень понравилась, настоятельно рекомендую ее всем к прочтению.
Pragmatic Version Control: Using Subversion, 2nd Edition
Mike Mason
Решил прочитать книжку про Subversion. А то сколько можно — все Git, да Git.
В начале довольно много воды про то, что вообще такое системы контроля версий и зачем они нужны. Книга явно рассчитана на тех, кто раньше не пользовался системами контроля версий или пользовался только CVS. Вообще, в книге очень много сравнения CVS и Subversion.
Я уж было подумывал начать читать другую книгу. Но вдруг началось нормальное повествование, состоящее в основном из примеров использования Subversion, чего я и ожидал.
В целом, книга понравилось. Ставлю ей пять с маааленьким минусом за накрутку объема.
Mastering CMake
Ken Martin, Bill Hoffman
Благодаря этой книге я узнал про существование CTest, CDash и CPack, а также cmake-gui и ccmake. Последний представляет собой интерфейс к CMake на curses.
Понял, насколько действительно сложна разработка под разные платформы, особенно когда дело касается разных путей до заголовочных файлов, того факта, что динамические библиотеки работают немного по-разному, и так далее.
Книга подробно расписывает создание инсталляторов и пакетов под различные ОС с помощью CPack. Приводится много примеров кросскомпиляции. Примерно треть книги состоит из полного перечня аргументов командной строки, имен переменных, и так далее. Это сильно испортило впечатление от нее.
В итоге моя оценка — всего лишь четыре из пяти.
Boost.Asio C++ Network Programming
Wisnu Anggoro, John Torjo
Книга повествует о том, как писать кроссплатформенные сетевые приложения на крестах. Книжка небольшая. Все выглядит довольно няшненько, в том числе примеры асинхронного кода. Все делается через простой и понятный набор классов и вообще выглядит так, словно пишешь на каком-нибудь Python. Есть мнение, что именно так и должен выглядеть современный С++.
В книге есть примеры работы с протоколами TCP, UDP и ICMP, написания синхронного и асинхронного кода, плюс работа с таймерами, файлами, обработка сигналов, и другие вещи. Что приятно удивило, код можно писать как с использованием исключений, так и на кодах возврата. Еще объясняется отличие Asio от Boost.Asio, использование OpenSSL, а также корутины, которые очень напомнили мне футуры в Scala с применением for comprehension.
Книга понравилась, пять из пяти. Плюс, оказывается, в свободном доступе есть перевод на Хабре. Интересно, это легально?
CentOS System Administration Essentials
Andrew Mallett
Книга о том, как пользоваться CentOS. Рассматриваются следующие вопросы — эффективная работа в bash, использование Vim, настройка GRUB, работа с файловой системой BTRFS, управлением пакетами при помощи Yum, а также создание своих репозиториев и RPM пакетов, установка / настройка Nginx и LEMP-стека, работа с LDAP и Puppet, плюс основы настройки SELinux.
Отличная книга для тех, кто уже неплохо знает Debian / Ubuntu и хочет быстро разобраться в RHEL / CentOS.
Windows via C/C++. Программирование на языке Visual C++
Джеффри Рихтер, Кристоф Назар
Не очень новая (2009 год) книга о программировании под Windows, но, по заверению специалистов, все еще актуальная и, пожалуй, лучшая из всего, что есть. С одной стороны, книгу не очень интересно читать, так как это в сущности пересказ MSDN почти на 1000 страниц. С другой, есть описание очень интересных и неявных моментов. Например, почему вы не должны хотеть вызывать напрямую CreateThread, если в проекте используется рантайм языка Си или С++. Ну и, конечно, куда же без классики на тему внедрения в адресное пространство процесса и перехвата системных вызовов!
Общее впечатление от книги хорошее, читать все еще можно. Примеры программ и их нудный построчный разбор при желании можно пропустить.
Программирование на ассемблере на платформе x86-64
Руслан Аблязов
Решил вот освежить свои знания ассемблера. С ним я игрался еще в институте, притом писал на MASM32 под 32-х битный Windows XP. А здесь книга обещает нам рассказать про компилятор FASM и x64.
Если честно, я ожидал довольно легкого чтива не тему как работать с WinAPI и вот про это все. Но книга оказалась куда более хардкорной. Начинается повествование с объяснения программирования в защищенном режиме, вообще без какой либо ОС. В том числе объясняется работа с прерываниями, механизм трансляции адресов и многозадочность. Притом, есть не только теория, но и вполне реальные примеры кода. То есть, фактически, в книге объясняется все, что необходимо для написания своей ОС. Также не обошлось без объяснения работы с WinAPI и написания драйверов под Windows.
Бесспорно, это одна из лучших книг, прочитанных мной за последнее время.
C++ Game Development Primer
Bruce Sutherland
Очень небольшая книжка про то, как написать свой собственный не очень эффективный аллокатор памяти, что такое паттерны Factory, Observer и Visitor, что такое сериализация и как она помогает реализовать в играх сейвы, как работать с многопоточностью и как писать кроссплатформенные приложения на C++.
Мне лично книга не понравилась. Какая-то капитанская сборная солянка вообще ни о чем.
Introduction to Search with Sphinx: From installation to relevance tuning
Andrew Aksyonoff
Не очень новая (2011 год), но вроде все еще вполне актуальная книжка по системе полнотекстового поиска Sphinx. Описывает, как и можно было ожидать, установку и настройку Sphinx, синтаксис языка запросов SphinxQL, и подобные вещи. Что интересно, в книге также содержится довольно много интересного по теории полнотекстового поиска вообще, без особой привязке к Sphinx. Написано все просто и понятно, практически без воды. Мне книга понравилась, ставлю ей пятерку.
SCons User Guide
Steven Knight and the SCons Development Team
Очень приятная бесплатная книжка, которую можно скачать на scons.org. Раз уж прочитал книгу про CMake, дай думаю ознакомлюсь и с SCons заодно. В целом SCons понравился мне намного больше, чем CMake. Синтаксис у SCons намного приятнее и строже. Это даже никакой не DSL, а просто набор классов на всем известном и понятном Python. CMake же имеет очень странный синтаксис (один только if(expression) … endif(expression) чего стоит!), да и по семантике, помнится, у меня были какие-то вопросы.
Ну и тот факт, что документация по SCons распространяется бесплатно и в формате PDF, внушает мне намного больше доверия, чем книга по CMake, которую можно только купить на Amazon, притом только в бумажном формате. Если вот прямо сейчас выбирать для нового проекта между SCons и CMake, я бы не раздумывая выбрал SCons.
Было также несколько книг, которые не пошли. Пытался читать Learning Django Web Development. Редкая нудятина, плюс в коде оказались испорчены отступы. Испорчены отступы в коде на Python! Решил, попробую вместо нее Django: Практика создания Web-сайтов на Python. Прямо таки печатную версию заказал. Книга вроде неплохая, но на 108-ой странице я остановился. Обычный MVC-фреймворк, ничего примечательного, скучно как-то стало. В общем, читать книги про Django, как выяснилось, я не в состоянии.
А какие книги вы не смогли осилить в последнее время?
Дополнение: Пятнадцатый десяток прочитанных книг и журналов
Метки: Литература.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.