?

Log in

No account? Create an account
Main

Руби

Изучение руби и рельсов затягивает. Потому, как язык пластилиновый совершенно. Т.е. синтаксический сахар аж хрустит на зубах. Говорят, что большая программа на руби начинает напоминать лисп, но я лиспа не знаю, поэтому не оценю наверное.

Очень нравится практика небольших лямбда функций, цепляемых к разнообразным итераторам, что делает этот паттерн приятным в использовании.

Если б я учился сейчас писать программы для веб, то выбор руби и рельсов, как отправной точки дали бы мне существенную оптимизацию в усвоении систематических знаний. То, что на php постигается горьким опытом, и мозголомным штурмом, то на руби и рельсах постигается достаточно приятно, и должно быть продуктивнее (ну так мне кажется, по крайней мере).

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

В общем, если раньше я рекомендовал Symfony, как учебник для тех, кто осилил PHP в общем, то теперь я бы рекомендовал начинать учить руби. Основные учебники тут -- книжки с прагматической полки:
Agile Web Development with Rails и Programming Ruby. На роль справочника вполне годится раздел с официального сайта:
http://guides.rubyonrails.org/
Tags: ,

Comments

А что вы имеете в виду под основными фишками и систематическими знаниями?
Когда мы пишем веб-приложение, мы организовываем некоторый язык нашей бизнес модели, DSL (domain specific language), оперируя при этом классами, объектами, массивами, хешами. Гибкий, "пластилиновый" синтаксис руби делает этот процесс очень удобным. Например искать по коллекции:

array.find_all{ |elem| elem.even? } #=> [2, 4]

Или можно гулять по коллекции применяя к каждому элементу безымянную функцию, как в JavaScript

Или поиск максимального элемента:
["у", "попа", "была", "собака"].max_by{ |elem| elem.size } #=> "собака" максимальный по размеру строки

В общем никаких foreach, list, а все вот так одно за другое. Тут дело именно в том, что очень изящно и удобнее для понимания. Потому, как чтобы освоиться с работой итераторов в PHP, нужно голову поломать с SPL.

И так куда ни ткнись, везде тоже самое, но удобнее.

Полуучается систематические знания по паттернам изучать на руби нагляднее, чем на PHP, где нужно сломать мышление, перед тем как освоить новые горизонты.

Работа с HTTP. В руби в учебниках сразу будут писать про сокеты, хедеры и потом про либу CGI. В php у нас сразу есть $_GET, зато начинающий не знает где искать почиему в $_GET оказалось не то, что ожидалось. А уж про ушедший в историю способ передачи переменных из запроса в глобальную область лучше стыдливо промолчать.

Т.е. опять тут человек неизбежно сталкивается с пониманием, как работает HTTP протокол.

Большая часть идей современных фреймворков имеет корень в рельсах. А это опять-таки практически фундаментальные понятия: MVC, scaffolding, тестирование, контроль над конфигами, эктив рекорд. На php к этому идешь, как через джунгли. А тут вот как бы блестящее, удобное и готовое.

Мне кажется, что все это удобство весьма способствует быстрому усвоению довольно сложных понятий при вдумчивом изучении.
Плюс система продуманных дефолтов позволяет решать типовые проблемы в несколько строк кода. И дальнейшее расширение функциональности идёт в виде "всё так же, только вот тут немного по-другому".
Могу посоветовать Вам посмотреть Yii - http://www.yiiframework.com/ или http://www.yiiframework.ru/. Отличный php-фреймворк, который впитал в себя все лучшее из RoR, Symfony и других фреймворков. Конечно, он на PHP и как Вы справедливо заметили, это вносит некоторые "изыски" в архитектуру, но тем не менее писать на нем - одно удовольствие.

привет и наилучшие пожелания.

Начинающий чайник - чайник. (это я). можно связаться с вами и время от времени получать консультирование? возможна оплата вашего труда. Пытаюсь разобраться в одном проекте и заодно научиться. Уровень 0. скайп muzykaav