Size: a a a

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

2019 August 26

AG

Alex Gryzlov in Типы в языках программирования, моделирования, представления знаний и жизни
Alexander Tchitchigin
А у меня possible worlds упорно ассоциируются с темпоральной логикой...
семантика возможных миров это классический способ формализации любых модальных логик
источник

к

кана in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Мне не нравится сам факт, что используется пример из математики (ну, или физики, который затем привычно сведётся к примеру из математики), а не из описания какой-то инженерной или менеджерской предметной области.

Понятность примерно того же самого не для умножения, а для какой-нибудь нефтефильтрации на НПЗ или поставки реквизита на съемку 6 эпизода 13 сезона сериала #235 была бы минимальна.

А так пример, конечно, тривиален. Тээривэиаэлеэн — пишем вместо намоленных сокращений полные имена типов и получается длинней и хуже. Но если нет сокращений? Зачастую нет и самих понятий, их придумать нужно.
поэтому я и написал, что дело тут в наличии домена, который не всегда есть в програмировании
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Мне не нравится сам факт, что используется пример из математики (ну, или физики, который затем привычно сведётся к примеру из математики), а не из описания какой-то инженерной или менеджерской предметной области.

Понятность примерно того же самого не для умножения, а для какой-нибудь нефтефильтрации на НПЗ или поставки реквизита на съемку 6 эпизода 13 сезона сериала #235 была бы минимальна.

А так пример, конечно, тривиален. Тээривэиаэлеэн — пишем вместо намоленных сокращений полные имена типов и получается длинней и хуже. Но если нет сокращений? Зачастую нет и самих понятий, их придумать нужно.
+++ (разве что я постарался привести пример другими словами)
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
Maxim
Тезис:
//И вот я хотел бы как-то получить систему типов, которая имела бы смысл объектов мира, а не смысл математических объектов.//

Я вообще сомневаюсь в том, что всем одинаково понятен этот тезис.

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

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alex Gryzlov
семантика возможных миров это классический способ формализации любых модальных логик
ОК, это ещё один аргумент в пользу рассмотрения вопроса о типе Possible World. Может ли он входить в систему типов языка программирования? ))) Или его нужно моделировать каким-то способом?

Например, как воткнуть possible worlds в систему типов языка Julia? Макрос модели как задания eDSL там есть — https://julialang.org/blog/2017/08/dsl. Может, сделать макрос возможного мира или дописать это в макрос модели?

При этом Джулевский "макрос для создания eDSL" вполне можно считать тем самым GPL-для-моделирования, на котором потом пишутся eDSL, а сам он написан на хост-языке программирования (то бишь на Julia и всем её математическим внутри).
источник

VK

Val Krylov in Типы в языках программирования, моделирования, представления знаний и жизни
Общий же вопрос "как делать GPL" для меня решён, я делаю ставку на мейнстримно-выглядящий язык с включение FOL для прямого использования логического вывода, подобно тому как дифференциальные уравнения включены в Modelica, а LINQ в C#. Здесь очень сильна неопределённость, нет такого чтобы "вот теория категорий крутая, значит с ней можно сделать крутой язык программирования". Нельзя сравнивать то, чего нет. Можно лишь делать ставки.
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
ОК, это ещё один аргумент в пользу рассмотрения вопроса о типе Possible World. Может ли он входить в систему типов языка программирования? ))) Или его нужно моделировать каким-то способом?

Например, как воткнуть possible worlds в систему типов языка Julia? Макрос модели как задания eDSL там есть — https://julialang.org/blog/2017/08/dsl. Может, сделать макрос возможного мира или дописать это в макрос модели?

При этом Джулевский "макрос для создания eDSL" вполне можно считать тем самым GPL-для-моделирования, на котором потом пишутся eDSL, а сам он написан на хост-языке программирования (то бишь на Julia и всем её математическим внутри).
в примитивные типы не обязательно (это может вызвать излишнюю/преждевременную фиксацию семантики), а вот в библиотеку очень даже
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
языки где это можно выразить в библиотеке без потери общности/равномощно по сравнению с примитивными/аксиоматическими типами, думаю, есть
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
пример с оператором amb, разделявшим ветки эволюции мира/варианты расчета, если я не ошибаюсь, был в том же SICP'85 (соотв-но, на Scheme)
источник

VK

Val Krylov in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
@val_krylov Если API в виде GraphQL или чём-то похожем, где ещё и есть исторические слепки? Не будет ли это лучше?
GraphQL это просто очередной мэппер к БД, со своей мифологией. Мне приходилось работать с проектом, где он был ранее выбран для связи фронт-бэк, и впечатления самые неблагоприятные, необходимость одновременно учитывать "как это в базе" и "как это в GraphQL" лишь умножает когнитивные затраты.
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
ОК, это ещё один аргумент в пользу рассмотрения вопроса о типе Possible World. Может ли он входить в систему типов языка программирования? ))) Или его нужно моделировать каким-то способом?

Например, как воткнуть possible worlds в систему типов языка Julia? Макрос модели как задания eDSL там есть — https://julialang.org/blog/2017/08/dsl. Может, сделать макрос возможного мира или дописать это в макрос модели?

При этом Джулевский "макрос для создания eDSL" вполне можно считать тем самым GPL-для-моделирования, на котором потом пишутся eDSL, а сам он написан на хост-языке программирования (то бишь на Julia и всем её математическим внутри).
уточню - GPL = general purpose language?
источник

VP

Vasily Pankratov in Типы в языках программирования, моделирования, представления знаний и жизни
Val Krylov
GraphQL это просто очередной мэппер к БД, со своей мифологией. Мне приходилось работать с проектом, где он был ранее выбран для связи фронт-бэк, и впечатления самые неблагоприятные, необходимость одновременно учитывать "как это в базе" и "как это в GraphQL" лишь умножает когнитивные затраты.
БД тут во множественном или в единственном числе?
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
Val Krylov
GraphQL это просто очередной мэппер к БД, со своей мифологией. Мне приходилось работать с проектом, где он был ранее выбран для связи фронт-бэк, и впечатления самые неблагоприятные, необходимость одновременно учитывать "как это в базе" и "как это в GraphQL" лишь умножает когнитивные затраты.
соглашусь что он ни разу не магический; не соглашусь что он "очередной". graphql дает способ единообразно выразить больше, чем sql, но он не гарантирует, что выраженное будет удобным (собственно, на SQL DDL тоже можно трэш написать, и будет "как в базе" и "как там откуда база наполняется", например если не хватает констрейнтов)
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Val Krylov
Общий же вопрос "как делать GPL" для меня решён, я делаю ставку на мейнстримно-выглядящий язык с включение FOL для прямого использования логического вывода, подобно тому как дифференциальные уравнения включены в Modelica, а LINQ в C#. Здесь очень сильна неопределённость, нет такого чтобы "вот теория категорий крутая, значит с ней можно сделать крутой язык программирования". Нельзя сравнивать то, чего нет. Можно лишь делать ставки.
Ну вот дифференциальные уравнения оказались включены в Julia по факту не хуже, чем они включены в Modelica (и автор Modelica перешёл из-за этого на Julia). Насчёт FOL, так разных опытов по логике в той же Julia полно. Например, вот "типизированный пролог" (с вопросом "помогает ли типизирование хоть чему нибудь") — https://github.com/hessammehr/Logic.jl или стопятьсотый клон раннего Kanren — https://github.com/habemus-papadum/LilKanren.jl

При необходимости можно просто сделать то, что очень хочется — таким, как хочется.

Не думаю, что отсутствие FOL "из коробки" в расширяемом языке было бы проблемой. В любом случае, это не бОльшая проблема, чем отсутствие солвера для дифуров.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Oleksandr Nikitin
в примитивные типы не обязательно (это может вызвать излишнюю/преждевременную фиксацию семантики), а вот в библиотеку очень даже
тут два уровня библиотек: хост-язык, библиотека "моделирования мира", библиотеки eDSL этого моделирования.
источник

ON

Oleksandr Nikitin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
тут два уровня библиотек: хост-язык, библиотека "моделирования мира", библиотеки eDSL этого моделирования.
да
источник

VK

Val Krylov in Типы в языках программирования, моделирования, представления знаний и жизни
Vasily Pankratov
БД тут во множественном или в единственном числе?
Как угодно. Можно в виде GraphQL представлять одну базу, можно несколько, а можно представлять какие-то внутренние API, даже не делающие запросов к persistent storage.
источник

VP

Vasily Pankratov in Типы в языках программирования, моделирования, представления знаний и жизни
Ну "как угодно" -- это отверткой гвозди забивать.
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
@val_krylov Чем двойственность "в базе" / "в GraphQL" отличается от тройственности "в базе" / "в REST API v1" / "в REST API v2"?
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Oleksandr Nikitin
пример с оператором amb, разделявшим ветки эволюции мира/варианты расчета, если я не ошибаюсь, был в том же SICP'85 (соотв-но, на Scheme)
Вот, кстати, смолтоковцы с этим работали — http://www.vpri.org/pdf/m2013002_experiments.pdf
источник