Книга Scala in Action by Nilanjan Raychaudhuri пока доступна только в черновом варианте и завершена только наполовину (8 глав из 14), однако уже вполне читабельна. У самого автора познавательный твиттер.
На момент прочтения книги были доступны следующие главы:
- Why Scala?
- Getting started
- Revitalizing your object oriented skills
- Having fun with functional data structures
- Building a web application in functional style
- Connecting to a database
- Making concurrent programming easy
- Building confidence with testing
Общее впечатление: книга познавательна и полезна, автор хорошо образован и знает о чем пишет. Где надо, смело используется (или по крайней мере, упоминается) необходимый термин из теории, что внушает уважение, ибо книга вроде бы написана "for masses" - например, описано, что передача функций реализована через eta-expansion, много ссылок на haskell-wiki.
Не знаю, насколько книга будет полезна как введение в Scala, но книга очень хороша как обзор инструментов/библиотек плюс занимательное чтиво. Вообще, занимательные врезки и любопытные замечания автора - достоинство книги.
Из практически полезного разобрано:
MongoDB, SBT, Scalaz, Squeryl, H2, jQuery UI, ScalaCheck, Specs. (Был впечатлен как красиво для SBT пишется собственный task.)
Для расширения горизонта упоминаются (иногда поверхностно объясняются):
ScalaQuery, Querulous, Scalate, Functional Java, JetLang, Kilim, Guice, Awaitility.
Удачные места в книге:
- Прекрасно объяснены инвариантность, ковариантность и контрвариантность типов через рассмотрение данных с точки зрения изменяемости: мутабельные данные должны быть инвариантны, read-only данные могут быть ковариантными. (А write-only данные могут быть контрвариантными.)
- Объяснены higher-kinded types (в Scala in Depth они объясняются более подробно).
- В главе про Actors неплохо описаны Reactors.
Цитаты на заметку:
- "If you are used to meta-programming in Ruby, Groovy or other programming languages, implicit conversions are Scala’s way of doing meta-programming but in more controlled way."
- "Only handful of programmers knows how to write a correct concurrent application or program. The correctness of the program is very important here."
- "When Alan Kay first thought about object oriented programming his big idea was message passing. So in fact working with actors is more object-oriented than you think."
Из вкусностей, которые пока не описаны (но будут): Akka, Lift, DSLs.
Итог: стоит прочитать для расширения горизонтов. Вообще, по моим ощущениям, сейчас самое удачное время, чтобы запрыгнуть в поезд Scala - год-два назад это еще не шло в массы, а через год-другой вы будете жалеть, что не сделали этого раньше.
У них еще будет Lift in Action и Scala in Depth... про DSL есть хорошая книжка DSLs in Action (я про нее писал)
ReplyDeleteкстати, все эти книги по скале должны выйти летом, насколько я знаю
ReplyDelete"Scala in Depth" я сейчас читаю - решил не дожидаться окончательного варианта.
ReplyDelete