Size: a a a

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

2019 August 25

M

Maxim in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Да, ваши последние записи я в LJ видел.  Кстати,  о птичках,  т.е близкой мне системе SAP.

Действительно,  гонять данные между БД и структурами данных в языке програмиирования - это боль,  но эта боль в других системах по опыту еще больше.

Дело в том,  что в SAP нельзя просто так напрямую создать табличку с полями.  Нужно пойти в словарь данных, для полей таблички сослаться на элементы данных,  в элементах данных описать из назначение и сослаться на домены,  в доменах опять описать назначение и сослаться на один из базовых типов.  Если сослался на элемент данных с количественным типом в домене - будь добр укажи поле с единицей измерения,  аналогично для стоимостных полей нужно указать валюту.  И все это трассируется по where used,  т.е можно посмотреть в каких табличках фигурирует вот этот элемент данных "номер заказа на продажу".  

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

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

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Да, ваши последние записи я в LJ видел.  Кстати,  о птичках,  т.е близкой мне системе SAP.

Действительно,  гонять данные между БД и структурами данных в языке програмиирования - это боль,  но эта боль в других системах по опыту еще больше.

Дело в том,  что в SAP нельзя просто так напрямую создать табличку с полями.  Нужно пойти в словарь данных, для полей таблички сослаться на элементы данных,  в элементах данных описать из назначение и сослаться на домены,  в доменах опять описать назначение и сослаться на один из базовых типов.  Если сослался на элемент данных с количественным типом в домене - будь добр укажи поле с единицей измерения,  аналогично для стоимостных полей нужно указать валюту.  И все это трассируется по where used,  т.е можно посмотреть в каких табличках фигурирует вот этот элемент данных "номер заказа на продажу".  

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

Вот и интересно,  появилось ли за прошедшие десятилетия что-то получше именно прикладном плане,  а не в виде перспективных исследований?
С одной стороны понятно, что дикая процедура с походом в словари и принудительной трассировкой ("сослаться" это как раз оно) долгая, с другой стороны она и есть нынешний онтологический state of the art, ибо позволяет создавать сложнейшие системы, которые не слишком быстро разваливаются.

Примерно так сегодня устроены большинство PLM и ERP и EAM систем — те системы, которые первично имеют дело с описаниями материального мира, а не только с "данными", неважно что описывающими (это программисты любят работать с "данными", а для всех остальных это описания чего-то вовне программы, и это крайне важно — онтология вот тут появляется).
источник

AN

Alexey Neznanov in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
С одной стороны понятно, что дикая процедура с походом в словари и принудительной трассировкой ("сослаться" это как раз оно) долгая, с другой стороны она и есть нынешний онтологический state of the art, ибо позволяет создавать сложнейшие системы, которые не слишком быстро разваливаются.

Примерно так сегодня устроены большинство PLM и ERP и EAM систем — те системы, которые первично имеют дело с описаниями материального мира, а не только с "данными", неважно что описывающими (это программисты любят работать с "данными", а для всех остальных это описания чего-то вовне программы, и это крайне важно — онтология вот тут появляется).
источник

M

Maxim in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
С одной стороны понятно, что дикая процедура с походом в словари и принудительной трассировкой ("сослаться" это как раз оно) долгая, с другой стороны она и есть нынешний онтологический state of the art, ибо позволяет создавать сложнейшие системы, которые не слишком быстро разваливаются.

Примерно так сегодня устроены большинство PLM и ERP и EAM систем — те системы, которые первично имеют дело с описаниями материального мира, а не только с "данными", неважно что описывающими (это программисты любят работать с "данными", а для всех остальных это описания чего-то вовне программы, и это крайне важно — онтология вот тут появляется).
Онтология ни куда и не девалась, просто она неудовлетворительна, а значит предполагает свое изменение посредством очередных научных исследований.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Igor Katrichek
Производственная практика показывает, что программист приземляет на систему типов своего языка программирования не концептуальную модель БД, а физическую.  Вчера был вопрос "насколько часто типы вообще используются для описания домена" - вот оно здесь. Какие физические таблицы и поля завели в БД, такие типы в программе обычно и заводятся (ORM для незнающих SQL). То есть, тип данных pump в программе обычно появляется только если в БД есть таблица с насосами, и программисту неважно какие насосы - складские, установленные на станции, разбираемые, или другие, так как он делает типы "для вычислений".
Вот да, я в эту точку и бью: что там у программистов с приземлением не физической модели данных, а сразу концептуальной модели! А мне хором отвечают, что их физическая модель интересует, и всё богатство современной системы типов для неё!

А меня не конверсия из одной foundational ontology в другую такую же интересует, а выход на upper ontology. Увы, программисты этого даже не понимают (((
источник

M

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

А меня не конверсия из одной foundational ontology в другую такую же интересует, а выход на upper ontology. Увы, программисты этого даже не понимают (((
Что вам мешает в выходе на то, что вы называете «upper ontology»?
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Вот в 2012 году, когда мы этим плотно занимались, я даже подробней писал про все эти различия между НСИ, мастер-данными и прочим таки, чем в процитированном обзоре — https://ailev.livejournal.com/1021613.html

Я полностью согласен, что это то самое программирование-в-большом, но мой вопрос идёт про то, как это делать современными средствами работы с данными в языках программирования. Ибо вроде как люди работают, пыхтят над системами типов, а в реальной жизни толку от этого — нуль. А хочется, чтобы не нуль.

Вот братья Райт применили двигатель от мотоцикла (лёгкий и мощный) для летательного аппарата тяжелей воздуха — и хорошо ведь получилось. Можно ли тут продвинутое знание о типах в языках программирования применить для всей этой работы с НСИ, мастер-данными, данными операционного учёта/проектными данными?

Чтобы кровавый энтерпрайз был менее кровавым, достойная ведь цель )))
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
@ailevenchuk Хуже, богатство современной системы типов не для физической модели данных даже, а для вычислений.
источник

IK

Igor Katrichek in Типы в языках программирования, моделирования, представления знаний и жизни
Добавлю ещё одну ссылку от 2013 года https://ailev.livejournal.com/1067013.html
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Вот это место и болит. Нужно, чтобы его не было. Есть же красивые системы типов, а люди с табличками возятся. Грубо говоря, волшебной палочкой делают деревянные палочки, а потом работают деревянными палочками. А можно сразу волшебной палочкой — чтобы деревянные по пути не создавать?! Программируют-то не на SQL, хоть он тьюринг-полный! Программируют на нормальных языках. А систему типов и хранение данных этих типов делают в табличках, а не в нормальных структурах данных.

Нужно понять, в чём проблема (она ж не в legacy, хотя и в этом тоже — СУБД многие создавались, когда круче Паскаля/Дельфи ничего не было) и исправить ситуацию!
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
@ailevenchuk Хуже, богатство современной системы типов не для физической модели данных даже, а для вычислений.
Ну вот Julia тоже вроде как для "вычислений", но общее мнение — что хорошо для вычислений, хорошо и для всего остального. То есть нормальный язык получился, не хуже других — для всех применений.

Если система типов хороша, что ж не программировать на ней работу с данными?! Выйти за пределы олимпиадного программирования/программирования in the small?
источник

AL

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

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
@ailevenchuk Я имею в виду не математические вычисления, а исполнение программ. Каким боком типы, предназначенные для того, чтобы не давать совершать недопустимые действия в алгоритмах, прикрутить для того, чтобы описывать недопустимые дейстия над данными?
источник

IK

Igor Katrichek in Типы в языках программирования, моделирования, представления знаний и жизни
Anatoly Levenchuk
Вот это место и болит. Нужно, чтобы его не было. Есть же красивые системы типов, а люди с табличками возятся. Грубо говоря, волшебной палочкой делают деревянные палочки, а потом работают деревянными палочками. А можно сразу волшебной палочкой — чтобы деревянные по пути не создавать?! Программируют-то не на SQL, хоть он тьюринг-полный! Программируют на нормальных языках. А систему типов и хранение данных этих типов делают в табличках, а не в нормальных структурах данных.

Нужно понять, в чём проблема (она ж не в legacy, хотя и в этом тоже — СУБД многие создавались, когда круче Паскаля/Дельфи ничего не было) и исправить ситуацию!
Надо объявить таблицы в БД "ассемблером, на котором никто не программирует", и выполнять из богатого на типы языка программирования в автоматическом режиме не только DML-операции, но и DDL тоже. А концептуальную и логическую схемы БД списать в утиль.
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
@ailevenchuk Я имею в виду не математические вычисления, а исполнение программ. Каким боком типы, предназначенные для того, чтобы не давать совершать недопустимые действия в алгоритмах, прикрутить для того, чтобы описывать недопустимые дейстия над данными?
Особенно, если эти действия делают разные программы на разных серверах? Программирование-в-большом ведь.

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

В Julia динамическая типизация, но можно включать проверку типа по надобности. Тоже ведь решение!
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
Igor Katrichek
Надо объявить таблицы в БД "ассемблером, на котором никто не программирует", и выполнять из богатого на типы языка программирования в автоматическом режиме не только DML-операции, но и DDL тоже. А концептуальную и логическую схемы БД списать в утиль.
с концептуальной схемой сложней. Её ж всё одно делать нужно — и потом приземлять на foundational ontology. Без разницы, это языки программирования или базы данных.

Другое дело, что сама концептуальная схема тоже пишется на какой-то foundational ontology. И почему бы не на типах языка программирования сразу! Тогда да, конверсия будет минимизирована.
источник

IK

Igor Katrichek in Типы в языках программирования, моделирования, представления знаний и жизни
Mikhail Gusarov
@ailevenchuk Я имею в виду не математические вычисления, а исполнение программ. Каким боком типы, предназначенные для того, чтобы не давать совершать недопустимые действия в алгоритмах, прикрутить для того, чтобы описывать недопустимые дейстия над данными?
С помощью типов хочется не только описывать недопустимые действия над данными, но и ограничивать "кучерявость" данных. Например, у ножниц всегда две половинки и ровно один винтик, но ручки могут быть круглые, овальные и т.п. Длина ножниц может быть любая, но половинки более должны быть более длинные, чем широкие. И соединены половинки должны быть ножами внутрь, а не наружу, и т.д.
источник

MG

Mikhail Gusarov in Типы в языках программирования, моделирования, представления знаний и жизни
Igor Это же придумали давно (считай, той же системы типов F# хватит), а свежее всё про поведение?
источник

AL

Anatoly Levenchuk in Типы в языках программирования, моделирования, представления знаний и жизни
На всякий случай: вот полный пакет вышедших частей стандарта ISO 15926 — https://yadi.sk/d/6o0G4cML3TCZdd
источник

IK

Igor Katrichek in Типы в языках программирования, моделирования, представления знаний и жизни
@ailevenchuk "ISO_15926_package_Apr_2015/ISO 15926-11/initial set of relationships ISO 15926-11_2014-04-16.pdf" - тоже хороший перечень отношений, для формализации в богатых системах типов
источник