Одиночная парадигма что-либо нарушает Первую заповедь абстракций, о которой, кажется, мало кто знает, и даже меньше заботится о ней.
Не делай себе никаких абстракций, которые нельзя переопределить при необходимости, чтобы твой код был свободен от уродливых инверсий абстракций.
Независимо от того, какая у вас парадигма, как только вы начнете писать нетривиальный код для решения реальных проблем, вы столкнетесь с некоторыми вещами, которые просто не очень хорошо вписываются в эту парадигму. Если вы заявляете, что эта единственная парадигма - это все, что есть, это то, когда все становится безобразным.
Чтобы смешать пару метафор, когда все, что у вас есть, это молоток, все начинает выглядеть как колышек, и если все ваши отверстия круглые, и вы внезапно заканчиваете с некоторыми квадратными колышками, и у вас нет пил, (только молотки) У тебя проблема.
Там нет бесплатного обеда. Все это компромисс. Чем проще становится писать код, тем труднее становится читать и поддерживать кого-то другого, или отлаживать вам или кому-либо еще, когда возникают проблемы ниже уровня абстракции, над которым вы работаете. (И они в конечном итоге, потому что нет абстракции идеально подходит .
Это фундаментальный недостаток «полезных» технологий и парадигм, таких как управляемый код, сборка мусора, JIT-компиляция и указание «все является объектом». Они устанавливают базовый уровень абстракции, ниже которого вам не разрешено находиться, и когда что-то идет не так, ниже этого уровня вы ничего не можете с этим поделать. Вы застряли, работая над плохой абстракцией, потому что не можете это исправить.