Вид, тип, род, сорт, категория, семейство, разновидность
Вид, тип, род, сорт, категория, семейство, разновидность ... - все это одно и тоже или разное? Различение этих понятий совершенно не тривиально и в разных науках интерпретируется по разному. Я здесь не ставлю цель вывести единую формулу универсальной интерпретации (это невозможно и не нужно), но как обычно, попробую провести полезное рассуждение для тех, кто моделирует информацию, программирует новую систему или просто занимается сортировкой данных.
Другие примеры слов, обозначающих классификаты: таксон, разряд, образ, кластер, профиль, характер, c натяжкой сюда же группа, множество (хотя это уже указание на отобранные экземпляры по какому-то набору характеристик или свойств). Пока не будем делать отличия между профилированием и классификацией, но это отличие, конечно, существует. Следует еще упомянуть слово фрейм, часто используемое в англоязычной литературе. Совокупность таких фреймов может быть таксономией или мерономией, но может быть и менее строгим фреймворком, как например фреймворки от TM FORUM.
Каково же назначение всех эти понятий. Их три:
- отделить частное (индивидуальное, конкретное) от обобщающего (общего). Например, лошадь - вид четвероного животного, принадлежит к более широкому классу млекопитающих или еще более широкому - живых существ. Частное от общего отделяется по каким-то признакам, свойствам, характеристикам. Четвероногое - более общее, парнокопытное - менее общее. Вид "Лошадь" - наименьшая единица обобщения, ниже только конкретный Буцефал.
- указать на общность, не описывая признаков общности: типичная реакция, типичный американец, типичная дача, типичный городишко и т.п.
- указать, какое явление является прототипом для другого. Фактором, образующим таксон/фрейм/род в таком случае выступает протототип. Например, мысль есть прототип для высказывания. Одну и ту же мысль можно высказать по разному. Или там дом типа "хрущевка" - любой дом, построенный по проекту К-7, 464, 528 (здесь слова "тип" и "проект" употребляются в смысле "прототипа"). Юбка типа миниюбка или указание на другой фасон одежды. Здесь "более общее" возникает во времени раньше, чем его производные (копии или реализации). Хороший пример - штампованные изделия. Можно считать, что все они имеют общий признак - форму, но можно считать, что они все объединяются в один класс формой того штампа, который использовался при производстве. То есть штамп - это прототип для серии изделий.
Весьма полезно сейчас открыть интернет и посмотреть, какие определения понятий ВИД, РОД, ТИП, КАТЕГОРИЯ, дает нам всемирная сеть. Мои полезные находки:
- род - всегда более общее, чем вид. Это было заложено еще Платоном и Аристотелем. Тянется до сих пор.
- вид может переводиться как species, а латинское species на греческий язык иногда переводят как эйдос - платоновский термин для обозначения идеального или есть еще один примечательный перевод, где species - это форма. Здесь под формой следует понимать греческое значение формы, то есть нечто, что в комбинации с субстанцией образует предмет. Стоит обратить внимание, что ВИД обычно трактуется как наименьшая единица обобщения.
- род по английски есть genos - очевидно, здесь кроется происхождение слова ГЕН, где ген - прототип некой части живого организма.
- тип - попытка выразить подмножество через нечеткий, явно не заданный, но казалось бы всем очевидный паттерн выделения/соотнесения. Например, тип характера - весельчак, лентяй, демагог. Тип фильма - популярный, кассовый. Тип времени - беспокойное. Характер города - мещанский, бандитский, "культурная столица". Американец, как поется в одной песенке: виски, сода, рок-н-ролл - не очень четко, но совершенно понятно, каким образом была попытка выделить типаж.
Ниже я дам своё понимание на тему, почему вид, тип, род не являются синонимами. Или скажу иначе: какие есть основания или потребности не считать их синонимами.
Итак, обратимся к нашей основной задаче - конструирование класса (в смысле класса ООП или ООД). В основе класса лежит понятие сущности. Об этом написано здесь >>> заметки на тему, как выделить сущность. Cущность имеет присущие ей свойства/атрибуты и акцидентные. Тоже самое можно сказать о состояниях сущности и ее связях (где связи - это определенные отношения с другими сущностями, здесь уместно задуматься над аспектами и ипостасями, но как-нибудь потом). Важно то, что свойства/состояния/связи образуют основу для разделения сущностей на типы, рода, таксоны, разряды, подмножества и прочее. Еще раз подчеркну, что определенные свойства, состояния и связи можно считать присущими или неотъемлемыми от сущности, а какие-то опциональными (акцидентными). Это различие на тему присущее/акцидентное важно, так как оно позволит нам понять чем родовое, видовое, типове принципиально отличаются друг от друга: см. рисунок, где кажется удалось продемонстрировать эту разницу.
Вид - наименьшая единица классификации. Вид строго "указывает" или, точнее, определяет сущность. Можно даже сказать, что вид и есть сущность, а более точно - конструктор для сущности или ее сигнификат. То есть когда мы говорим, что Буцефал - это лошадь, мы соотносим наблюдаемое конкретное животное с видом ЛОШАДЬ и Буцефал обретает свое четкое место в нашем ментальном мире. Возможно сам Буцефал не считает себя лошадью (не относит себя к виду лошадей), а Александр Македонский мог бы назвать его другом (то есть отнести Буцефала к виду друзей).
Род. В основе рода лежит некое подмножество сущностных характеристик ВИДа. Некий супер-супер-род может содержать только одну сущностную характеристику. Его можно делить на подроды до тех пор, пока мы, сужая РОД путем добавления к нему сущностных характеристик не дойдем до предельного количества этих самых сущностных характеристик и этот предел называется ВИД. Однокопытные - это род (более точно - отряд), в который входит вид Лошадь, как вид.
Тип. Отличие ТИПа от РОДа состоит в том, что в ТИП подмешиваются акцидентные свойства класса. Всякого рода таксоны и классификаты являются синонимами для типов и родов. Тип также может содержать супер-типы и подтипы. Гнедая - это тип. К типам можно отнести упряжные, верховые, вьючные.
Когда мы зафиксировали набор характеристик и свойств для определенного рода или типа, мы отбираем под них подходящие экземпляры из реальности (объекты). Совокупность этих экземпляров образует группу (супергруппу, подгруппу) или множество (супермножество, подмножество).
Зачем экземпляры класса делить на какие-то подмножества? Есть разные основания или следствия:
- Такое деление есть просто побочный эффект от того факта, что свойства/состояния/связи определены через конечные наборы значений, а значит по этим значениям можно вести группировку, сортировку или фильтрацию экземпляров класса. Так например, продавец магазина может установить фильтр на отбор в классе ОБУВЬ в значение "женская", если перед ним стоит покупатель-женщина.
- Если экземпляров в классе много (обычно так и есть, если сущность класса весьма широка, например, живое существо), то непременно возникают задачи сужения этого множества или разделения его на подмножества, потому что каждое подмножество может требовать определенного порядка его обработки в программном коде. Так, если в одном классе, например, классе "СОТРУДНИК", объединены женщины и мужчины, то поле "девичья фамилия" для мужчины заполнять не нужно, а для женщины не очень актуально поле "военнообязанный". Точно также будут спроектированы разные методы начисления зарплаты для сотрудников, имеющих признак "штатный" или "совместитель".
- Задача деления экземпляров класса на подмножества может преследовать цели навигации и систематизации экземпляров класса. Это могут быть какие-то таксономии, которые чаще всего создаются по акцидентным или темпоральным признакам. Например, отнесение фильма к категории 18+ или ЛГБТ тематике. Или разделение процессов на основные, обеспечивающие и процессы развития. Или выделение процессов уровня 1, 2, 3... 7. Или отнесение продукта/лекарства к товарам первой необходимости, дефицитным, социальным и т.п..
Попытаемся подвести какую-то основу под выделение классификационных ячеек для класса (родов, видов, типов, уровней, таксонов), чтобы конструирование этих ячеек происходило более осознанно (примечание: словом ячейка я пытаюсь обобщить все другие прочие слова, заявленные в начале статьи):
- в основе классифицирующей ячейки может стоять одно свойство, один статус или одна связь, имеющиеся у сущности. Например, живой организм. Здесь есть только одно свойство: быть живым.
- если в основе классифицирующей ячейки стоит более одного свойства, статуса или связи или любая их комбинация, то такая ячейка будет менее абстрактной (или, выразимся оппозитно - более конкретной). А значит наличие четырех признаков для ячейки порождает менее абстрактную (более детальную) ячейку, чем та, у которой этих признаков 3, 2 или 1.
- обычно на плохую практику систематизации указывает использование в одном проектируемом классе разных слов: тип, вид, разряд, категория. Лучше делать так: тип №1, тип №2, тип №3 или категория №1, категория №2, категория №3 - такое аналитическое построение обычно называют таксономия или фреймирование.
- для начала выделения ячеек следует использовать категории в том смысле, как их преподнес нам Аристотель: категория принадлежности, количества, времени, пространства, действия или претерпевания. За категориями Аристотеля стоят виды предикактов сущности, их конечно же может быть гораздо больше, чем 10. К концу 19 века философы насчитывали уже более 200 предикатов.
- если у экземпляров спроектированного класса будет много "дырок" (незаполенных атрибутов или связей), то следует перепродумать сущность класса. Возможно мы спроектировали его слишком широко или общё.
- самое сложное для понимания - это то, что любая ячейка, даже самая абстрактная, может стать прототипом сущности, что потребует ее отдельную дефиницию (определение). Например, мы говорим, что Шарик - это домашнее животное. Домашнее животное - это широкий класс (род, таксон), но в ряде случаев этого достаточно, чтобы остановиться и не опускаться ниже, указывая, что Шарик - это собака.
Стоит обратить внимание, что абстрактное-конкретное следует применять в большей степени именно к родам, типам, категориям и т.п., а не к сущностям. Так как сами сущности не должны быть абстрактными. В этом смысле иногда сложно различать определенные слова, относятся ли они к сущностям или к типам/родам/категориям. Например:
- мебель - это скорее род/мегакласс предметов, к которым относятся предметы интерьера (все предметы интерьера образуют мега-мегакласс).
- кресло - это скорее всего наименьшая ячейка классификации, т.е. вид мебели, предназначенный для комфортного сидения. Можно считать сущностью.
- кресло-реклайнер или кресло-качала - это тип (иногда говорят - подвид) внутри вида "кресло". То есть это классификационная ячейка, выделенная по определенному функциональному свойству, которое может проявляться у кресел.
- кресло на хромированных колесиках с красной обивкой и кожаными вставками с инвентарным номером 455 - это уже конкретный экземпляр сущности, так как здесь явно указаны определенные свойства экземпляра.
Взаимосвязь терминов, упоминаемых в моей статье, изображена ниже (согласно версии глоссария ИПУ РАН (Институт Проблем Управления)). На схеме зеленым цветом и красными линиями отображено то, что наиболее релевантно к данной статье.
Схема терминов ИПУ РАН доступна в СиММА, начиная с версии 2.6, включая формулировки самих терминов. Вы можете достраивать ее внутрифирменными глоссами, изменять базовые определения или наследовать от них новые согласно терминологии, устоявшейся на вашем предприятии.