Не знаю как тему назвать. Поясню на примере о чём речь.
Вот допустим делаю я какой-нибудь интерфейс для выбора стула. Понятно что стулья могут быть самые разные и допустим я сделал десятки или сотни всяких справочников всевозможных свойств которые только могут быть у стульев: материал обивки, форма подлокотников, наличие мягких подлокотников, наличие колёсиков и т.д. и т.п. И теперь мне нужно сделать какую-то иерархию с правилами, чтобы с одной стороны человек мог (с минимумом усилий) описать уже существующий стул, который стоит перед его глазами либо по какими-то отдельным признакам подобрать себе стул.
И вот я думаю: а чем делать такую иерархию? Как задавать правила, например, что у кресел качалок не может быть регулятора высоты и колёсиков? Наверняка же уже придуманы какие-нибудь годные гибкие подходы к такому софту.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].