M>>Добавляешь к нему reactivejava, у тебя есть реактивность. Да еще и со столь любимой тобой статикой
WH>Это не та реактивность.
Я так понимаю, в четвертый раз спрашивать, какая именно тебе реактивность смысла нет. Ведь все равно не ответишь.
M>>В оригинале там Buffer.write, как минимум
WH>И? Разве это каллбек? Это просто изменяемая структура данных в которую добавляют данные.
Блаб, он и есть блаб. То, что в каком-то другом языке делается что-то не так, все, ты решаешь, что тот язык — гуано.
В случае с Ur'ом ты пишешь структуру, внутри которой пишешь функцию, которая что-то делает. Потом вызываешь эту функцию.
В другом языке ты пишешь функцию, которую передаешь в другую функцию, и она вызывает первую.
M>>Которая где-то там упрятана в недрах Ur'а. И? Тебе написать обертку над достаточно низкоуровневым кодом Гапертона религия не позволяет?
WH>Ну, так напиши.
WH>А я похихикаю.
M>>runWorkerJS взят отсюда: https://gist.github.com/989438. Код там страшный, потому что в W3C, как всегда, придумали какую-то хрень
Код не тестировался, так, для иллюстрации идеи.
WH>Каша и есть каша.
WH>Опять калбеки на ровном месте.
тебя интересовал короткий код?
workerWrapper().start("A", 5000);
workerWrapper().start("B", 5000);
Достаточно коротко, не находишь? То, что в враппере callback'и тебя интересовать не должно.
Ты пойми мне абсолютно пофигу что там генерируется.
Тебе должно быть пофиг, как оно там реализовано.
WH>Сколько ты еще будешь в мою пользу код показывать?
M>>Достаточно generic обертка будет выглядеть, естественно, по-другому. По сути, runWorkerJs уже достаточно.
WH>Ну, так код без калбеков в студию.
Что я и говорил. ты все пытаешься свести к тому, чтобы все, абсолютно все выглядело и было реализовано один-в-один ровно так же и точно такими же терминами, словами и буквами, как и (в данном случае Ur| обычно Nemerle).
M>>Который не будет работать чуть более, чем во всех реальных случаев из-за реализации, но это е тебя не волнует, так ведь
WH>Его можно убить только вечным циклом.
WH>Зачем он нужен в ГУИ?
Не только им. Любым достаточно длинным процессом. Например, синхронным Ajax-вызовом.
M>>Смотрю я на Ur. Конкретно в данный момент я смотрю на threads. Ничего сверхъестественного там нет. Ну сахар и сахар
Пишешь тонкий враппер над Гапертоновским кодом и радуешься жизни. Если то вообще надо...
WH>Ну так код в студию.
WH>Только чтобы без калбеков.
Угу. Я вот боюсь, если вдруг ты ударишься в коллбэки и будешь ьтребовать код только с ними, но ни в коем случае с «просто изменяемой структурой данных в которую добавляют данные»
M>>Смотрю на ListEdit. Ну, сигналы/слоты
Вау. Это и есть реактивность? А, нет, наверное «реактивность» это установка значений вручную вот так:
WH>Знакомое слово увидел? Зря. Там другая модель.
M>>M>><button value="Change to:" onclick={s <- get ss'; set ss s}/>
M>>
WH>И как ты собрался не в ручную устанавливать?
Как минимум не напрямю в HTML-коде.
WH>Ты вообще понял, что там происходит?
WH>Когда ты правишь текст в текстбоксе то значение автоматически попадает в ss'.
WH>Когда жмешь кнопку это значение перебрасывается в ss.
WH>Далее начинает работать реактивность, обновляя все, что зависит от ss.
Вау. Да неужели. там работает банальный slot/signal механизм, на который еще подписываться надо вручную:
<dyn signal={showString ss}/>
<dyn signal={show rls}/>
и т.п.
И т.п.
Дадададдада. Это, конечно, В РАЗЫ лучше, чем ko.obervable сотоварищи, ага
M>>Вся «реактивность» заключается в сахаре над signal/slots
WH>Манипуляцию с ДОМ видишь?
WH>А она есть.
Вау. Покажи мне, где манипуляция DOM'ом, например, в следующем коде:
var w = new Ext.Window();
w.show();
Если библиотека/DSL прячет DOM от тебя, это хорошо, но н является революцией.
WH>Ибо реактивность!
Повтори это заклинание еще пару раз, авось я проникнусь

Сигналы и слоты, задаваемые вручную по всему коду, смешанные с HTML'ем — это видимо круто, с твоей точки зрения
M>>И этот человек мне говорит, что вот это вот нельзя реализовать в библиотеке для любого серверного языка?
Ах, да, signal/slot есть и для JS. Правда, для тебя он будет слишком многословным, видать.
WH>Код в студию.
Код чего?
M>>Его не так много, чтобы этого кого-либо парило, кроме тебя
WH>Его достаточно чтобы было верно утверждение что ур лучше жабоскрипта для ГУИ.
БРЕД!
M>>Самый крутой — мой язык. Там есть одна функция, «сделатьОхрененно()»
Я частично согласен с тобой в определении, до тех пор пока это не превращается в абсурд. Потому что бесспорным победителем (на определенном классе задач) выйдет какой-нибудь J.
WH>Хороший калькулятор для одноразовых вычислений.
WH>Вполне себе задача.
M>>У тебя — да. Почему реактивнотсь для GWT — это не то, ты так и не объяснил.
WH>По тому, что это совсем другая реактивность.
Какая — другая?
Реактивное программирование — парадигма программирования ориентированная на потоки данных и распространении изменений.
WH>Это клон мелкософтовского Rx.
WH>Это вообще не о том.
WH>На этой реактивности тебе придется самому с ДОМ возится.
Натягиваем реактивность на существующие классы GWT — и вуаля.
M>>Почему невозможно реализовать библиотекой (на Java/C++/Python/Ruby/хрен знает что там еще) то, что реализует Ur, ты так и не объяснил. Твой единственный «аргумент» — это «Без компилятора не получится».
WH>Ну, так код в студию.
WH>Только чтобы без километров синтаксического оверхеда.
Что я и говорил. ты все пытаешься свести к тому, чтобы все, абсолютно все выглядело и было реализовано один-в-один ровно так же и точно такими же терминами, словами и буквами, как и (в данном случае Ur| обычно Nemerle).
Но начнем с другого бока. Сначала
ты ответишь на мой вопрос, а потом я буду под тебя прогибаться, давай?
Итак, вопрос: Почему невозможно реализовать библиотекой (на Java/C++/Python/Ruby/хрен знает что там еще) то, что реализует Ur?