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