Size: a a a

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

2019 August 24

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Nick Ivanych
> есть предусловия и постусловия
Чтоб с этим нормально работать, хорошие типы уже нужны ;-)
Хотя и если просто описать операционно, конечно, требований к типам гораздо меньше.
Я ровно за этими "хорошими типами" и приходил! Для описания непредсказуемого мира, когда у нас новые аспекты мира появляются каждый день после каждого непредвиденного телефонного звонка или каждого неожиданного прогона программы, описания мира в хороших типах очень нужны. Ибо в плохих типах требуется при таких изменениях перетряхивать все описания. А в хороших типах изменения обычно локальны, описания типов в каком-то смысле модульны и выразительны для компактности описания жизни  (а не выразительны для абстрактных академических целей).
источник

AG

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

ХТ

Христофор 🇺🇦 Тюлькин in Типы в языках программирования, моделирования, представления знаний и жизни
Alex Gryzlov
зависимые типы для индуктивных данных антимодульны
кодировки же всякие улучшают ситуацию с expression problem
источник

AT

Alexander Tchitchigin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Фишка в том, что первый раз дело делается с планированием на лету каждого шага, и журналируется ручное выполнение. А второй раз — это выполняется обычно чуток модифицированный шаблон первого выполнения. Сами же эти "дела" (cases) состоят из других дел. В основе описания же — практики, ассоциируемые не с шагами процесса, а с domain. Можно считать так, что они все задаются декларативно (есть предусловия и постусловия, и задействуются практики при выполнении предусловий, когда бы они ни возникли). То есть есть практика "если поцарапалось — закрась. И обычно наблюдай, поцарапалось ли". И нет явно прописанного процесса, где это было бы шагом. Но в жизни люди начинают замечать, что где-то поцарапалось — и закрашивают. Но это вообще уже оффтоп к дискуссии о типах в языках программирования, но не о типах в моделировании.

В архитектурных языках архитектуры предприятия (типа ArchiMate) есть два элемента: один "процесс" для императивного процесса из шагов, а другой "функция" для вот такой вот "практики". Это всё описано у меня в учебнике "Системное мышление" — https://yadi.sk/i/aaZBihiJhw6i8w

Если считать, что языки программирования, моделирования, онтологизирования это одно (а я так считаю), то это тогда валидная дискуссия для группы. Если считать, что это всё разные языки (например, язык программирования исполняется фон-неймановским процессором, архитектурный язык головой человека, онтологический язык логическим процессором — что для меня смешные различия), то тогда тут такое обсуждение оффтоп.
Не переживайте - в этой группе не оффтоп, мы ж её специально для этого и завели. 😊
источник

AT

Alexander Tchitchigin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Вот смотрите, как различаются описания Idris и Julia в их сравнении: https://www.slant.co/versus/133/5275/~julia_vs_idris

У Idris как раз  "Pro
Domain driven design and type driven development

Because of full dependent types in Idris, the programmer can focus more on modelling the domain with types and waste less time fixing common bugs that the type checker will catch. Dependent types help apply type driven development and a lot of code auto generation, making the compiler and type checker an ally in developing working software instead of just getting in the way" — это ровно то, зачем я пришёл в чатик по зависимым типам. Ибо я считал (зря считал), что подобные вопросы в сообществе любителей Idris не оффтоп.

В Julia "Pro
Strong dynamic typing

Dynamic and high level, but does not isolate the user from properly thinking about types. Can do explicit type signatures which is great for teaching structured thinking" — ничего про лёгкость domain driven design мы не слышим. Хотя это по факту не так, ибо там очень хорошая работа с пакетами — ты добавляешь описания мира с разных сторон, не перекомпилируя каждый раз всё заново вместе с библиотеками.
> Dependent types help apply type driven development and a lot of code auto generation, making the compiler and type checker an ally in developing working software instead of just getting in the way

На текущем уровне развития технологии, вот это предложение - почти полностью wishful thinking и маркетинг, к сожалению.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alexander Tchitchigin
Не переживайте - в этой группе не оффтоп, мы ж её специально для этого и завели. 😊
Может, тогда и в названии это отразить? Типы в языках программирования, моделирования, представления знаний и жизни. Онтологические языки почему-то называют формально "языки представления знаний".
источник

AT

Alexander Tchitchigin in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Может, тогда и в названии это отразить? Типы в языках программирования, моделирования, представления знаний и жизни. Онтологические языки почему-то называют формально "языки представления знаний".
Мне казалось, и так название слишком длинное, но если считаете, что станет лучше... 😊
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Alexander Tchitchigin
> Dependent types help apply type driven development and a lot of code auto generation, making the compiler and type checker an ally in developing working software instead of just getting in the way

На текущем уровне развития технологии, вот это предложение - почти полностью wishful thinking и маркетинг, к сожалению.
Вот для меня "type driven development" и "domain driven development" — это синонимы. Domain описывается типами его объектов и отношений. Поэтому мне всё равно, что там про компилятор они пишут, но не всё равно, что они напирают, что типы (а не алгоритмы) ведущие в работе над программой — что программа отражает как-то мир, а не только операции над математическими объектами в программе.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Вот теперь это очень круто и фронтир! )))
источник

AT

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

ХТ

Христофор 🇺🇦 Тюлькин in Типы в языках программирования, моделирования, представления знаний и жизни
@ailevenchuk вопрос по Вашей стороне вопроса: какой теор-минимум следует изучить среднестатистическому типовику, чтобы иметь возможность осмысленно обсуждать онтологический фронтир?
источник

AG

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

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Христофор 🇺🇦 Тюлькин
@ailevenchuk вопрос по Вашей стороне вопроса: какой теор-минимум следует изучить среднестатистическому типовику, чтобы иметь возможность осмысленно обсуждать онтологический фронтир?
Я всегда рекомендую программистам книжку BORO Book, https://yadi.sk/i/2SgjvILB3PqJEZ.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Некоторый заход на проблематику моделирования/онтологизирования/программирования (и, соответственно, работы с типами) "в большом" у меня пару лет назад был прописан в тексте https://ailev.livejournal.com/1391038.html — и там дальше по ссылкам.

Ибо есть гипотеза, что всё это существенно различается, если моделирование/онтологизирование/программирование выполняется локально одним агентом с его ведущим viewpoint или коллективом агентов, которым нужно как-то совмещать свои разные viewpoints. В мире программирования это примерно соответствует тому, как живётся олимпиадным программистам (в задаче полтора типа и 20 строчек алгоритма) и программистам кровавого энтерпрайза (алгоритм на 20 строчек имеет дело с пятью разными API, смотрящими в пять разных SQL и NoSQL баз плюс ещё веб-форма у оператора).
источник

AG

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

AG

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

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Да без разницы, статическая или зависимая типизация. Но если у вас зависимый тип определяет один человек в своей программе, а вот сама зависимость приходит от другого человека в другом городе, который писал другую программу год назад — вот тут начинаются вопросы. Не помогут тут ни алгоритмисты, ни языковики. Ибо другие вопросы встают.
источник

AG

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

AG

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

AG

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