Отличная кника про язык, который хочет быть руби в мире джавы. Написана с юмором и очень подробно. Книга из двух половин. В первой - введение в динамическую типизацию и обзор стандартной библиотеки, концепции понятные еще со времен работы на питоне, за исключением примесей джавы - интерфейсы, опциональная статическая типизация (позволяющая пользоваться мультиметодами, что недоступно в питоне). Очень интересно каково это будет на практике.
Вторая половина посвящена написанию DSL - то чем так гордится руби. Было очень интересно смотреть, как метапрограммирование (в питоне за пол года мне однажды даже потребовался метакласс) конструкции языка и опциональность скобок, запятых, точек сказывается на возможностях этого самого DSL (хотя и не так богато как в руби). В заключении разбираются примеры различных DSL.
Отметил для себя развитие языка на нескольких примерах (GORM и SwingBuilder): в сторонней библиотеке красиво написали какую-то функциональность, это вносится в стандартную библиотеку груви, исходная библиотека переписывается на стандартный код. Описание простых примитивов на которых строятся сложные конструкции языка, эффективно уничтожает магию (хотя этих примитивов и больше чем в питоне, сказывается необходимость делать синтаксис совместимым с джавой). В отличие от PEP20 нет философии There should be one - and preferably only one - obvious way to do it. Для многих вещей есть сильно не один вариант реализации. Итог, книгу стоили прочитать раньше, поскольку многие крутые вещи типа замыканий, приходили долгим путем проб и ошибок, а в груви это настолько естественно и повсеместно что я был поражен. Хотя понял бы я их и как бы я их воспринял если бы начал читать раньше - большой вопрос. Одни изобретают деревянные велосипеды, а другие просто пришли в магазин и уехали на транспортном средстве из натотехнологий и современных материалов.
Итог: книга годная, джавистам, стоит бросить все и начать читать - гарантированно расширит сознание.
Вторая половина посвящена написанию DSL - то чем так гордится руби. Было очень интересно смотреть, как метапрограммирование (в питоне за пол года мне однажды даже потребовался метакласс) конструкции языка и опциональность скобок, запятых, точек сказывается на возможностях этого самого DSL (хотя и не так богато как в руби). В заключении разбираются примеры различных DSL.
Отметил для себя развитие языка на нескольких примерах (GORM и SwingBuilder): в сторонней библиотеке красиво написали какую-то функциональность, это вносится в стандартную библиотеку груви, исходная библиотека переписывается на стандартный код. Описание простых примитивов на которых строятся сложные конструкции языка, эффективно уничтожает магию (хотя этих примитивов и больше чем в питоне, сказывается необходимость делать синтаксис совместимым с джавой). В отличие от PEP20 нет философии There should be one - and preferably only one - obvious way to do it. Для многих вещей есть сильно не один вариант реализации. Итог, книгу стоили прочитать раньше, поскольку многие крутые вещи типа замыканий, приходили долгим путем проб и ошибок, а в груви это настолько естественно и повсеместно что я был поражен. Хотя понял бы я их и как бы я их воспринял если бы начал читать раньше - большой вопрос. Одни изобретают деревянные велосипеды, а другие просто пришли в магазин и уехали на транспортном средстве из натотехнологий и современных материалов.
Итог: книга годная, джавистам, стоит бросить все и начать читать - гарантированно расширит сознание.