Стоп. Естественно, любой метод имеет границы применимости. Задач
для автоматов - вполне достаточно. Если невозможна (затруднена)
декомпозиция и построение графа переходов - автомат не напишешь.
Норм, о чем спорим, коллеги? 1) При полном отсутствии декомпозиции применяют нейросети (иногда, с весьма неплохим результатом).
И это не программирование, это обучение сети.
2) Хорошо поддаются декомпозиции 93% практических задач.
Что считать правилом, а что исключением?
3) Прототридс это не замена автоматам, а лишь форма (облегченная) их кодирования.
Под прототридсами лежит точно тот же граф переходов. Если его невозможно формализовать, у вас и с ними ничего не получится.
4) Событийное программирование (в т.ч. сообщения) - очень опасная штука, так как содержит огромный соблазн дублирования (троирования и икс-игрек-ирования) обработки событий. В том числе, позволяет безнаказанно оставить событие (или специфическую последовательность событий) полностью без обработки.
Само по себе, не опаснее автоматического приведения типов. Но ...