Сейчас для логической организации во "мэйнстримовых" языках применяется иерархическая организация — пространства имен, пакеты и т.п. Однако жизнь штука сложная и не всегда хорошо вписывается в иерархическую схему. У меня часто возникали ситуации, когда более естественным способом организовать типы и функции в программе была бы фасеточная классификация, где гранями являются функциональные аспекты системы. Но фасеточная классификация неоднозначно отображается в иерархическую, что порождает некоторые проблемы, особенно если над проектом работает несколько людей.
Собственно, вопрос: как Вы думаете, имеет ли право на полную и насыщенную пользой жизнь идея организации программ через систему граней/тэгов?
В принципе, это возможно и при поддержке со стороны языка, так и чисто инструментальными средствами. Например, плагин в IDE, который "заряжается" тэгами и строит на основании их иерархию определенным образом, заодно следя, что бы программист ручками не нарушил правильного порядка. Например, это было бы вполне естественной епархией решарпера.