LINUX.ORG.RU

Ruby?


0

0

Какую цель оно вообще преследует? На нем кроме ROR что-нибудь полезное есть? Да и все полезные фичи ROR'а уже давно передрали другие фреймворки. Зачем оно нужно? Предлагаю об этом поговорить.

anonymous

>Какую цель оно вообще преследует?

Какую цель преследует Python или преследовал Perl? :) Просто языки. Как они могут что-то преследовать?

KRoN73 ★★★★★
()

Хороший скриптовый язык для тех, кто не любит whitespace.

anonymous
()
Ответ на: комментарий от anonymous

>Я имею ввиду область применения.

Обычный универсальный язык высокого уровня со своими плюсами и минусами. Как и многие другие.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

Он не на Ruby. Возникнет надобность адаптации под Ruby и будет реализовано - напишу. Но раньше он под Java выйдет.

KRoN73 ★★★★★
()
Ответ на: комментарий от PartyZan

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

По своим возможностям примерно близок к 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, может и найдете что-то полезное для себя.

anonymous
()
Ответ на: комментарий от anonymous

>merb

Интересная штука. Многообещающая. Начал читать. Можешь в нескольких словах описать чем он реально лучше rails?

UserUnknown ★★★★★
()
Ответ на: комментарий от smh

Да, штука очень приятная.

Насчет лучше/хуже почитай мнение создателей: http://yehudakatz.com/2008/05/21/cant-we-all-just-get-along/ http://brainspl.at/articles/2008/05/21/does-it-have-to-be-a-competition-betwe...

То есть больше фреймворков хороших и разных.... кому-то ближе философия merb, кому-то rails.

Пока страдает от недостатка документации и хороших туторов, приходится лезть в код и смотреть, как оно там все работает. Иногда попадаются глупые баги, потому что разрабатывается он очень активно. Благо правят их довольно быстро. С создателями можно пообщаться прямо на irc-канале.

anonymous
()

Ruby славен тем что даёт людям создавть DSL весьма просто (конечно далеко не так коммон лисп или форт, но намного лучше других популярных языков) За счёт этого многие руби DSL-based решения в разы изящнее аналогов. Как пример можно привести сам RoR который состоит из кучи DSL-ей, RSpec/Rbehave, Shoes. Ruby я благодарен тому, что он несёт LOP (Language Oriented Programming) в массы, благодаря чему появляется множество решений прикладных задач, с которыми можно работать на новом уровне абстракции. Насчёт какой нибудь известной Ruby штуки не Rails-based можно назвать vkadre.ru и собственно видеосистему vkontakte.ru

CrazyPit ★★★
()

Shoes, очень здоровский тулкит для создания симпатишной кроссплатформенной гуйни, использует pango и cairo; юзать - одно удовольствие.

volh ★★
()
Ответ на: комментарий от UserUnknown

>в нескольких словах описать чем он реально лучше rails?

быстрее и проще, уже этого достаточно. помнишь, в рельсе components и engines были ( энжины все еще существуют, правда мало кто ими пользуется )? почитай про slices - это они с компонентного смолтоковского Seaside взяли ( наконец-то ).

хотя конечно, надо 1.0 дождаться

volh ★★
()
Ответ на: комментарий от CrazyPit

> Ruby славен тем что даёт людям создавть DSL весьма просто

Тока почему-то у всех этих DSL синтаксис Руби. Странно, да? o_O

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

А у всех DSL на smalltalk синтаксис smalltalk, а у всех DSL на LISP синтаксис LISP. Вас это удивляет? Не хочется этого..пишите свой интерпретатор..

Просто сколько вы на это времени потратите. DSL на Ruby создаются более-менее легко, инструменты - метаклассы (eigenclasses), перехват сообщений (method_missing), динамическое выполнение кода (eval) ну и по мелочам.. Да, они не всегда получаются такие гибкие, как хочется..иногда приходится и навернуть костыли.. упираемся в ограничения синтаксиса ruby, но это как раз тот компромисс между идейностью и практичностью, который ruby так удачно нашел.

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

anonymous
()
Ответ на: комментарий от CrazyPit

> Насчёт какой нибудь известной Ruby штуки не Rails-based можно назвать vkadre.ru и собственно видеосистему vkontakte.ru

Пруфлинк?

anonymous
()
Ответ на: комментарий от anonymous

dsl на лиспе могут иметь и не-лисповский синтаксис (loop, iterate, infix и прочие). а так по-вашему и gtk с qt можно dsl обозвать

bik ★★
()
Ответ на: комментарий от bik

> dsl на лиспе могут иметь и не-лисповский синтаксис (loop, iterate, infix и прочие). а так по-вашему и gtk с qt можно dsl обозвать

Советую более детально ознакомится с возможностями Ruby.

smh ★★★
()

> Какую цель оно вообще преследует?

Сделать Perl читабельным, а Python писабельным.

grob ★★★★★
()
Ответ на: комментарий от KRoN73

Ну во-первых не совсем равноценные:

[mholub@mumu ~]$ irb irb(main):001:0> a = 1 => 1 irb(main):002:0> a.class => Fixnum irb(main):003:0> def a.say irb(main):004:1> puts self irb(main):005:1> end TypeError: can't define singleton method "say" for Fixnum from (irb):3 irb(main):006:0>

То есть singleton-класса (eigenclass'а) у чисел и символов нет.

Во-вторых вспоминаем смолток.

anonymous
()
Ответ на: комментарий от KRoN73

> Нельзя сделать быстрым динамический язык, у которого даже числа - равноценные с другими объекты :)

Это тут вообще ни при чем. Как раз когда объект — число, то чаще всего это можно угадать и сделать соответствующие оптимизации. Ruby просто нужна умная VM.

grob ★★★★★
()
Ответ на: комментарий от grob

4.2

именно по причине сильного падения производительности в большинстве современных языков присутствуют примитивные типы и тому подобные "оптимизации"

ps: инжект через строковые литералы, как это сделанно в ruby, это полный звездец.

anonymous
()
Ответ на: комментарий от anonymous

> А у всех DSL на smalltalk синтаксис smalltalk,

О Смолтоке не знаю.

> а у всех DSL на LISP синтаксис LISP.

Сказали уже, что в Лисп можно сделать совсем другой синтаксис, плюс макросы Лиспа дают степень свободы, отсуствующую в Руби.'

> Вас это удивляет?

Меня удивляет, что называется это DS Language, а не DS Library.

> Просто сколько вы на это времени потратите.

Если есть удобные инструменты - не так много. Ну и оценивать соотношение выигрыш/затраты тоже нужно.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> Синтаксис вторичен, суть в семантике.

Дадада, я тоже помню заветы веталега. Но я всё же предпочитаю, чтобы вещи назывались своими именами: библиотека - библиотекой, язык - языком

tailgunner ★★★★★
()
Ответ на: комментарий от grob

>Как раз когда объект — число, то чаще всего это можно угадать и сделать соответствующие оптимизации.

Всё равно комплексный тип на вычислениях всегда будет медленнее простого. Как ни оптимизируй, а нужно будет вытаскивать значение и засовывать назад результат. Когда дело дойдёт до циклов - вообще труба. Вроде, в 1.9, как раз, новый оптимизатор: http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=...

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Когда дело дойдёт до циклов - вообще труба. Вроде, в 1.9, как раз, новый оптимизатор:

Чтобы получить нормальную производительность от динамического языка вроде Руби (или Питона), VM должна быть не просто умной, а такой умной, каких сейчас нет :) PyPy пытается сделать такую, но прогресс идет тяжело.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Чтобы получить нормальную производительность от динамического языка вроде Руби (или Питона), VM должна быть не просто умной, а такой умной, каких сейчас нет :)

Фишка в том, что Питон на взятом отдельно срезе развития, всегда получается быстрее, чем Руби :) Думаю, что и с очень умными оптимизаторами такая же фигня будет. Полагаю, немалый вклад тут приносят именно простые примитивы.

...

Кстати, а сколько байт в Руби на один его Int уходит?

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

На Fixnum в Ruby уходит sizeof(long) байт. Только диапозон у Ruby будет ровно в два раза меньше, чем у long в C (LSB выставляется в 1).

kmeaw ★★★
()
Ответ на: комментарий от anonymous

> http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=.. .

> коммерческая реализация конечно, но факт того, что смолток может быть быстрым она по-моему доказывает.

Она сливает Python+psyco, так что нет в ней ничего особенного... Psyco признан тупиком развития.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

...
Имея такие характеристики, трудно себе представить, что язык Self способен выполняться хотя бы умеренно медленно. Действительно, простая интерпретируемая реализация в лоб выполняет программы, написанные на Self, в сотни-тысячи раз медленнее, чем аналогичная программа на Си.

Поэтому разработчики языка в первую очередь сконцентрировали свои усилия на создание эффективного динамического компилятора — Self dynamic compiler technology. Эта система эволюционировала в трёх версиях и к 1993 году достигла невероятных результатов. Стандартный набор целочисленных тестов Стэндфордского университета выполнялся со скоростью 40 % от скорости оптимизирующего компилятора Си. Теория показала, что возможно достичь планки в 60 %, и является пределом для динамических языков, если реализовать более качественное распределение машинного кода.
...

AiLr ★★
()
Ответ на: комментарий от AiLr

Из всего этого текста полезными явлюяются 1) они так и не смогда выжать более 40% быстродействия Си; 2) даже это быстродействие было достигнуто на неком конкретном целочисленном тесте; 3) почему-то было решено, что больше 60% быстродействия выжать нельзя в принципе. За рамками осталось то, что, ЕМНИП, dynamic compiler technology жрала память в три горла (сотни метров на программы среднего размера).

Это должно доказать что? То, что Руби/Питон/whatever никогда не достигнут скорости Си? Разрабы PyPy с этим не согласятся :)

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.