Насчет примесей, все-таки прототипы и классы не очень корректно сравнивать.
>> В Ruby… можно добавлять методы не только в любые классы, но и в любые объекты
>Кстати, не совсем верно, относительно Ruby. Там создаётся hidden-класс для каждого объекта, который и хранит методы.
Извеняюсь за занудство:) Ни неразу не встечал «hidden». SingletonClass или MetaClass.
Это такой толстый троллинг рубистов? Или вы серьезно?:)
Если все-таки серьезно, то давайте по пунктикам.
Ruby начал разрабатываться в 1994, релизнулся в 1995 году, в один год с Javascript'ом. Зачем нужен какой-то новый джаваскрипт если есть руби?:)
Скриптовые языки бывают разные. Сравнение Javascript и Ruby нельзя считать корректным, т.к. первый prototype-based, а второй классовый.
Вы как-то странно решили что среда не важна. Всякие ни к месту примеры с вебсервером и думом.
Без среды язык ничто, пусть он хоть в 10 раз лучше всех аналогов(другой вопрос, что если все так хорошо, то и среда быстро появится:))
Опять же возвращаясь к среде, например такой наибанальнейший пример, как работа с файлами. Ruby(как и Perl и PHP и Python(3P!:))) предоставляет вполне удобный функционал для работы с этими файлами.
Что нам в этом случае может предложить Javascript? Я вижу три варианта:
1) Платформо/браузерно(ie!:)) зависимый ActiveX объект.
2) Помеченный как нестабильный(так и есть) модуль к мозиловскому SpiderMonkey, который еще попробуй скомпиль.
3) Вся мощь плотформы Java посредством Rhino.(Вот это уже круто, но, зачем, если есть тот же JRuby?:))
Насчет дума или вебсервера, напишити-ка его без работы с файлами.
Кстати, в дефолтном(браузерном) Javascript среда есть, притом очень специфическая — это DOM.
Теперь про отличия, их кучи! Все даже и не перечислишь.
Первая вкусность руби, которая мне больше всего нравится(не считая сахара) это метапрограммирование.
Я даже статью на эту тему писал http://habrahabr.ru/blogs/ruby/48754/
Попробуйте реализовать что-нибудь похожее в джс.
Вот это настораживает, значит вся статья от вашего незнания?:)
>Я не большой специалист по скриптовым языкам. Пожалуйста, покажите мне как сделать eval() в PHP, Ruby, Python.
Насчет Ruby, из скриптовых языков он предоставляет самые мощные возможности метапрограммирования, по-этому eval'ов различных там много:) Предлагаю обратиться к документации.
Кстати, простой пример, я спокойно могу в динамике оверрайдить методы, классы, модули. Тот же PHP, хоть и имеет eval, этого не может(Правда есть экстеншн на эту тему)
>Есть ли там null, обладающий особыми свойствами?
nil, док по NilClass. Токиеже ответы на остальные вопросы.
Кстати, такая функциональность языка как потоки. Не говорите, что и это среда:) В руби потоки «зеленые», т.е. выполнение на уровне VM. В PHP вобще нет потоков, только форками если эмулировать.
Что насчет Javascript'а?:) Дада, есть функция распоралеливания в SpiderMonkey. Но это очень далеко от понятия «поток».
Насчет тормозов Ruby. В контексте PHP еще куда не шло, а в контексте JS? Поделитесь бенчмарками которыми руководствовались.
Тормоза Ruby, это расплата за большие динамические возможности. Плюс, все намного лучше в JRuby. И намного лучше в Ruby1.9.
Кстати, насчет веб приложений на Ruby и PHP. PHP файл дергается на каждое обращение(если CGI, если FCGI, то да, в памяти). Приложение Rails или Sinatra или еще_что_то_rack_совместимое — всевремя в памяти. Не тратим время на интерпретацию файла.
Правда Rails тормозной, но Ruby, как известно, is not Rails:)
О, кстати, как в JS с базами данных? Ну или банальными сокетами?(тоже несущественная среда?):)
На gluejs ссылки кидать не надо:)
Ну, я думаю надо смотреть в сторону реальной жизни.
Я бы выделил несколько факторов:
Уходит очень мало людей, по сравнению с тем кто приходит. P2 не больше 5%.
Основная масса пользователей, компьютерно неграмотная(всмысле их всегда большинство), так что узнают только от знакомых, значит P1 тоже очень мало.
По сути, пользователи соц сети — это всегда рост, ну или постоянное(+-) количество, когда сеть старая.
Но, при таких условиях мы всегда получим полностью заполненое поле…
Так что наверно нужно ввести неактивные клетки, которые никогда не вступят в соцсеть.
От их начального расположения и будет зависить общая картина.
Ну и конечно картина эта будет статичной. Тоесть на нном шаге получится неизменяемая(слабоизменяемая, в зависимости от P1 P2) комбинация.
Впринципе, можно оставить все как есть, но, на каждом шаге корректировать значения P1/P2.
Например вложили 1млн в рекламу — P1+1%, ввели платные сервисы P2+2%.
Можно конечно вводить дополнительные случайные величины, как предложил aavezel, но по-моему суть не изменится. Клеточная модель для такой задачи все равно немного грубоватая:)
Кстати, в качестве усовершенствования, можно учитывать соседей в большем радиусе, т.е. если двое/трое справа тоже пользователи, то становимся пользователями. Или что-нибудь аналогичное.
Тогда можно вводить например группы пользователей(в одном радиусе группа соц сети по интересам) и связи между группами. Например если связь обрывается, одна группа потихоньку помирает, и т.п. Но тут все совсем нетривиально, по сути уже граф получается, надо думать над правилами:)
Тоже интересно, но опять же элемент случайности. По сути это все теже P1 и P2, только через большее количество величин. Ну а вобщем интересно, руки дойдут — сделаю, отпишусь по результатам:)
Тоже запрограммировал:) Правда моя версия на Ruby:) pastie.org/540211
Как выше написали, при 10% не очень интересно, все заполнено пользователями.
Интереснее когда коэффициент ухода выше коэффициента прихода в несколько раз.
Например при 10/30 уже не все заполнено пользователями, 10/40 — половина поля без пользователей, а то и все поле пустое, как повезет:)
В этой модели очень быстрый рост пользователей, который может регулироваться только случайностью с высокой вероятностью. Мне кажется, нужно добавить дополнительные, не зависящие от случая ограничения, которые будут регулировать рост пользователей.
Идея очень хорошая. У самого уже давно крутиться, даже небольшой набросок делал, чтобы с кпк удобнее читать(хоть там и есть хаали ридер).
Может как-нибудь руки дойдут, тоже займусь, будем конкурировать:)
Удачи!
Слышал отзывы, что shoes как-раз только для маленьких тулз и подходит. Там же сложности с созданием собственных контролов. Плюс он использует свой собственный лаунчер, что не всегда удобно.
Кстати, wx, qt, fox и tk библиотеки для руби так же кросплатформенные.
А вот сама либа да, очень удобная. Из всех гуи библиотек для руби самая изящная, так сказать настоящий руби-стайл:) Ну все-таки ведь _why ее писал.
>> В Ruby… можно добавлять методы не только в любые классы, но и в любые объекты
>Кстати, не совсем верно, относительно Ruby. Там создаётся hidden-класс для каждого объекта, который и хранит методы.
Извеняюсь за занудство:) Ни неразу не встечал «hidden». SingletonClass или MetaClass.
Если все-таки серьезно, то давайте по пунктикам.
Ruby начал разрабатываться в 1994, релизнулся в 1995 году, в один год с Javascript'ом. Зачем нужен какой-то новый джаваскрипт если есть руби?:)
Скриптовые языки бывают разные. Сравнение Javascript и Ruby нельзя считать корректным, т.к. первый prototype-based, а второй классовый.
Вы как-то странно решили что среда не важна. Всякие ни к месту примеры с вебсервером и думом.
Без среды язык ничто, пусть он хоть в 10 раз лучше всех аналогов(другой вопрос, что если все так хорошо, то и среда быстро появится:))
Опять же возвращаясь к среде, например такой наибанальнейший пример, как работа с файлами. Ruby(как и Perl и PHP и Python(3P!:))) предоставляет вполне удобный функционал для работы с этими файлами.
Что нам в этом случае может предложить Javascript? Я вижу три варианта:
1) Платформо/браузерно(ie!:)) зависимый ActiveX объект.
2) Помеченный как нестабильный(так и есть) модуль к мозиловскому SpiderMonkey, который еще попробуй скомпиль.
3) Вся мощь плотформы Java посредством Rhino.(Вот это уже круто, но, зачем, если есть тот же JRuby?:))
Насчет дума или вебсервера, напишити-ка его без работы с файлами.
Кстати, в дефолтном(браузерном) Javascript среда есть, притом очень специфическая — это DOM.
Теперь про отличия, их кучи! Все даже и не перечислишь.
Первая вкусность руби, которая мне больше всего нравится(не считая сахара) это метапрограммирование.
Я даже статью на эту тему писал http://habrahabr.ru/blogs/ruby/48754/
Попробуйте реализовать что-нибудь похожее в джс.
Вот это настораживает, значит вся статья от вашего незнания?:)
>Я не большой специалист по скриптовым языкам. Пожалуйста, покажите мне как сделать eval() в PHP, Ruby, Python.
Насчет Ruby, из скриптовых языков он предоставляет самые мощные возможности метапрограммирования, по-этому eval'ов различных там много:) Предлагаю обратиться к документации.
Кстати, простой пример, я спокойно могу в динамике оверрайдить методы, классы, модули. Тот же PHP, хоть и имеет eval, этого не может(Правда есть экстеншн на эту тему)
>Есть ли там null, обладающий особыми свойствами?
nil, док по NilClass. Токиеже ответы на остальные вопросы.
Кстати, такая функциональность языка как потоки. Не говорите, что и это среда:) В руби потоки «зеленые», т.е. выполнение на уровне VM. В PHP вобще нет потоков, только форками если эмулировать.
Что насчет Javascript'а?:) Дада, есть функция распоралеливания в SpiderMonkey. Но это очень далеко от понятия «поток».
Насчет тормозов Ruby. В контексте PHP еще куда не шло, а в контексте JS? Поделитесь бенчмарками которыми руководствовались.
Тормоза Ruby, это расплата за большие динамические возможности. Плюс, все намного лучше в JRuby. И намного лучше в Ruby1.9.
Кстати, насчет веб приложений на Ruby и PHP. PHP файл дергается на каждое обращение(если CGI, если FCGI, то да, в памяти). Приложение Rails или Sinatra или еще_что_то_rack_совместимое — всевремя в памяти. Не тратим время на интерпретацию файла.
Правда Rails тормозной, но Ruby, как известно, is not Rails:)
О, кстати, как в JS с базами данных? Ну или банальными сокетами?(тоже несущественная среда?):)
На gluejs ссылки кидать не надо:)
Который тоже под винду(этот бейсик ведь не кроссплатформенный?).
Я бы выделил несколько факторов:
Уходит очень мало людей, по сравнению с тем кто приходит. P2 не больше 5%.
Основная масса пользователей, компьютерно неграмотная(всмысле их всегда большинство), так что узнают только от знакомых, значит P1 тоже очень мало.
По сути, пользователи соц сети — это всегда рост, ну или постоянное(+-) количество, когда сеть старая.
Но, при таких условиях мы всегда получим полностью заполненое поле…
Так что наверно нужно ввести неактивные клетки, которые никогда не вступят в соцсеть.
От их начального расположения и будет зависить общая картина.
Ну и конечно картина эта будет статичной. Тоесть на нном шаге получится неизменяемая(слабоизменяемая, в зависимости от P1 P2) комбинация.
Впринципе, можно оставить все как есть, но, на каждом шаге корректировать значения P1/P2.
Например вложили 1млн в рекламу — P1+1%, ввели платные сервисы P2+2%.
Можно конечно вводить дополнительные случайные величины, как предложил aavezel, но по-моему суть не изменится. Клеточная модель для такой задачи все равно немного грубоватая:)
Кстати, в качестве усовершенствования, можно учитывать соседей в большем радиусе, т.е. если двое/трое справа тоже пользователи, то становимся пользователями. Или что-нибудь аналогичное.
Тогда можно вводить например группы пользователей(в одном радиусе группа соц сети по интересам) и связи между группами. Например если связь обрывается, одна группа потихоньку помирает, и т.п. Но тут все совсем нетривиально, по сути уже граф получается, надо думать над правилами:)
pastie.org/540211
Как выше написали, при 10% не очень интересно, все заполнено пользователями.
Интереснее когда коэффициент ухода выше коэффициента прихода в несколько раз.
Например при 10/30 уже не все заполнено пользователями, 10/40 — половина поля без пользователей, а то и все поле пустое, как повезет:)
В этой модели очень быстрый рост пользователей, который может регулироваться только случайностью с высокой вероятностью. Мне кажется, нужно добавить дополнительные, не зависящие от случая ограничения, которые будут регулировать рост пользователей.
Может как-нибудь руки дойдут, тоже займусь, будем конкурировать:)
Удачи!
Кстати, wx, qt, fox и tk библиотеки для руби так же кросплатформенные.
А вот сама либа да, очень удобная. Из всех гуи библиотек для руби самая изящная, так сказать настоящий руби-стайл:) Ну все-таки ведь _why ее писал.