Какую цель оно вообще преследует? На нем кроме ROR что-нибудь полезное есть? Да и все полезные фичи ROR'а уже давно передрали другие фреймворки. Зачем оно нужно? Предлагаю об этом поговорить.
Хороший прикладной язык, ничего нового, но очень удачно совмещено все старое. Не без проблем конечно. Но язык очень практичен.
По своим возможностям примерно близок к python'у.
Rails это killer app, да, после него ruby приобрел известность во всем мире, а не продолжил вариться только в Японии.. Поэтому разумеется большинство программеров на Ruby - веб-программисты.
Я использую ruby понятно для вэба: rails и merb http://merbivore.com, для системных скриптов, snippits (очень интересная штука, правда пришлось ее слегка похачить) http://ben.kudria.net/code/snippits, для развлекаловки люблю поиграться с ruby-processing http://www.the-shoebox.org/apps/44 ну и по-всяким мелочам. То есть по сути серьезно только для вэба. Но я думаю, вопрос появления серьезных приложений под десктоп на ruby - вопрос времени. Причин им не появиться я не вижу. Можно поискать на http://rubyforge.org или на http://github.com, может и найдете что-то полезное для себя.
То есть больше фреймворков хороших и разных.... кому-то ближе философия merb, кому-то rails.
Пока страдает от недостатка документации и хороших туторов, приходится лезть в код и смотреть, как оно там все работает. Иногда попадаются глупые баги, потому что разрабатывается он очень активно. Благо правят их довольно быстро. С создателями можно пообщаться прямо на irc-канале.
Ruby славен тем что даёт людям создавть DSL весьма просто (конечно далеко не так коммон лисп или форт, но намного лучше других популярных языков) За счёт этого многие руби DSL-based решения в разы изящнее аналогов. Как пример можно привести сам RoR который состоит из кучи DSL-ей, RSpec/Rbehave, Shoes. Ruby я благодарен тому, что он несёт LOP (Language Oriented Programming) в массы, благодаря чему появляется множество решений прикладных задач, с которыми можно работать на новом уровне абстракции. Насчёт какой нибудь известной Ruby штуки не Rails-based можно назвать vkadre.ru и собственно видеосистему vkontakte.ru
>в нескольких словах описать чем он реально лучше rails?
быстрее и проще, уже этого достаточно. помнишь, в рельсе components и engines были ( энжины все еще существуют, правда мало кто ими пользуется )? почитай про slices - это они с компонентного смолтоковского Seaside взяли ( наконец-то ).
А у всех DSL на smalltalk синтаксис smalltalk, а у всех DSL на LISP синтаксис LISP. Вас это удивляет? Не хочется этого..пишите свой интерпретатор..
Просто сколько вы на это времени потратите. DSL на Ruby создаются более-менее легко, инструменты - метаклассы (eigenclasses), перехват сообщений (method_missing), динамическое выполнение кода (eval) ну и по мелочам.. Да, они не всегда получаются такие гибкие, как хочется..иногда приходится и навернуть костыли.. упираемся в ограничения синтаксиса ruby, но это как раз тот компромисс между идейностью и практичностью, который ruby так удачно нашел.
Как очевидный плюс: программист не учит новый язык, а просто продолжает писать на ruby.
> Нельзя сделать быстрым динамический язык, у которого даже числа - равноценные с другими объекты :)
Это тут вообще ни при чем. Как раз когда объект — число, то чаще всего это можно угадать и сделать соответствующие оптимизации. Ruby просто нужна умная VM.
>Как раз когда объект — число, то чаще всего это можно угадать и сделать соответствующие оптимизации.
Всё равно комплексный тип на вычислениях всегда будет медленнее простого. Как ни оптимизируй, а нужно будет вытаскивать значение и засовывать назад результат. Когда дело дойдёт до циклов - вообще труба. Вроде, в 1.9, как раз, новый оптимизатор: http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=...
> Когда дело дойдёт до циклов - вообще труба. Вроде, в 1.9, как раз, новый оптимизатор:
Чтобы получить нормальную производительность от динамического языка вроде Руби (или Питона), VM должна быть не просто умной, а такой умной, каких сейчас нет :) PyPy пытается сделать такую, но прогресс идет тяжело.
>Чтобы получить нормальную производительность от динамического языка вроде Руби (или Питона), VM должна быть не просто умной, а такой умной, каких сейчас нет :)
Фишка в том, что Питон на взятом отдельно срезе развития, всегда получается быстрее, чем Руби :) Думаю, что и с очень умными оптимизаторами такая же фигня будет. Полагаю, немалый вклад тут приносят именно простые примитивы.
...
Кстати, а сколько байт в Руби на один его Int уходит?
...
Имея такие характеристики, трудно себе представить, что язык Self способен выполняться хотя бы умеренно медленно. Действительно, простая интерпретируемая реализация в лоб выполняет программы, написанные на Self, в сотни-тысячи раз медленнее, чем аналогичная программа на Си.
Поэтому разработчики языка в первую очередь сконцентрировали свои усилия на создание эффективного динамического компилятора — Self dynamic compiler technology. Эта система эволюционировала в трёх версиях и к 1993 году достигла невероятных результатов. Стандартный набор целочисленных тестов Стэндфордского университета выполнялся со скоростью 40 % от скорости оптимизирующего компилятора Си. Теория показала, что возможно достичь планки в 60 %, и является пределом для динамических языков, если реализовать более качественное распределение машинного кода.
...
Из всего этого текста полезными явлюяются 1) они так и не смогда выжать более 40% быстродействия Си; 2) даже это быстродействие было достигнуто на неком конкретном целочисленном тесте; 3) почему-то было решено, что больше 60% быстродействия выжать нельзя в принципе. За рамками осталось то, что, ЕМНИП, dynamic compiler technology жрала память в три горла (сотни метров на программы среднего размера).
Это должно доказать что? То, что Руби/Питон/whatever никогда не достигнут скорости Си? Разрабы PyPy с этим не согласятся :)