Monday, May 9, 2011

Scala in Action. Впечатление


Книга Scala in Action by Nilanjan Raychaudhuri пока доступна только в черновом варианте и завершена только наполовину (8 глав из 14), однако уже вполне читабельна. У самого автора познавательный твиттер.

На момент прочтения книги были доступны следующие главы:
  1. Why Scala?
  2. Getting started
  3. Revitalizing your object oriented skills 
  4. Having fun with functional data structures
  5. Building a web application in functional style
  6. Connecting to a database
  7. Making concurrent programming easy
  8. Building confidence with testing


Общее впечатление: книга познавательна и полезна, автор хорошо образован и знает о чем пишет. Где надо, смело используется (или по крайней мере, упоминается) необходимый термин из теории, что внушает уважение, ибо книга вроде бы написана "for masses" - например, описано, что передача функций реализована через eta-expansion, много ссылок на haskell-wiki.

Не знаю, насколько книга будет полезна как введение в Scala, но книга очень хороша как обзор инструментов/библиотек плюс занимательное чтиво. Вообще, занимательные врезки и любопытные замечания автора - достоинство книги.

Из практически полезного разобрано:
MongoDB,  SBT, Scalaz, Squeryl, H2, jQuery UI, ScalaCheck, Specs. (Был впечатлен как красиво для SBT пишется собственный task.)

Для расширения горизонта упоминаются (иногда поверхностно объясняются):
ScalaQueryQuerulous, Scalate, Functional Java, JetLang, Kilim, GuiceAwaitility.

Удачные места в книге:

  • Прекрасно объяснены инвариантность, ковариантность и контрвариантность типов через рассмотрение данных с точки зрения изменяемости: мутабельные данные должны быть инвариантны, 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 - год-два назад это еще не шло в массы, а через год-другой вы будете жалеть, что не сделали этого раньше.

3 comments:

  1. У них еще будет Lift in Action и Scala in Depth... про DSL есть хорошая книжка DSLs in Action (я про нее писал)

    ReplyDelete
  2. кстати, все эти книги по скале должны выйти летом, насколько я знаю

    ReplyDelete
  3. "Scala in Depth" я сейчас читаю - решил не дожидаться окончательного варианта.

    ReplyDelete