Size: a a a

2020 August 15

RP

Roman Proskuryakov in rust_offtopic
источник

b

badtrousers in rust_offtopic
Roman Proskuryakov
@tucnak а как ты сделал лексер и парсер?
ну в лексере ничего интересного нет, парсер пытается интерпретировать поток лексем в пропозиции. в это время подпрограмма парсера — дедуктор — попутно разгадывает пропозиции заменяя их типа ассемблерными транзакциями, которые как я вижу в будущем можно будет оптимизировать. (в кэше хранятся precomputed деревья для всех посчитанных диалектов)
источник

AS

Alex S in rust_offtopic
Vetro
источник

b

badtrousers in rust_offtopic
в чем прикол почему логосу нужен свой ассемблер? (кстати: все угорают почему го нужен свой ассемблер, но на самом деле для их корутинной модели и растущие стэки у горутин это очень имеет смысл)
источник

b

badtrousers in rust_offtopic
а логосу нужен свой ассемблер, потому что как я говорил ранее, под капотом у логоса автивка, а это децентрализованная виртуальная машина
источник

b

badtrousers in rust_offtopic
и если смотреть на нее со стороны данных, то это транзакционный леджер (типа блокчейна) и графовая модель
источник

b

badtrousers in rust_offtopic
короче на уровне логос–ассемблера намного проще оперировать лоу–левел кухней того, как должны меняться данные. можно думать, что промежуточный ассемблер тут выступает роль типа ORM
источник

b

badtrousers in rust_offtopic
какие-то инструкции тупо добавляют определенные ребра bulk-ом, какие-то наоборот удаляют (дельты), а какие-то инструкции потенциально могут работатать как JIT conditionals
источник

b

badtrousers in rust_offtopic
ну типа если у тебя есть кейс: if p, then A else B
источник

b

badtrousers in rust_offtopic
пропозиция p реально может не меняться в графе. если между текущей транзакцией и последней транзакцией значение p не менялось, то нет нужды его пересчитывать
источник

b

badtrousers in rust_offtopic
ну и опять–таки, какие пропозиции кэшить и как? где можно сэкономить, а где нет? вот для этого и есть ассемблер — это понятная промежуточная абстракция между стейтом и лексическими “предписаниями” что нужно с этим стейтом сделать
источник

b

badtrousers in rust_offtopic
например, классическая тема если у тебя есть p and q и ты знаешь что q это ложь, то тебе не надо считать p and q, ты моментально знаешь что вся пропозиция ложь
источник

b

badtrousers in rust_offtopic
и конечно каждая пропозиция имеет точный адрес в диалекте… эти адреса и выступают в роли ключей для кэша. вот так вот оно и работает (по крайней мере, пока.) блокчейн протокол, dgraph база, redis кэш
источник

KR

Kai Ren in rust_offtopic
Ну, это имхо правильнее IR называть, нежели асмом
источник

b

badtrousers in rust_offtopic
Kai Ren
Ну, это имхо правильнее IR называть, нежели асмом
ну ты понимаешь что в стандартном диалекте есть конечное множество элементарных знаков, таких как integer или real или string или alien
источник

b

badtrousers in rust_offtopic
хоть на уровне логоса string это rune list с парой пропозиций сверху, в реальности никто не будет хранить это так 🙂
источник

b

badtrousers in rust_offtopic
и есть графовая база, в которой можно хранить такие-то вещи. ты можешь добавлять ребра в граф, а можешь отнимать их. тебе реально это в конце–концов нужно будет делать только 1 раз в самом конце (текст = транзакция = два списка дельт)
источник

b

badtrousers in rust_offtopic
у actor, map, enigma — у всех этих элементарных штук может быть совсем не элементарная структура данных в графе
источник

b

badtrousers in rust_offtopic
помните что ещё разные условия можно раскладывать как графовые операции
источник

b

badtrousers in rust_offtopic
например grandchildren или самые короткие пути, потоки и тд
источник