Суммарно мне потребовалось на это где-то 2.5 года, но в итоге рубеж в одну сотню книг был успешно преодолен! А значит пришло время предоставить вашему вниманию очередной отчет о последних десяти прочитанных мною книгах. Преимущественно это были книги, посвященные Java, Scala и Akka, но не только. Рецензии на ранее прочитанные мной книги вы найдете по следующим ссылкам: девятый десяток , восьмой десяток , седьмой десяток , шестой десяток .
Книга по языку программирования Rust. Можно скачать бесплатно с официального сайта языка. Правда, к моменту написания этой заметки, она уже успела переименоваться в книгу «The Rust Programming Language» и переехать сюда . Книгу я собрал из HTML-я с помощью плагина Print Friendly & PDF для Google Chrome. Также я скопипастил в Google Docs все остальные гайды, доступные на сайте языка, и экспортировал их в PDF.
Что касается самого «The Rust Guide», то книга очень хорошая. То, что нужно, для быстрого введения в язык. Прочие же гайды оказались сыроваты, полны меток TODO и так далее, но тоже полезными. В общем, книгу я одобряю, сам Rust тоже. В этом блоге есть заметки с моими первыми впечатлениями от языка Rust , а также размышлениями об управлении памятью , которые могут вас заинтересовать. Обе заметки были написаны под впечатлением от этой книги.
Joshua Bloch
Второе издание книги вышло в 2008 году, то есть, лет 7 назад, но книга все еще хороша. К производительности имеет довольно посредственное отношение. Немного напоминает «Совершенный код» Макконелла, но более применимый к Java. Есть много интересных примеров касательно Java. Особенно понравился пример с утечкой памяти при реализации стека .
С другой стороны, лично мне книжка показалась слишком капитанской. В ней приводится множество советов из серии «постарайтесь не использовать null», «используйте enum’ы вместо числовых констант», «используйте сеттеры и геттеры, они позволят вам изменить реализацию», и так далее. Я надеялся, что в ней будет больше тонкостей, касающихся самой JVM, что могло бы пригодится при программировании на Scala. Но книга посвящена именно Java, а не вообще JVM. Если вы со всеми упомянутыми рекомендациями знакомы, книгу можете не читать. Если же не знакомы, читайте обязательно!
Jurg van Vliet, Flavia Paganelli
Вводная книжка по Amazon Web Services . Объясняет, что такое EC2, RDS, ELB и прочие страшные непонятные слова. К сожалению, книга сильно устарела (2011 год). Скажем, про DynamoDB там нет ни слова, а про Aurora и Lambda — тем более. Читать категорически не советую. Ознакомьтесь лучше с официальной документацией AWS, она довольно годная.
Еще есть книга Resilience and Reliability on AWS этих же авторов, поновее, 2013-го года. На самом деле, я хотел прочитать именно ее, но во введении авторы рекомендовали сначала прочитать «Programming Amazon EC2», что я и сделал. Судя по оглавлению, в «Resilience and Reliability on AWS» речь идет о развертывании в облаке Амазона PostgreSQL, ElasticSearch, MongoDB и Logstash. Выглядит все это довольно интригующе, но после разочарования в «Programming Amazon EC2» читать вторую книгу я не решился. Может быть, в другой раз.
Navin Sabharwal, Manak Wadhwa
Книжка про то, как устанавливать-настраивать Chef, а потом рулить с его помощью машинками. Пошла у меня очень плохо. Если честно, я понял по ней только то, что нужно писать очень много рецептов на Ruby и что как на самом деле пользоваться Chef станет понятно только на практике. На самом деле, знакомые специалисты по Chef именно об этом мне и говорили, дескать не нужно ничего читать, ставь и разбирайся.
После прочтения этой книги меня не покидало чувство какого-то невыполненного долга, поэтому в дополнение к ней я решил также прочитать Ansible Tower User Guide . Этот гайд пошел у меня намного лучше. По крайней мере, установить и настроить Ansible Tower у меня получилось. Хотя он мне в итоге и не понравился, о чем я писал ранее. Зато чувство невыполненного долга ушло.
Paul Chiusano, Runar Bjarnason
Поначалу книга казалась вроде бы ничего. Но потом постепенно стали закрадываться сомнения. Слишком уж много всего намешано. Тут и самописные (!) футуры , и парс трансформеры и проперти бейзет тесты и чего только нет. Scalaz, кстати, вопреки ожиданиям, в книге не оказалось. В общем, если вам хочется объяснения монад и моноидов через трейты и классы, а также множества соответствующих упражнений, то книга что надо. Как мне кажется, лучше уж читать про Haskell. С другой стороны, если у вас в команде завелся новичок, который не знает про монады и не хочет учить Haskell, то книжка может пригодиться. Во всех остальных случаях я бы не рекомендовал.
Scott Oaks
Книга о том, как правильно оптимизировать приложения, работающие под виртуальной машиной Java. Притом, не обязательно написанные именно на Java. Очень много интересных подробностей о работе JIT компилятора, различных сборщиках мусора и так далее. Все это, понятное дело, с описанием различных флагов JVM, куда же без этого. Также к своему удивлению я обнаружил в книге немало интересного о нововведениях в Java 8. В качестве, по всей видимости, бонуса, рассказывается про Java EE и типичные приемы оптимизации веб-приложений.
Книга местами немного скучновата, но бесспорно заслушивает прочтения всеми, кто работает с JVM. Моя оценка — твердая пятерка.
Joshua D. Suereth
И опять-таки, поначалу все чинно-блинно. Объясняется, как неизменяемые данные помогают избавиться от лишних блокировок, зачем у Option есть методы foreach, map и flatMap, в каких случаях какие коллекции следует использовать и все такое. Но потом начинается и жесть вроде как изобразить зависимые типы в Scala, много жести. И еще объяснение аппликативных функторов и монад, куда же без этого.
При этом книга, к сожалению, уже устарела (май 2012). В частности, в ней объясняются манифесты, когда в наши дни про них следует забыть в пользу тайптэгов . И вообще все в контексте Scala 2.8 и 2.9, как я понял. А еще там есть про старые акторы и про Akka какой-то древней версии где еще есть транзакторы .
В целом, книга довольно сложна для восприятия и я не нашел в ней большой практической ценности. Скорее всего, вы никогда не столкнетесь с теми тонкостями языка Scala, о которых идет речь. Что еще хуже, вы можете понять и использовать эти знания там, где это не требуется, только запутав ваших коллег. По моему мнению, книга в лучшем случае бесполезна, а в худшем — вредна, и потому не нужно ее читать.
Видимо, немного утомившись от книжек по языку Scala, я решил попробовать переключиться на какой-нибудь другой JVM-язык. Мой выбор пал на Kotlin от компании JetBrains. Скачать документацию по языку можно отсюда . Увы и ах, формата PDF не предусмотрено, но добрые люди собрали его своими силами и выложили здесь . Также пара сборок была обнаружена тут .
Что касается самого языка Kotlin, он произвел на меня исключительно положительное впечатление. Эдакая Scala, только проще, быстрее компилируется и без кучи своих фреймворков. Вместо собственных библиотек, видимо, предлагается использовать существующие Java-библиотеки. Впрочем, о впечатлении, которое на меня произвел Kotlin , вы сможете прочитать в отдельном посте. Что же до документации, то она очень хороша. Все просто и по делу. Зная Java и имея некие представления об ФП, при сильном желании язык можно выучить за один вечер. Рекомендовано к прочтению всем, кто устал от многословности Java или медленной компиляции и сложности Scala, не пожалеете.
Brian Ward
В свое время эту книгу хорошо пропиарили на LOR , благодаря чему она и попала в этот обзор.
Начинается с основ — для чего вообще нужны ОС, как пользоваться шелом, где какие файлы лежат, и так длаее. Есть подробное описание этапов загрузки системы. Не обошлось и без традиционного рассказа про утилиты типа top, vmstat, iostat и прочие, но в этом плане книга намного менее подробна и интересна чем Systems Performance: Enterprise and the Cloud . Также присутствует классика в стиле что такое TCP/IP, основные демоны, как писать скрипты, основы программирования на языке Си, и прочее в таком духе.
Честно говоря, в целом книга не понравилась. Слишком много всего намешано и все довольно поверхностно. Ничего принципиально нового я из нее в итоге не узнал. С другой стороны, для новичков в мире Linux будет самое то.
Документация по Akka Streams и Akka Http , которые ждут нас в Akka 2.4. Скачать можно отсюда .
Akka Streams — это что-то вроде кондуитов из мира Haskell . Правда, как мне показалось, Akka Streams куда мощнее и гибче. Akka Http представляет собой что-то вроде аналога Scotty из все того же мира Haskell. Как Scotty зависит от кондуитов, так и в пакете Akka Http используются стримы.
Кроме основ, в документации также очень много подробного разжевывания того, как писать свои Flow и прочего в таком духе. Сомневаюсь, что с последним вы будете слишком уж часто сталкиваться на практике. Также расписана интеграция стримов с акторами и футурами, которая позволяет использовать стримы для back pressure чуть ли не по всей системе. Еще, помимо прочего, приводятся примеры написания TCP клиента и сервера с использованием стримов. Немного расстроило, что вебсокетов в Akka Http, похоже, нет, во всяком случае — пока. Зато есть gzip и ssl из коробки.
В версии документации 1.0-M3, которую я читал, еще есть несколько параграфов с пометкой TODO. Например, параграфы про HTTP клиент и тестирование, к сожалению, отсутствуют. Но в целом все основные моменты описаны. Как и остальная документация по Akka, «Akka Streams and HTTP Documentation» прекрасна и должна быть прочитана всеми, кто использует Akka, или просто интересуется происходящим в этом проекте.
Предвидя массу традиционных вопросов в стиле «Где же ты находишь время так много читать?» или «Ой, батюшки, а как же художественная литература?», хотелось бы сразу дать ссылку на соответствующий FAQ , в котором вы найдете ответ на эти, а также не многие другие подобного рода вопросы.
А что интересного вы читали в последнее время?
Дополнение: Одиннадцатый десяток прочитанных книг и журналов