Size: a a a

Типы в языках программирования, моделирования, представления знаний и жизни

2019 August 24

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
How to design world рассказывает про то, как сделать интерактивную программу. Не про то.
источник

AT

Alexander Tchitchigin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Не очень удачный пример с налогами. Традиционный пример — это замена насоса на нефтеперерабатывающем заводе. Был насос одного производителя, поломался — его заменили на насос другого производителя, но на чертежах ведь всё осталось то же самое. У насоса тем самым есть несколько имён: комплектующее, которое на чертежах, предмет закупки (всё, что закупили для этой позиции на чертеже) и установленное оборудование (тот насос, который сейчас работает). С этим всем нужно работать: три системы учёта одного и того же насоса. Нужно, чтобы учёт не развалился, ибо насосов пара десятков тысяч, всё время что-то ломается, а вот ещё технари удумали один мощный насос двумя маломощными заменить — и нужно как-то и это отразить. Какую конструкцию из каких типов нужно для этого предложить, и почему?
Интересный вопрос. Начинает проясняться, где собака зарыта.
А можете сразу сказать в каких местах вылазят косяки и какие при "типичном" моделировании как делают сейчас?
источник

AG

Alex Gryzlov in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Вот более полная форма.
смахивает на сеть петри
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
@GabrielFallen Пару типичных косяков я привёл выше: забывают про время и про то, что физические объекты меняют свои роли.
источник

AT

Alexander Tchitchigin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Не очень удачный пример с налогами. Традиционный пример — это замена насоса на нефтеперерабатывающем заводе. Был насос одного производителя, поломался — его заменили на насос другого производителя, но на чертежах ведь всё осталось то же самое. У насоса тем самым есть несколько имён: комплектующее, которое на чертежах, предмет закупки (всё, что закупили для этой позиции на чертеже) и установленное оборудование (тот насос, который сейчас работает). С этим всем нужно работать: три системы учёта одного и того же насоса. Нужно, чтобы учёт не развалился, ибо насосов пара десятков тысяч, всё время что-то ломается, а вот ещё технари удумали один мощный насос двумя маломощными заменить — и нужно как-то и это отразить. Какую конструкцию из каких типов нужно для этого предложить, и почему?
При этом Вы написали "три системы учёта" - это три отдельных программы? Мы хотим придумать систему типов, выходящую за пределы одной программы?
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alexander Tchitchigin
Интересный вопрос. Начинает проясняться, где собака зарыта.
А можете сразу сказать в каких местах вылазят косяки и какие при "типичном" моделировании как делают сейчас?
Вот вся книжка BORO как раз про то, где и какие вылезают косяки при ООП и реляционном/табличном моделировании. И предлагает решение.

Дальше кривизна начинается в тот момент, когда это решение перекладывают в логику первого порядка и реализуют триплами. Об этом хорошо пишет Валерий Крылов, он давал пояснения в чате зависимых типов. Повторю одну из его записей 2012 года: https://justy-tylor.livejournal.com/171175.html
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alexander Tchitchigin
При этом Вы написали "три системы учёта" - это три отдельных программы? Мы хотим придумать систему типов, выходящую за пределы одной программы?
Бинго! Это и есть "программирование в большом" )))
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
Alexander Tchitchigin
При этом Вы написали "три системы учёта" - это три отдельных программы? Мы хотим придумать систему типов, выходящую за пределы одной программы?
Да. А то внутри программ линейные типы на зависимых ездят и всё красиво, а как граница процесса пересекается - так JSON или реляционка.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
@GabrielFallen Пару типичных косяков я привёл выше: забывают про время и про то, что физические объекты меняют свои роли.
Более мелко нужно говорить: отдельно объекты (которые существуют в физическом мире под разными именами и играют разные роли), отдельно роли, отдельно имена объектов и их ролей.

Про именование в этом чудесном мире тоже есть литература. Например, вот.
источник

AG

Alex Gryzlov in Типы в языках программирования, моделирования, представления знаний и жизни
ну, мы вроде говорили уже, для распределенных систем вам нужны сессионные типы, то есть все та же кодата и линейщина
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
Да. А то внутри программ линейные типы на зависимых ездят и всё красиво, а как граница процесса пересекается - так JSON или реляционка.
Вот! И очень много людей, у которых это абсолютно актуальная головная боль, и переход от XML к JSON является просто головокружительным улучшением! )))
источник

AG

Alex Gryzlov in Типы в языках программирования, моделирования, представления знаний и жизни
если хотите моделировать локальность, то и модальные типы
источник

AG

Alex Gryzlov in Типы в языках программирования, моделирования, представления знаний и жизни
а там и до пучков рукой подать :D
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
Сессионные типы - это про протоколы коммуникации? А про общую модель данных что-нибудь есть?
источник

NI

Nick Ivanych in Типы в языках программирования, моделирования, представления знаний и жизни
Alex Gryzlov
смахивает на сеть петри
Ну вот сети Петри, наверное, можно отнести к той линейщине, о которой я говорю.
Всё же, с ними работать сильно попроще, чем с биграфами.
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
@clayrat Пучки как по-английски?
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alex Gryzlov
если хотите моделировать локальность, то и модальные типы
Я вот сильно напрягаюсь при этом. Ибо "модальность" пришла как раз от онтологов, но в последнее время онтологи склоняются к тому, чтобы заменить модальности "просто типами" — классифицировать высказывания об объектах типами этих высказываний, не прибегая к понятию модальности. И нужно отдельно разбираться, что там такое с "модальностью" происходит в последнее время.
источник

AG

Alex Gryzlov in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
@clayrat Пучки как по-английски?
sheaves, тут вот у нас есть @Comonoid, он по ним вам растолкует :)
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
Я очень по верхам пробежался, и мне кажется, что sheaves и session types - это про то, как писать софт, а не про то, как моделировать мир. Я неправ?
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alex Gryzlov
а там и до пучков рукой подать :D
Лучше бы подать куда-нибудь поближе к тому, как эти пучки прилепить к выражению в языке программирования смены насоса, когда есть программа учёта чертежей (PLM), программа учёта закупок (ERP)  и программа эксплуатационного учёта (EAM). И как эти пучки использовать для того, чтобы учёт при замене насоса слесарем Васей не развалился. Если пучки для этого не помогают, то к чёрту пучки.
источник