Programming is all about self-restriction. Which language do you use? Why does it ever have such a wierd syntax? We choose appropriate languages and suitable patterns for different problems - just to escape from total uncertainty to cosiness of well-known behaviors.
Art of programming is nothing but sense of proper way to restrict ability to shoot in your foot. Paradigms and languages are our tools to cut off those undesirable scenarios.