Меня посетила очередная безумная идея. Язык программирования без условных операторов. Но объектно-ориентированный. Эдакий объектно-ориентированный Brainfuck.
Предположим, в обычном алгоритмическом языке мы имеем конструкцию:
Man man = InviteMan();
...
if(man is GoodMan)
...
else
...;
В нашем расово верном языке проблема выбора будет решаться декларативно.
Для начала составим основной use case:
case ManProcessor
{
Man man = InviteMan();
ProcessMan(man );
PrepareForNextMan();
}
Чтобы решить проблему без if, создаем класс-наследник ManProcessor, в котором переопределяем метод ProcessMan!
[UsedFor(BadMan)]
case BadManProcessor
{
ProcessMan(Man man)
{
Kill(man);
}
}
Ну и для объектов класса GoodMan, соотвественно:
[UsedFor(BadMan)]
case GoodManProcessor
{
ProcessMan(Man man)
{
Say("Благодарим за посещение, приходите еще!");
}
}
--
Таким образом имеем язык программирования без условных операторов. Кстати, все операторы в этом языке должны быть ничем иным, как методами родительского класса. С целью сохранения концептуальной чистоты, так сказать.