Первая сотня прочитанных книг и журналов

18 февраля 2015

Суммарно мне потребовалось на это где-то 2.5 года, но в итоге рубеж в одну сотню книг был успешно преодолен! А значит пришло время предоставить вашему вниманию очередной отчет о последних десяти прочитанных мною книгах. Преимущественно это были книги, посвященные Java, Scala и Akka, но не только. Рецензии на ранее прочитанные мной книги вы найдете по следующим ссылкам: девятый десяток, восьмой десяток, седьмой десяток, шестой десяток.

The Rust GuideThe Rust Guide

Книга по языку программирования Rust. Можно скачать бесплатно с официального сайта языка. Правда, к моменту написания этой заметки, она уже успела переименоваться в книгу «The Rust Programming Language» и переехать сюда. Книгу я собрал из HTML-я с помощью плагина Print Friendly & PDF для Google Chrome. Также я скопипастил в Google Docs все остальные гайды, доступные на сайте языка, и экспортировал их в PDF.

Что касается самого «The Rust Guide», то книга очень хорошая. То, что нужно, для быстрого введения в язык. Прочие же гайды оказались сыроваты, полны меток TODO и так далее, но тоже полезными. В общем, книгу я одобряю, сам Rust тоже. В этом блоге есть заметки с моими первыми впечатлениями от языка Rust, а также размышлениями об управлении памятью, которые могут вас заинтересовать. Обе заметки были написаны под впечатлением от этой книги.

Effective Java, 2nd EditionEffective Java, 2nd Edition
Joshua Bloch

Второе издание книги вышло в 2008 году, то есть, лет 7 назад, но книга все еще хороша. К производительности имеет довольно посредственное отношение. Немного напоминает «Совершенный код» Макконелла, но более применимый к Java. Есть много интересных примеров касательно Java. Особенно понравился пример с утечкой памяти при реализации стека.

С другой стороны, лично мне книжка показалась слишком капитанской. В ней приводится множество советов из серии «постарайтесь не использовать null», «используйте enum’ы вместо числовых констант», «используйте сеттеры и геттеры, они позволят вам изменить реализацию», и так далее. Я надеялся, что в ней будет больше тонкостей, касающихся самой JVM, что могло бы пригодится при программировании на Scala. Но книга посвящена именно Java, а не вообще JVM. Если вы со всеми упомянутыми рекомендациями знакомы, книгу можете не читать. Если же не знакомы, читайте обязательно!

Resilience and Reliability on AWSProgramming Amazon EC2
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» читать вторую книгу я не решился. Может быть, в другой раз.

Automation through Chef Opscode: A Hands-on Approach to ChefAutomation through Chef Opscode: A Hands-on Approach to Chef
Navin Sabharwal, Manak Wadhwa

Книжка про то, как устанавливать-настраивать Chef, а потом рулить с его помощью машинками. Пошла у меня очень плохо. Если честно, я понял по ней только то, что нужно писать очень много рецептов на Ruby и что как на самом деле пользоваться Chef станет понятно только на практике. На самом деле, знакомые специалисты по Chef именно об этом мне и говорили, дескать не нужно ничего читать, ставь и разбирайся.

После прочтения этой книги меня не покидало чувство какого-то невыполненного долга, поэтому в дополнение к ней я решил также прочитать Ansible Tower User Guide. Этот гайд пошел у меня намного лучше. По крайней мере, установить и настроить Ansible Tower у меня получилось. Хотя он мне в итоге и не понравился, о чем я писал ранее. Зато чувство невыполненного долга ушло.

Functional Programming in ScalaFunctional Programming in Scala
Paul Chiusano, Runar Bjarnason

Поначалу книга казалась вроде бы ничего. Но потом постепенно стали закрадываться сомнения. Слишком уж много всего намешано. Тут и самописные (!) футуры, и парс трансформеры и проперти бейзет тесты и чего только нет. Scalaz, кстати, вопреки ожиданиям, в книге не оказалось. В общем, если вам хочется объяснения монад и моноидов через трейты и классы, а также множества соответствующих упражнений, то книга что надо. Как мне кажется, лучше уж читать про Haskell. С другой стороны, если у вас в команде завелся новичок, который не знает про монады и не хочет учить Haskell, то книжка может пригодиться. Во всех остальных случаях я бы не рекомендовал.

Java Performance: The Definitive GuideJava Performance: The Definitive Guide
Scott Oaks

Книга о том, как правильно оптимизировать приложения, работающие под виртуальной машиной Java. Притом, не обязательно написанные именно на Java. Очень много интересных подробностей о работе JIT компилятора, различных сборщиках мусора и так далее. Все это, понятное дело, с описанием различных флагов JVM, куда же без этого. Также к своему удивлению я обнаружил в книге немало интересного о нововведениях в Java 8. В качестве, по всей видимости, бонуса, рассказывается про Java EE и типичные приемы оптимизации веб-приложений.

Книга местами немного скучновата, но бесспорно заслушивает прочтения всеми, кто работает с JVM. Моя оценка — твердая пятерка.

Scala in DepthScala in Depth
Joshua D. Suereth

И опять-таки, поначалу все чинно-блинно. Объясняется, как неизменяемые данные помогают избавиться от лишних блокировок, зачем у Option есть методы foreach, map и flatMap, в каких случаях какие коллекции следует использовать и все такое. Но потом начинается и жесть вроде как изобразить зависимые типы в Scala, много жести. И еще объяснение аппликативных функторов и монад, куда же без этого.

При этом книга, к сожалению, уже устарела (май 2012). В частности, в ней объясняются манифесты, когда в наши дни про них следует забыть в пользу тайптэгов. И вообще все в контексте Scala 2.8 и 2.9, как я понял. А еще там есть про старые акторы и про Akka какой-то древней версии где еще есть транзакторы.

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

Kotlin Language DocumentationKotlin Language Documentation

Видимо, немного утомившись от книжек по языку Scala, я решил попробовать переключиться на какой-нибудь другой JVM-язык. Мой выбор пал на Kotlin от компании JetBrains. Скачать документацию по языку можно отсюда. Увы и ах, формата PDF не предусмотрено, но добрые люди собрали его своими силами и выложили здесь. Также пара сборок была обнаружена тут.

Что касается самого языка Kotlin, он произвел на меня исключительно положительное впечатление. Эдакая Scala, только проще, быстрее компилируется и без кучи своих фреймворков. Вместо собственных библиотек, видимо, предлагается использовать существующие Java-библиотеки. Впрочем, о впечатлении, которое на меня произвел Kotlin, вы сможете прочитать в отдельном посте. Что же до документации, то она очень хороша. Все просто и по делу. Зная Java и имея некие представления об ФП, при сильном желании язык можно выучить за один вечер. Рекомендовано к прочтению всем, кто устал от многословности Java или медленной компиляции и сложности Scala, не пожалеете.

How Linux Works: What Every Superuser Should Know, 2nd EditionHow Linux Works: What Every Superuser Should Know, 2nd Edition
Brian Ward

В свое время эту книгу хорошо пропиарили на LOR, благодаря чему она и попала в этот обзор.

Начинается с основ — для чего вообще нужны ОС, как пользоваться шелом, где какие файлы лежат, и так длаее. Есть подробное описание этапов загрузки системы. Не обошлось и без традиционного рассказа про утилиты типа top, vmstat, iostat и прочие, но в этом плане книга намного менее подробна и интересна чем Systems Performance: Enterprise and the Cloud. Также присутствует классика в стиле что такое TCP/IP, основные демоны, как писать скрипты, основы программирования на языке Си, и прочее в таком духе.

Честно говоря, в целом книга не понравилась. Слишком много всего намешано и все довольно поверхностно. Ничего принципиально нового я из нее в итоге не узнал. С другой стороны, для новичков в мире Linux будет самое то.

Akka Streams and HTTP DocumentationAkka Streams and HTTP Documentation

Документация по 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, в котором вы найдете ответ на эти, а также не многие другие подобного рода вопросы.

А что интересного вы читали в последнее время?

Дополнение: Одиннадцатый десяток прочитанных книг и журналов

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.