Книга The Rails Way

Илья • 4 марта 2008 г.

Не так давно, в мире существовала всего одна книга по Ruby on Rails — Agile Web Development With Rails от создателя Rails Дэвида Хейнмейера Ханссона (David Heinemeier Hansson). Кто бы мог подумать, что сегодня у нас будет выбор из двадцати пяти книг на любой вкус и цвет! Ориентироваться в этом изобилии (ну ладно, пусть не изобилии, но многообразии) становится всё сложнее. Какую книгу выбрать? У меня есть подходящий ответ на этот вопрос…

На днях я купил англо-язычную книгу The Rails Way от Оби Фернандеза (Obie Fernandez). Она была выпущена в конце 2007 года и описывает Ruby on Rails версии 2.0. Это уже пятая книга о Rails, которая попадает в мои руки, и она мне очень понравилась.

Книга достаточно толстая (900+ страниц) и выполнена в виде настольного руководства. В ней нет длинных уроков, домашних заданий и больших тестовых приложений. Она больше ориентируется на людей, которые способны самостоятельно изучить материал, имея максимально полную информацию об инструменте. Каждый компонент фреймворка подробно описан и сопровождён примерами. Иногда, автор приводит отрывки кода прямо из исходного кода Rails, чтобы разъяснить сложные моменты. Так же, практически в каждой главе можно найти актуальные советы по теме от профессиональных Rails-разработчиков, со-авторов книги.

Перечислять темы, которые затрагивает книга, можно бесконечно — одно только содержание занимает пятнадцать страниц. Радует наличие глав о таких, сравнительно новых для мира Rails, темах как REST, ресурсы и ActiveResource.

Книга хороша для более глубокого изучения компонентов фреймворка, а так же для поиска подробностей, не описанных (или описанных, но скудно) в официальной документации. Например раздел об ассоциациях ActiveRecord описывает прокси ассоциаций. А в разделе, посвящённому роутингу в Rails, детально описано как он устроен, с вставками исходного кода Rails.

Помимо описания самого фреймворка Rails, книга содержит множество информации о других подручных инструментах и технологиях, которые мы ежедневно используем в работе: Capistrano, Monit, Mongrel, Nginx, RSpec и даже весьма подробное изучение Prototype.js и Scriptaculous. Что это и как это установить? Как настроить лучшим образом и как использовать? На все эти вопросы книга даёт развёрнутые ответы. И это то, что делает The Rails Way таким хорошим кандидатом на покупку. Едва-ли вы сможете найти где-то ещё такую подборку информации в одном месте!

The Rails Way является практически идеальной заменой онлайн документации по Rails (за исключением медленного поиска) — в любой момент, когда у вас возник вопрос или хочется узнать как выполнить ту или иную задачу более правильным путём, она будет вашим лучшим помощником.

На мой взгляд, книга The Rails Way обязательно должна быть в библиотеке каждого Rails-разработчика.

А что думаете вы?

Читаете ли вы техническую литературу на английском языке? Есть ли, по вашему мнению, смысл в русском переводе этой книги?

36 комментариев:

  1. Юрий Л:

    Читаю сабж в данный момент. Полностью согласен с мнением. Книга добротная, для каждого full-time Rails разработчика.

    Agile Web Development With Rails уходит на полку истории.
  2. Сергей:

    Использую в последнее время Rails Way в качестве справочника. Книга на порядок полезнее AWDWR, к тому же рассказывает о вторых рельсах. Перевод ее на русский язык имеет смысл, т.к. читать все же приятнее на родном языке. Лично я точно приобрел бы ее в русском варианте :)

  3. FX Poster:

    Литературу хоть и предпочитаю читать на русском языке, но, к сожалению, в основном приходится читать на английском, т.к. в основном нет современных переводов.

    А для новичка в рельсах эта книга подойдет?

  4. KBA-KBA:

    Очень хочу почитать, но у меня ее, пока, нет :(, да еще пока есть N других уже купленных книг, которые ждут своего часа. Переводить однозначно стоит, Ruby Way и AWDWR же перевели (правда не знаю на сколько хорошо) это стоит. И еще стоит The Ruby Programming Language Больше книг хороших и разных :) Переводить стоит, т.к. новичкам будет легче влиться. Мы с вами будем читать в оригинале, т.к. нам это удобнее да и перевода ждать невтерпеж.

  5. Ярослав Маркин:

    Отличная книга. AWD подходит для введения, Rails Way — для понимания.

  6. Igor:

    Книга явно хорошая.Уже закачал ее в формате pdf.Больше бы на русском публиковали.Была бы она на русском купил бы сразу не задумываясь.

  7. Александр:

    И вновь вклиниваюсь в разговор, раз уж речь зашла о переводах. Мой перевод Ruby Way вызвал ряд нареканий – надо признать, справедливых. Поскольку я, вероятно (если все сложится), буду переводить книгу David Flanagan, Yukihiro Matsumoto “The Ruby Programming Language”, изданную O'Reilly (лично мне книга показалась очень полезной, кто лучше создателя языка напишет?) и не хочу наступать на те же грабли, обращаюсь к сообществу с предложением выработать общее мнение по поводу перевода некоторых специфичных для Ruby терминов. В качестве основы для дискуссии предлагаю свои переводы некоторых слов (на выбор):
    duck typing – утипизация, утиная типизация, динамическая типизация
    Proc – Proc-объект
    singleton class, eigenclass – синглетный класс, айгенкласс, собственный класс (класс-одиночка не предлагать)
    splat operator – оператор расплющивания, оператор линеаризации массива
    memoizing – запоминание
    Рад буду увидеть предложения по другим терминам, которые сразу не вспомнились. Обсуждать неспецифичную терминологию, пожалуйста, не надо. Надеюсь, что коллективный разум поможет выработать единую (до некоторой степени) терминологию.

  8. Александр Бухонов:

    Про книгу сказать нечего, еще не читал:(

    По поводу обсуждения терминов. Александр, вы молодец, что пошли на контакт:) Думаю, как минимум, коллективный разум активной части группы ror2ru уже в вашем распоряжении:) Сомнение вызывает только платформа – комментарии в блоге, на другую тему – это как-то не то.. Может быть какую-то вики выберем? Хотя бы те же викибукс? В общем, мой вопрос стоит так – вы не против смены места обсуждения на более удобное для коллективного «творчества»?

  9. Александр:

    Совершенно не против, только сообщите мне, где будет происходить обсуждение.

  10. Илья Сабанин:

    Моё мнение: duck typing — динамическая типизация; singleton class — еденичный класс.

    С проком сложнее. Можно попробовать сказать «процедурный объект», но, если подумать, «proc» это уже исторически сложившийся акроним, не имеющий однозначного перевода. Думаю его можно оставить как есть — «proc».

    Со «splat operator» всю голову сломал, уж очень неформальное название. «Оператор линеаризации» технически, на мой взгляд, звучит вполне грамотно, но намного сложнее, чем «splat». Слово «расплющивание» слишком неуклюжее. Может «оператор разложения»?

  11. Зверёк:

    duck typing — динамическая типизация

    а dynamic typing тогда?

    По-моему, “duck typing” – термин, придуманный и объясняемый через идеому, так и разумнее всего переводить – «утиная типизация»; это если хотите по-человечески. А если по-умному – так «ретроактивный полиморфизм» (или «полиморфизм на основе методов» и т.п.). Дело-то в том, что “duck typing” – это НЕ разновидность типизации (типа – static, dynamic, duck) – а отдельное понятие/сущность.

  12. Igor:

    А скажите где закачать перевод?

  13. Александр:

    А чем же duck typing принципиально отличается от dynamic typing? По-моему, это в точности одно и то же (не путать с динамическим связыванием!), только менее формально (а уж ретроактивный полиморфизм – это что-то совсем надуманное). Ну очень мне не нравится «утиная типизация».
    Что касается Proc, так я и предлагаю Proc-объект, иначе склонять невозможно. Не могу же я писать в книге Proc'ы.
    splat можно еще «разглаживание». «Разложение» IMHO не годится – на что или во что мы его раскладываем-то? Это слово употребляется в контекстах «разложить на множители», «разложить в ряд», «разложить на составляющие». Ничего подобного здесь не происходит.

  14. Илья Сабанин:

    По-моему, “duck typing” – термин, придуманный и объясняемый через идеому, так и разумнее всего переводить – «утиная типизация»

    Справедливое замечание.

  15. Александр:

    Что значит «закачать»? Речь идет о будущем переводе печатной книги. Так что, во-первых, его еще нет, а, во-вторых, по моей инициативе он и не будет выложен в сеть. Издательство должно же зарабатывать. Да и ваш покорный слуга тоже :)

  16. Александр Бухонов:

    В рор2ру пока тихо по поводу платформы для обсуждений, так что я пока могу предложить вот что: http://123.writeboard.com/11d0d51dd6911d8f3 Пароль – первое простое число (use wiki, if you hesitate:)

  17. Илья Сабанин:

    Ну очень мне не нравится «утиная типизация»

    Ничего с этим не поделаешь, так уж они назвали. Мне кажется стоит смириться. По крайней мере, если человек встретит в книге выражение «утиная типизация» он сможет набрать это в гугле и получить информацию.

  18. Александр:

    Это они так назвали! А мы должны придумать адекватный перевод. Разумеется, при первом упоминании должно быть приведено оригинальное написание и пояснение о происхождении термина (это обычная практика). Выбранное моим тезкой место для обсуждения вполне приемлемо.

  19. Зверёк:

    А чем же duck typing принципиально отличается от dynamic typing?

    Да всем. Это вообще ортогональные понятия:
    
    template<typename>
    T fun(T a, T b)
    {
      a.blah(b);
    }
    
    Это duck typing в абсолютно статически-типизированном языке (С++). Еще раз: duck typing это НЕ разновидность типизации, это разновидность ПОЛИМОРФИЗМА. Соответственно, варианты перевода:
    • прямой («утиная типизация», с объяснением «если оно ходит как утка и крякает как утка…»)
    • описательный («полиморфизм на основе вызова методов»)
    • идеоматический, но придуманный с нуля и очевидным образом объясненный. (в последнем случае и риски и прибыли выше всего: можете опять получить по голове за самоуправство, а можете стать автором классического русского термина)

    Но не «абстрактное слово, которое нравится переводчику» (утипизация) и не «любой другой термин, который мне кажется похожим» (динамическая типизация)

  20. Igor:

    Александер, если вы ее переведете, я куплю ее хоть за 40$ :-)

  21. Илья Сабанин:

    Не хочется спорить, просто процитирую Википедию:

    In computer programming, duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class.

  22. Зверёк:

    Угу, я уже глянул, что Википедия считает «утиная типизация» = «полиморфизм на вызовах плюс динамическое связывание». Но это не отменяет того факта, что термин “duck typing” означает разновидность полиморфизма, а не типизации (вообще говоря, “duck polymorhism” было бы корректнее). Т.е. “duck typing” подразумевает динамическую типизацию, но не является ею.

  23. Илья Сабанин:

    буду переводить книгу David Flanagan, Yukihiro Matsumoto “The Ruby Programming Language”, изданную O'Reilly (лично мне книга показалась очень полезной, кто лучше создателя языка напишет?)

    Только что почитал отзывы о книге, отличный выбор! Уже добавил себе в виш-лист

  24. Александр:
    template<typename>
    T fun(T a, T b)
    {
      a.blah(b);
    }
    

    Если тип T не обладает методом blah, программа просто не скомпилируется. И это статическая типизация. Ruby не интересуется наличием метода blah до того момента, как в нему обратятся, а в этот начнет искать его. И, возможно, найдет, хотя в начале выполнения программы его не было в типе T. И это динамическая типизация.

    Но я тоже не хочу спорить. Моя задача иная – понять, какой термин будет наиболее понятен как опытным программистам, уже поднаторевшим в сложившейся полужаргонной терминологии Ruby, так и неофитам. Как бы мне лично ни нравилась «утипизация», настаивать на ней я не могу.
  25. Александр:
    Александер, если вы ее переведете, я куплю ее хоть за 40$
    Я не торгую книгами :) А если бы торговал, то за перевод указанной суммы было бы мало. А при продаже тиража в магазине – много :)
  26. tygger:

    Купил «Рецепты» по-русски. Понравилось. Особенно «Король Вершины» («King of the Hill») и «Постоянное присутствие на переднем крае» («Living on the Edge»).

    А как по-русски chunky bacon?

  27. Илья Сабанин:

    А как по-русски chunky bacon?

    Рубленый бекон? :)

  28. tygger:

    Рубленый бекон? :)

    Может «Сало шматовое»? А что касается Duck Typing – так это, по-моему, семантически-ориентированная динамическая типизация. А фраза про утку укоренена в англоязычном контексте, в русском просто нет похожей цитаты. Навскидку вспоминается только история про Василий Иваныча, который закрашивал на цистерне надпись C2H5OH, да краски не хватило. Бойцы видят – написано “OH”, попробовали — и правда  OH!!!

  29. Павел:

    Читал Agile Web Development With Rails на русском языке. Перевод в некоторых моментах оставляет желать лучшего. Просто не врубаешься в то, о чем идет речь. Предпочитаю читать на английском, т.к. термины всегда использую в оригинале.

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

    Пока ведь не создали некий ИТ-словарь (единственный и официальный), куда будут записывать переводы англоязычных ИТ-терминов? Нет.

    Тогда как быть человеку, который прочитал «Приемы объектно-ориентированного проектирования» и там Singleton – одиночка, а здесь: синглетный класс, айгенкласс, собственный класс (класс-одиночка не предлагать)? Он даже не поймет, что речь идет об одном и том же :)

  30. Бизнесмен:

    Данную книгу пока к сожалению не читал, но техническую литературу на инглише читаю иногда. И более того, уверен, что дело это нужное. Обмен опыта в международных масштабах – весьма полезное дело, поэтому я за то, чтобы учить английский только ради того, чтобы можно было читать книги других стран. И будь самым распространенным не английский, а другой какой, я бы так же был за него!

    А данную книгу может быть и нет ни у кого времени переводить, но я думаю, некоторые интересные фрагменты можно было бы.

  31. Alno:

    Скачал эту книжку недавно, весьма неплохо. К сожалению, детально разобраться пока времени не было.

    По поставленным вопросам: 1) Вообще, читать литературу на английском приходится постоянно, особенно учитывая, что часто, когда ее переводят на русский, ситуация сильно меняется)) 2) Было бы замечательно, если бы эта книга была бы переведена.

  32. Alone:

    Мое мнение – оставлять подобные технические термины на родном, англ. языке. Зачем сверлить себе моск в поисках подходящего перевода? При необходимости, можно обратиться к мануалу, поясняющему искомый термин более детально… IMHO…

    Ибо как по мне, то читать «Singleton класс» более воспринимаемо, нежели «синглет класс» или «единичный класс» или …

  33. Игорь:

    А где можно скачать данную книгу?

  34. консультант:

    Интересует та же проблемма – где можно книжку качнуть? И вообще может есть ресурс где можно на шару расшариться таким материалом?

  35. Александр:

    А зачем ее качать? Осенью выйдет перевод. Ищите и обрящете.

  36. Дима:

    А когда перевод появится на прелавках книжных магазинов?

Извините, но комментарии для этой статьи уже закрыты.