Date: 2016-02-12 05:19 pm (UTC)
From: [identity profile] levgem.livejournal.com
вот ты прям так хочешь взять и сказать, что Эльм это типа круто и мы зря всё переделывали на реакт? =))

Date: 2016-02-12 05:28 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
По моему крайне скромному опыту, Эльм это правда очень круто, если хватает возможностей его скудной библиотеки и не принципиален размер сгенеренного кода (у меня не получилось его рантайм минифицировать хорошо, много лишнего оставалось).

Date: 2016-02-13 09:38 pm (UTC)
From: [identity profile] sorhed.livejournal.com
Это сейчас касается вообще всего (исключение — мой любимый Riot.js). Чёрт возьми, react-redux с ES6 и scala.js сейчас компилируются примерно в одинаковых размеров блоб (!!!)

Date: 2016-02-12 05:40 pm (UTC)
From: [identity profile] theiced.livejournal.com
выводы в принципе очевидны - берем om и не выебываемся. ибо по скорости ок, либы всяческие, все работает.

Date: 2016-02-13 12:26 am (UTC)
From: [identity profile] vinslivins.livejournal.com
кстати, как там ом некст?
для него обязателен датомик или можно всё-таки с постгресом?

гм. и есть ли уже для ом некст фигвил и чтобы оно ещё под андроид и под айос хот релод работал?

Date: 2016-02-29 10:34 am (UTC)
From: [identity profile] maksenov.livejournal.com
А разве для Om'а обязателен Datomic? Там весь стейт можно в атоме хранить. К серверу он вообще никак и нигде.

На кложескрипте еще очень хорош reframe. В новых проектах наша команда старается его пихать везде. Ну и с sente становится совсем хорошо.

Date: 2016-02-29 11:31 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
есть некий om-next в альфа-версии

вкратец я его понял так: адресуемую часть клиентского стейта (гм, ну, видимую) мы начинаем называть "запросом даталога", и держим по-прежнему в урле

ну и, собственно, под каждый реакт компонент тоже пишется свой запрос на языке датомика, которые (дальше не дочитал, и предполагаю) КАК-ТО объединяются в то, чем клиент обменивается с сервером.
(по сравнению с RESTом, где запрос за один раз только на одну сущность, неважно, чтение или изменение)

Date: 2016-03-01 05:00 am (UTC)
From: [identity profile] maksenov.livejournal.com
Опять же это не относится к серверу. Каждый компонент описывает что ему нужно, при этом источник данных неважен. Этот запрос поступает в реконсайлер, который решает куда обращаться. То есть Datomic Pull Syntax доходит только до рекосайлера, а там работает с пользовательской функцией parse для каждого источника данных. Тащемта, хорошо показано это в:

https://medium.com/@kovasb/om-next-the-reconciler-af26f02a6fb4#.7fiwi0lbu
http://codebeige.net/talks/om-next-dataflow/#/

А вообще, советую спрашивать сразу на слэке: clojurians.slack.com. Часто на идеологические вопросы отвечает сам Девид.

Date: 2016-02-13 09:30 pm (UTC)
From: [identity profile] sorhed.livejournal.com
Скобки фу!

Date: 2016-02-12 05:40 pm (UTC)
From: [identity profile] swizard.livejournal.com
Ого, ничё себе, а я как раз Elm решил освоить — переписал тут по-работе пару админок (достаточно сложных, надо сказать), и ща пытаюсь ещё один побочный проект домучить.

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

Мож попозже попробую мысли в пост оформить.

Date: 2016-02-12 06:03 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
type Fix f
    =  Mu (f (Fix f))

SYNTAX PROBLEM
I ran into something unexpected when parsing your code!
Не, ну так неинтересно.

Date: 2016-02-12 06:06 pm (UTC)
From: [identity profile] maxim.livejournal.com
Можно ризонить!

Date: 2016-02-12 06:11 pm (UTC)
From: [identity profile] swizard.livejournal.com
Можно грабить корованы.

На самом деле там даже нормальных тайпклассов нет.

Date: 2016-02-12 06:12 pm (UTC)
From: [identity profile] maxim.livejournal.com
Они не нужны, если есть полноценные коиндуктивные рекорды, или хотябы сигма тип.
А можно и на индуктивном нарисовать монаду, одноконструкторном.
Edited Date: 2016-02-12 06:13 pm (UTC)

Date: 2016-02-12 06:13 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
fix : (a -> a) -> a
fix f = f (fix f)

id : a -> a
id x = x

f = fix id

Maximum call stack size exceeded

Open the developer console for more details.

Date: 2016-02-12 06:16 pm (UTC)
From: [identity profile] maxim.livejournal.com
Я всегда говорил, что рекурсии не реальны, а правый фолд!

Date: 2016-02-12 06:33 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Если хочется шоб как Elm, но с продвинутыми типами, для этого есть PureScript. Но смысла никакого: за те же деньги функциональность типы неоправданно сложнее, а компиляция на два порядка дольше.

Date: 2016-02-12 07:00 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
Не, я так, с целью классификации.

Date: 2016-02-13 10:37 am (UTC)
From: [identity profile] avnik.livejournal.com
Еще есть haste, у которого вроде полноценные типы.
Я правда дальше helloworld'а из коробки не заходил -- что у него с производительностью и объемом кода на выходе?

Date: 2016-02-12 06:26 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Тема Mithril или даже какого-нибудь snabbdom не раскрыта ;-)

Date: 2016-02-12 06:34 pm (UTC)
From: [identity profile] maxim.livejournal.com
Да нет, нехватает как раз еще функциональных фреймворков, а не джаваскриптовых.

Date: 2016-02-12 06:41 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Вообще да, а для "императивных мутантов побила" это неправильно.

Date: 2016-02-12 06:45 pm (UTC)
From: [identity profile] maxim.livejournal.com
WebSharper Ocsigen Lift N2O, каждый язык имеет свой, некоторые по несколько.
Сколько веб-фреймворков надо для функционального языка чтобы победить Джаваскрипт? :-)
(На Эрланге больше четырех)
Edited Date: 2016-02-12 06:46 pm (UTC)

Date: 2016-02-12 07:02 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Да уже хватит существующих.
Но очень не всё приведено.

Date: 2016-02-12 07:03 pm (UTC)
From: [identity profile] binf.livejournal.com
а зачем Elm, если есть кошерный websharper?

Date: 2016-02-12 07:14 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
А зачем websharper, если есть кошерный Elm?

Date: 2016-02-12 07:51 pm (UTC)
From: [identity profile] binf.livejournal.com
ну если элм кошерный, за что у меня есть большие сомнения, то вебшарпер прям таки архикошерный, поскольку абилки элма там лишь малая толика

Date: 2016-02-12 08:27 pm (UTC)
From: [identity profile] maxim.livejournal.com
WebSharper — недосягаемый космос, F# чувакам повезло на CLR, в отличие от JVM пацанов.
Edited Date: 2016-02-12 08:27 pm (UTC)

Date: 2016-02-12 08:37 pm (UTC)
From: [identity profile] binf.livejournal.com
Да. Ну Om например тоже неплох пачеснаку. и Ring весьма удачная идея, а в том же Websharper протокол свой, закрытый

Date: 2016-02-12 08:38 pm (UTC)
From: [identity profile] maxim.livejournal.com
Кложа охуенна, базара нет.

Date: 2016-02-12 09:23 pm (UTC)
From: [identity profile] kodt-rsdn.livejournal.com
Ну, чудеса-то все имеют реальную основу.
В браузере всё равно крутится богомерзкий жабоскрип.

И если какой-то чисто жабоскрипий фреймворк радикально проигрывает по скорости экзотичной функциональщине, это значит одно из двух:
- или оный фреймворк - редкостный говносипед
- или функциональщина пересушена, и не делает чего-то лишнего-и-полезного

В последнем случае мы рискуем при увеличении масштаба сушить код всё меньше и меньше, приближая функциональщину к изначально пухлому жабоскрипьему прародителю.

Код, порождаемый эльмом, тащит библиотеку стандартных функций - фолды там всякие, карри-анкарри...
А нельзя было оттранслировать в чистую бизнес-логику? Летало бы ещё быстрее... Или нет?

Date: 2016-02-12 09:36 pm (UTC)
From: [identity profile] swizard.livejournal.com
Я бы предположил, что все эти фолды и карри/анкарри особо незаметны в общих тормозах js-фреймворка. Всё же щас джаваскрипт-код научились более-менее шустро интерпретировать.

Скорее всего, вся производительность упирается в работу фреймворка с DOM и последующим его рендером. В этом месте чисто функциональные движки должны давать преимущество в том плане, что для них очевидно, какой узел дерева был изменён (и его надо перерисовать), а какой можно не трогать (или отдать из кеша, или ещё как).

В императивных подходах там не всё так очевидно — нужно морочиться с диффами деревьев, и тд.

Date: 2016-02-13 04:37 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Чисто как язык Elm, конечно, небыстрый, и там много что можно оптимизировать. Но тут история не об этом, а о том, что применение иммутабельных струкрур для Virtual DOM дало большой выигрыш по сравнению с обычным порошком, т.к. вопрос "были ли изменения в этом дереве" решался сравнением одного указателя, без прохода по дереву.

Date: 2016-02-13 06:40 am (UTC)
From: [identity profile] justy-tylor.livejournal.com
Ну, в "классическом" Virtual DOM мусора многовато, во всех смыслах. Тут вопрос в другом, если взять типичный UI где "таки данные меняются", то быстрее будет пересоздавать кусочки иммутабельного датасета или писать позиции изменений со времени последней перерисовки к мутабельному. Потому что должно быть второе (меньше копирований, меньше GC), но приличных реализаций пока не наблюдается.

Date: 2016-02-13 09:34 pm (UTC)
From: [identity profile] sorhed.livejournal.com
Персистентные структуры не копируются!

Date: 2016-02-13 10:17 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Копируется старое в клон при каждом изменении. Понятно, что для хороших контейнеров затрагивается только (log N), но жабаскриптовые object придётся пересоздавать, с соответствующей нагрузкой на GC.

А чтобы совсем не копировать - можно заморочиться линейными типами, но под капотом будет та же мутабельность, и "сравнением указателя" уже не отделаешься.

Date: 2016-02-13 09:33 pm (UTC)
From: [identity profile] sorhed.livejournal.com
Реакт посоны (вроде меня) тоже в основном иммутабельно используют, что, возможно, тоже что-то там ускоряет (даже наверняка, потому что hasComponentUpdated не нужен).

Date: 2016-02-13 09:34 pm (UTC)
From: [identity profile] sorhed.livejournal.com
Но я согласен, эльм крутой.

Date: 2016-02-15 11:41 pm (UTC)
From: [identity profile] dewshick.livejournal.com
красота спасет мир(от жаваскрипта)!

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 25th, 2026 08:26 am
Powered by Dreamwidth Studios