Previous Entry Share Next Entry
photo25

distributed universe of code



Я вот смотрел на tagged DSLs от sorhed и akuklev, и мне пришло в голову, что оно то же самое, про что я сейчас думаю в контексте распределенных БД.
То есть, в графе обьектов (где транзакционность обеспечивается примерно как у Datomic) появляются typed references чтобы пройти по которым - надо ресолвить typedef и дальше исходя из него как-то интерпретировать дереференснутый блоб.

Typedef может быть задан явно или в свою очередь задан в схеме обьекта с котормы сейчас идет работа.
На этом также держится весь версионинг итд итп, ведь распределенная асинхронная бд еще означает что надо жить с нодами которые catching up и всё такое.

Да, если начать хранить в этой херне AST - то естественным образом получается universe of code (был недавно какой-то доклад на эту тему, в контексте Хаскеля, правда)

UPD: http://begriffs.com/posts/2015-10-16-internet-of-code.html кажется этот

This entry was originally posted at http://wizzard.dreamwidth.org/459460.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
justy_tylor January 3rd, 2016
Смысл поста теряется. Возможно, предполагалась какая-то ссылка на где "вот смотрел"?

wizzard0 January 3rd, 2016
http://sorhed.livejournal.com/614838.html
а вот доклад куда-то потерялся(

justy_tylor January 3rd, 2016
Это? Там мутный бред какой-то, на что я уже в комментах ругался. Нужны не гадюшники несовместимых DSL, а система EDSL на едином синтаксисе. Та же ситуация, кстати, и при выходе за пределы текстов - стили "боксиков" на диаграммах могут быть весьма различны, но необходима совместимость по схемам данных, иначе опять DSL-гадюшник и расходы на интеграцию.

justy_tylor January 11th, 2016
Посмотрел. У чела была проблема "почесать лямбду", и он гордо рассказывает, как чесал.

А по самой теме мысли такие:
1. Если хочется надёжно/безопасно распространять фрагменты кода, то это может быть любой код на любом языке. Достаточно подписи на коде и наличия SHA к зависимостям (включая код, данные, версию транслятора, etc). Использование других версий зависимостей - решение и ответственность администратора целевой системы.
2. Теперь про целевую систему, и её безопасность. Отказ от эффектов или рекурсии на неё не влияет. Атаки на ресурсы будут работать и на "эзотерическом нерекурсивном недохаскеле", и на "строке поиска", . Необходимо жёстко фильтровать вещи вроде http-запросов ещё до их раскладывания в хэш-контейнеры, а для Тьюринг-полных фрагментов иметь к песочнице соответствующий watchdog.

blackyblack January 3rd, 2016
Вот этот наверное: http://www.haskellforall.com/2015/05/the-internet-of-code.html
У меня вообще была мысль хранить чистые функции на блокчейне...

wizzard0 January 4th, 2016
Ну это про то же, да.

amarao_san January 3rd, 2016
universe of pure code, да? Никаких спецэффектов за пределами режимного объекта.

wizzard0 January 3rd, 2016
почему же pure? с эффектами тут никаких проблем нету

amarao_san January 3rd, 2016
Если у кода есть side effects, то транзакции превращаются в фикцию. Попробуй rollback для сайд-эффекта "вайпнуть всё нафиг".

wizzard0 January 4th, 2016
А, так мы хистори сохраняем, и ролбек это форк, а вайп требует чтобы вайпнуть решили все наблюдатели.

amarao_san January 5th, 2016
Честно не понял. Если side effect от транзакции в базе - meltdown реактора, то как выглядит rollback?

wizzard0 January 6th, 2016
Пожди, пожди, а кто сказал что мы тут собрались SCADA строить? это для p2p фейсбучека

amarao_san January 6th, 2016
С точки зрения понятия side effect и чистоты кода это особой роли не играет - обратно сайд-эффекты можно и не отыграть. Что при этом пойдёт "не так" никто сказать не может.

То есть "universe of code" имеет смысл только контексте чистого кода, который обратим (откатились к предыдущей версии) и воспроизводим (т.к. не зависит от внешнего мира).

buriy January 3rd, 2016
Чтобы переиспользовать знания, надо будет уметь typedef друг с другом сравнивать, и типы конвертировать.
А ведь кроме простых типов есть ещё составные (Record/struct/class/object).
В общем, как обычно -- без ИИ не разберёшься.
В системах управления знанием эта тема уже десятилетиями форсится, но никто существующими технологиями ничего сделать не может.
Собственно, lisp и есть такой universe of code.

wizzard0 January 4th, 2016
Сравнивать, конвертировать полезно.

Лисп не имеет ничего общего с universe of code, но из него ее может быть удобно делать

buriy January 4th, 2016
А universe of code это какой-то чёткий термин или абстрактное понятие?
Можешь его расшифровать? А то я не понимаю, чем лист не торт. Простой язык, легко из кода в строку и обратно гонять -- что ещё надо для лёгкости переиспользования чужого кода?
Не лисп -- так берём smalltalk или другой динамический язык [и делаем для него интерпретатор на лиспе, чем сводим задачу к предыдущей].
P.S. А по ссылке выше ( http://sorhed.livejournal.com/614838.html ) парень не понимает, как GPU работает и похоже не очень понимает, как компиляторы и интерпретаторы устроены (и почему именно так).

wizzard0 January 4th, 2016
Ближайший аналог universe of code - это CPAN или NPM, вопрос в том чтобы сделать ее на порядок мельче

> парень не понимает, как GPU работает и похоже не очень понимает, как компиляторы и интерпретаторы устроены (и почему именно так).
эээ.... это типа злобный намек что неэффективно так оффлоадить т.к. неверно проведены границы и много будет убиваться на маршалинг? очень даже эффективно, я еще в 2006 так писал, отлично работало, просто рантайм нужен правильный

buriy January 4th, 2016
>Ближайший аналог universe of code - это CPAN или NPM, вопрос в том чтобы сделать ее на порядок мельче
А, понял. Ну тогда всё ок. Только я бы это скорее назвал как "package repository" какой-нибудь.

>> парень не понимает, как GPU работает и похоже не очень понимает, как компиляторы и интерпретаторы устроены (и почему именно так).
>эээ.... это типа злобный намек что неэффективно так оффлоадить т.к. неверно проведены границы и много будет убиваться на маршалинг? очень даже эффективно, я еще в 2006 так писал, отлично работало, просто рантайм нужен правильный
Нет, маршаллинг можно оптимизировать (хранить всё в GPU, например -- Nvidia unified memory сама об этом позаботится, вроде бы).
Но GPU хорошо параллелит одинаковые инструкции. Но циклы у sorhed в его DSL не входят, а элементы -- лишь математические выражения.
Может, правда, он имеет в виду, что у него элементы DSL -- вектора и матрицы... Тогда он очень хорошо это скрывает.
И вообще, это задача компилятора размещать конструкции по вычислителям. В каком-нибудь Julia вполне можно оверрайдить набор инструкций для заданного оператора.
И вообще, отличия DSL от AST иллюзорны. Компилятору DSL не нужен, ему нужен лишь AST для работы, но это не мешает писать DSL на AST. Так зачем тогда этот язык тормозных строчных шаблонов (SQL) вообще нужен?

wizzard0 January 6th, 2016
Кстати, хороший вопрос, в каком месте тут живет оптимизатор и какими словами называют его разработчики разработчиков стандарта языка, да.

justy_tylor January 5th, 2016
А ты можешь ответить на вопрос, зачем эти лишние границы-заборы-коровники?

Необходимые границы и так есть для IO, для security, для "проплачены ресурсы вот на том кластере". Откуда берётся идея выдумывать границы между предметками?

blackyblack January 3rd, 2016
А теперь расширь эту идею до использования на trustless нодах. :)

wizzard0 January 4th, 2016
sMPC circuitry дорогое удовольствие пока что. у тебя про энигму никакой инсайдерской инфы нет? у них вроде пока что самое рабочее из того что есть. а то мучать вифф у меня не хватает мозга и времени

blackyblack January 4th, 2016
Я про энигму давно слышал, но у них основная фича - это хитрый алгоритм обмена данными, так что ни у кого нет полной информации о них. Наверное щас самое близкое - это smart contracts у эфира.

wizzard0 January 4th, 2016
Э... Так, сорри, прошу тебя погуглить матчасть перед продолжением этой дискуссии. Хотя бы что такое VIFF.

blackyblack January 4th, 2016
Угу, читаю про VIFF. Про энигму новости я прочитывал по диагонали, поэтому не сильно в теме. Что, VIFF реально помогает защититься от узлов, выдающих некорректные данные?

wizzard0 January 6th, 2016
VIFF не "помогает", это либа не на том уровне абстракции. С тем же успехом можно спросить "помогает ли OpenSSL защититься от социальной инженерии". Ну помогает, без него например сложно HTTPS сделать, а без HTTPS всё сильно хуже. Но очень косвенно помогает.

  • 1
?

Log in

No account? Create an account