Системный инженер Борис гулял с Сашей и ее младшей сестрой в парке. Была ранняя теплая осень, девочки о болтали о чем-то своем, а Борис просто шел по дорожке, отключив голову. Вдруг к нему подбежала Женя, его младшая: "Папа, я хочу, чтобы ты мне купил фасон, как у Саши, черный такой!" "Купить тебе фасон?" "Да, фасон, черный такой, с кружевами". "Фасон нельзя купить. Может, тебе купить платье?" "Нет, фасон, ну как ты не понимаешь!" - Женя чуть не плакала. Тут в разговор вмешалась Саша: "Ей нужна кофточка. - И повернувшись к Жене, добавила. Фасоны бывают только у платьев, у одежды. Это свойство, а не вещь, ее купить нельзя". Тут уже не выдержал Борис и он задал уточняющий вопрос Саше: "То есть ты считаешь, что фасон может быть только свойством и не может быть вещью?" "Конечно, - удивилась Саша. - Фасоны, цвета, крой, борта - это все свойства одежды. Глупость же говорить, что есть такая вещь как цвет. Это свойство".
"Но вообще-то цвета как отдельные вещи существуют же? Мы же можем их обсуждать? Говорить про зеленый, белый, оранжевый цвет?" "Кому надо говорить про цвета вне привязки к каким-то вещам? Можно обсуждать цвет одежды, машины или лака для ногтей, но обсуждать цвет сам по себе - это какая-то ерунда. Может, дизайнеры будут это делать, но нормальные люди нет". Борис кивнул в знак того, что он понимает о чем идет речь, но не отставал: "А как нормальные люди относятся к фразе дизайнеры обсуждали какие фасоны будут модными в будущем сезоне?" "Нормальные люди понимают, что дизайнеры обсуждают фасоны платьев, а не фасоны сами по себе. Нельзя обсуждать свойства в отрыве от предметов, у которых эти свойства есть, это заумь какая-то".
"Представь, что ты хозяйка магазина платьев, у тебя что, в рабочем каталоге будут позиции артикулов по строкам, а в столбцах все-все-все свойства, характеристики платьев? Фасон, силуэт, стиль, вырезы, ткань, и еще что там бывает, я не специалист?" "Да, конечно. Вещь и ее свойства". Тут Борис прищурился и задал следующий вопрос: "Хорошо, а у свойств бывают свои свойства?" Саша посмотрела на него с недоумением: "Нет, конечно". "А платье разве не свойство одежды в целом? Точно также, как фасон - свойство платья?" "Э-э-э нет, точно нет. Платье - это категория одежды. Есть одежда, у нее есть категории - куртки, штаны, платья, шапки".
"Хорошо, категории вещь есть только для вещей?" "Ну да, конечно". "Окей, а какие есть категории платьев?" "Классические, народные, деловые, вечерние, коктейльные, слипы, их миллион". "А вот то, что ты сейчас перечислила, разве не фасоны? Мне так показалось". Саша ненадолго впала в ступор: "Ну да, конечно, такие фасоны тоже есть. Не вижу проблемы, что у категории вечернее платье будет вечерний фасон". Борис улыбнулся: "Хорошо, вернемся к тому, что ты владелица магазина платьев и у тебя есть большая табличка, где перечислены все артикулы платьев, которые ты продаешь, а в столбцах у тебя есть свойства - размеры, фасоны, силуэты, цвета. И теперь ты решила расширить бизнес и торговать еще и куртками. Что делать с табличкой?" Саша нисколько не растерялась: "Заводить вторую, с куртками". "Но ведь там тоже будут фасоны, цвета, ткани, ведь у разных категорий одежды есть общие наборы свойств?" "Ну, значит, буду вести две таблички с одинаковыми полями". "А какой-нибудь Вайлдберрис, по-твоему, ведет стотыщмиллионов табличек для всей своей номенклатуры в каталоге?"
Саша задумалась, даже из своего небольшого опыта она понимала, что стотыщмиллионов табличек и еще больше полей ввода и списков породят такую неразбериху, что мало не покажется никому. Тут ее осенило: "Да, на самом деле, надо просто добавить категории одежды как свойства и вести общую табличку. Будет одна табличка на все виды одежды". Видно было, что она горда своей придумкой. Борис же продолжал: "Так все-таки вещи могут быть свойствами? А свойства могут быть вещами?" "Нет, почему?" "Ты только что сказала, что категории одежды, вещи, у тебя стали свойствами, пошли в столбец таблицы". "Ну, это же просто так, для удобства".
"Логика, она знаешь, вся построена на удобстве. Никто не придумывает логику, которая неудобна для рассуждений, все хотят упростить рассуждения с помощью логики, а не усложнить. И базовая логика заложена в структуру таблиц - по строкам вещи, по столбцам их свойства. Если ты поместила категории одежды в столбец, то ты сделала вещь атрибутом другой вещи". "Ну да, для другой вещи это может быть атрибутом, хотя слово то же самое". "То есть фасон может быть вещью, объектом?" "Да нет, фасоны у одежды, это всегда атрибут, как и цвет".
"А представь табличку, где фасон будет в строке, и тогда его свойством будет что?" Саша задумалась: "Не знаю. Силуэт? Покрой?" "Пусть будет силуэт, у одного фасона на самом деле могут быть варианты с разными силуэтами и разными вырезами, хотя тут надо с дизайнерами говорить. Но факт налицо - мы можем говорить отдельно про фасон как про объект, у которого есть свои свойства. А потом, когда мы договоримся про то, какие бывают фасоны и какие у них бывают свойства, мы можем перейти к платьям и уже говорить, что у какого-то платья есть фасон как свойство". "И зачем это?"
"Ну как, у тебя вместо огромной простыни с кучей ненужных и пустых полей будет 2-3 плотно заполненные таблички - каталог самих платьев с артикулами, цветом, фасоном и тканью. Будет табличка с тканями и их характеристиками - волокно, состав, толщина, режим стирки. Будет табличка фасонов с силуэтами, вырезами, акцентами и чем-то еще, о чем думают дизайнеры. И если у тебя что-то меняется, тебе не надо перелопачивать огромную таблицу, и менять кучу атрибутов, ты меняешь одну-две таблички, и у тебя снова есть актуальный каталог. Удобно".
"Подожди, папа. - Саша замедлила шаг. А у этих новых объектов - у фасона, ткани, есть категории? Ведь должны же быть, если они есть у одежды?" "Если есть необходимость, то да, только обычно говорят не о категориях, а о классах. Объекты группируются в классы. У платьев есть суперкласс одежда и подклассы - коктейльное, свадебное и т.д. У фасонов, наверное, нет суперкласса, зато точно есть подклассы, мы про них говорили. У ткани есть суперкласс - материал, ведь одежду делают не только из тканей, но и из кожи, например, и есть подклассы - льняные, хлопковые, синтетика". "И у каждого класса-суперкласса-подкласса есть свой набор атрибутов?" "Ну да, и тут главное как сделать такую структуру классов и атрибутов, чтобы они между собой не перемешивались, чтобы не получилось как у тебя, что одно и то же слово одновременно является классом объекта и его атрибутом. Этим занимаются онтологи, инженеры данных, они придумывают такие вот модели предметных областей, чтобы было удобно и точно описывать объекты этой предметной области".
"А ты онтолог?" "Не, когда мне нужна онтология, я всегда ищу готовую, их много разных лежит в Интернете, надо просто поискать. Каждый раз, когда я захожу на проект, я всегда изучаю типовые онтологии, ищу, например, banking ontology, aviation ontology или retail ontology. И сразу становится намного проще разговаривать с командой, потому что ты понимаешь, о каких вещах они говорят, что для них важно, о чем еще надо поговорить". "А я всегда удивлялась, как это ты можешь советовать что-то людям, если ты по этой теме ни дня не работал". "Ну, некоторые мыслительные приемы и ходы довольно универсальны. Скажем так, что в 80% случаев мой подход работает, но в 20% я ничем помочь не могу. Но 80% - это неплохой результат, не правда ли?" "100% лучше". "100% лучше. Согласился Борис. Эй, куда Женя убежала?" И они побежали искать младшую.
"Но вообще-то цвета как отдельные вещи существуют же? Мы же можем их обсуждать? Говорить про зеленый, белый, оранжевый цвет?" "Кому надо говорить про цвета вне привязки к каким-то вещам? Можно обсуждать цвет одежды, машины или лака для ногтей, но обсуждать цвет сам по себе - это какая-то ерунда. Может, дизайнеры будут это делать, но нормальные люди нет". Борис кивнул в знак того, что он понимает о чем идет речь, но не отставал: "А как нормальные люди относятся к фразе дизайнеры обсуждали какие фасоны будут модными в будущем сезоне?" "Нормальные люди понимают, что дизайнеры обсуждают фасоны платьев, а не фасоны сами по себе. Нельзя обсуждать свойства в отрыве от предметов, у которых эти свойства есть, это заумь какая-то".
"Представь, что ты хозяйка магазина платьев, у тебя что, в рабочем каталоге будут позиции артикулов по строкам, а в столбцах все-все-все свойства, характеристики платьев? Фасон, силуэт, стиль, вырезы, ткань, и еще что там бывает, я не специалист?" "Да, конечно. Вещь и ее свойства". Тут Борис прищурился и задал следующий вопрос: "Хорошо, а у свойств бывают свои свойства?" Саша посмотрела на него с недоумением: "Нет, конечно". "А платье разве не свойство одежды в целом? Точно также, как фасон - свойство платья?" "Э-э-э нет, точно нет. Платье - это категория одежды. Есть одежда, у нее есть категории - куртки, штаны, платья, шапки".
"Хорошо, категории вещь есть только для вещей?" "Ну да, конечно". "Окей, а какие есть категории платьев?" "Классические, народные, деловые, вечерние, коктейльные, слипы, их миллион". "А вот то, что ты сейчас перечислила, разве не фасоны? Мне так показалось". Саша ненадолго впала в ступор: "Ну да, конечно, такие фасоны тоже есть. Не вижу проблемы, что у категории вечернее платье будет вечерний фасон". Борис улыбнулся: "Хорошо, вернемся к тому, что ты владелица магазина платьев и у тебя есть большая табличка, где перечислены все артикулы платьев, которые ты продаешь, а в столбцах у тебя есть свойства - размеры, фасоны, силуэты, цвета. И теперь ты решила расширить бизнес и торговать еще и куртками. Что делать с табличкой?" Саша нисколько не растерялась: "Заводить вторую, с куртками". "Но ведь там тоже будут фасоны, цвета, ткани, ведь у разных категорий одежды есть общие наборы свойств?" "Ну, значит, буду вести две таблички с одинаковыми полями". "А какой-нибудь Вайлдберрис, по-твоему, ведет стотыщмиллионов табличек для всей своей номенклатуры в каталоге?"
Саша задумалась, даже из своего небольшого опыта она понимала, что стотыщмиллионов табличек и еще больше полей ввода и списков породят такую неразбериху, что мало не покажется никому. Тут ее осенило: "Да, на самом деле, надо просто добавить категории одежды как свойства и вести общую табличку. Будет одна табличка на все виды одежды". Видно было, что она горда своей придумкой. Борис же продолжал: "Так все-таки вещи могут быть свойствами? А свойства могут быть вещами?" "Нет, почему?" "Ты только что сказала, что категории одежды, вещи, у тебя стали свойствами, пошли в столбец таблицы". "Ну, это же просто так, для удобства".
"Логика, она знаешь, вся построена на удобстве. Никто не придумывает логику, которая неудобна для рассуждений, все хотят упростить рассуждения с помощью логики, а не усложнить. И базовая логика заложена в структуру таблиц - по строкам вещи, по столбцам их свойства. Если ты поместила категории одежды в столбец, то ты сделала вещь атрибутом другой вещи". "Ну да, для другой вещи это может быть атрибутом, хотя слово то же самое". "То есть фасон может быть вещью, объектом?" "Да нет, фасоны у одежды, это всегда атрибут, как и цвет".
"А представь табличку, где фасон будет в строке, и тогда его свойством будет что?" Саша задумалась: "Не знаю. Силуэт? Покрой?" "Пусть будет силуэт, у одного фасона на самом деле могут быть варианты с разными силуэтами и разными вырезами, хотя тут надо с дизайнерами говорить. Но факт налицо - мы можем говорить отдельно про фасон как про объект, у которого есть свои свойства. А потом, когда мы договоримся про то, какие бывают фасоны и какие у них бывают свойства, мы можем перейти к платьям и уже говорить, что у какого-то платья есть фасон как свойство". "И зачем это?"
"Ну как, у тебя вместо огромной простыни с кучей ненужных и пустых полей будет 2-3 плотно заполненные таблички - каталог самих платьев с артикулами, цветом, фасоном и тканью. Будет табличка с тканями и их характеристиками - волокно, состав, толщина, режим стирки. Будет табличка фасонов с силуэтами, вырезами, акцентами и чем-то еще, о чем думают дизайнеры. И если у тебя что-то меняется, тебе не надо перелопачивать огромную таблицу, и менять кучу атрибутов, ты меняешь одну-две таблички, и у тебя снова есть актуальный каталог. Удобно".
"Подожди, папа. - Саша замедлила шаг. А у этих новых объектов - у фасона, ткани, есть категории? Ведь должны же быть, если они есть у одежды?" "Если есть необходимость, то да, только обычно говорят не о категориях, а о классах. Объекты группируются в классы. У платьев есть суперкласс одежда и подклассы - коктейльное, свадебное и т.д. У фасонов, наверное, нет суперкласса, зато точно есть подклассы, мы про них говорили. У ткани есть суперкласс - материал, ведь одежду делают не только из тканей, но и из кожи, например, и есть подклассы - льняные, хлопковые, синтетика". "И у каждого класса-суперкласса-подкласса есть свой набор атрибутов?" "Ну да, и тут главное как сделать такую структуру классов и атрибутов, чтобы они между собой не перемешивались, чтобы не получилось как у тебя, что одно и то же слово одновременно является классом объекта и его атрибутом. Этим занимаются онтологи, инженеры данных, они придумывают такие вот модели предметных областей, чтобы было удобно и точно описывать объекты этой предметной области".
"А ты онтолог?" "Не, когда мне нужна онтология, я всегда ищу готовую, их много разных лежит в Интернете, надо просто поискать. Каждый раз, когда я захожу на проект, я всегда изучаю типовые онтологии, ищу, например, banking ontology, aviation ontology или retail ontology. И сразу становится намного проще разговаривать с командой, потому что ты понимаешь, о каких вещах они говорят, что для них важно, о чем еще надо поговорить". "А я всегда удивлялась, как это ты можешь советовать что-то людям, если ты по этой теме ни дня не работал". "Ну, некоторые мыслительные приемы и ходы довольно универсальны. Скажем так, что в 80% случаев мой подход работает, но в 20% я ничем помочь не могу. Но 80% - это неплохой результат, не правда ли?" "100% лучше". "100% лучше. Согласился Борис. Эй, куда Женя убежала?" И они побежали искать младшую.