Size: a a a

2020 September 01

AB

Alex Bubnov in pro.elixir
VDimir
И atomic это именно мутабельная глобальная переменная получается? Прочитал доку, выглядит чужеродно для эрланга, не думал что прям в таком виде будет, ровно как и в языках с тредами
да ладно, это обычная cas-ячейка на int64.
источник

AB

Alex Bubnov in pro.elixir
нормальный такой примитив
источник

V

VDimir in pro.elixir
Alex Bubnov
да ладно, это обычная cas-ячейка на int64.
Смущает мутабельность
источник

AB

Alex Bubnov in pro.elixir
VDimir
Смущает мутабельность
Так cas же, это не какая попало мутабельность, они синхронизированные
источник

V

VDimir in pro.elixir
С точки зрения конкурентного программирования норм, но если смотреть еще на функциональную сторону, там же все персистентно стараются делать (в смысле как персистентные структуры данных)
источник

AB

Alex Bubnov in pro.elixir
Я бы не отказался от каких-нибудь ещё cas-ячеек в beam, чтобы туда произвольные термы класть
источник

V

VDimir in pro.elixir
Ну это прикольно на самом деле, что не форсируется так иммутабельность, как в хаскеле например
источник

PG

Pig Greenest in pro.elixir
В хаскеле ровно так же форсируется иммутабельность
источник

PG

Pig Greenest in pro.elixir
Только у них есть cas ячейки для произвольных термов
источник

V

VDimir in pro.elixir
Ну там это в монадах, этим сложнее пользоваться, а тут просто вызывашь put и значение обновляется
источник

AB

Alex Bubnov in pro.elixir
Alex Bubnov
Я бы не отказался от каких-нибудь ещё cas-ячеек в beam, чтобы туда произвольные термы класть
Хотя, это с моделью памяти не вяжется примерно никак
источник

LL

Lama Lover in pro.elixir
VDimir
А crdt нужно делать самому или искать стороннюю реализацию, встроенного ничего нет? Есть ли хорошие реализации?
Есть сторонняя реализация. А так, самому crdt замутить не сложно. Нужно сначала решить будет это state или operation репликация. Если state, то есть key-value crdt. Если не смотреть внутрь, работает вполне сносно. operation-based crdt очень легко самому сварить
источник

V

VDimir in pro.elixir
Alex Bubnov
Хотя, это с моделью памяти не вяжется примерно никак
Почему?
источник

AB

Alex Bubnov in pro.elixir
VDimir
Почему?
чтобы чтение не приводило к копированию и можно было compare проводить чисто по ссылке на данные, данные ячейки должны лежать в shared literal area(как persistent_term), а это в принципе не подходит для обновляемых данных, потому что при обновлении происходит примерно stop the world.
если копировать данные при чтении, нужны либо отдельные референсы для сравнения(compare опять же), либо сравнивать структурно, что небыстро.

ну и отдельный вопрос - владение этими ячейками и их жизненный цикл.
источник

PG

Pig Greenest in pro.elixir
VDimir
Ну там это в монадах, этим сложнее пользоваться, а тут просто вызывашь put и значение обновляется
Лооол
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
чтобы чтение не приводило к копированию и можно было compare проводить чисто по ссылке на данные, данные ячейки должны лежать в shared literal area(как persistent_term), а это в принципе не подходит для обновляемых данных, потому что при обновлении происходит примерно stop the world.
если копировать данные при чтении, нужны либо отдельные референсы для сравнения(compare опять же), либо сравнивать структурно, что небыстро.

ну и отдельный вопрос - владение этими ячейками и их жизненный цикл.
Ячейки вообще никак не коллектятся. Спасение утопающих — дело рук самих утопающих
источник

AB

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

AB

Alex Bubnov in pro.elixir
Lama Lover
Ячейки вообще никак не коллектятся. Спасение утопающих — дело рук самих утопающих
да, я об этом же, дополнительные сложности.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
эрланг к фп не имеет примерно никакого отношения, если что. абсолютно императивный язык, просто с персистентными данными
По-моему, эрланг внутри процесса достаточно функциональный. А вот во вне...
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
По-моему, эрланг внутри процесса достаточно функциональный. А вот во вне...
с учетом расплывчатости ярлыка "функциональный", его не имеет смысла использовать.
источник