"Pattern generally implies there is some kind of duplication. Duplication should ideally be factored out (
OnceAndOnlyOnce aka
DRY) so that only the differences remain. It appears to me that stronger languages can more easily remove such duplication because sometimes one has to make a kind of sub-language to do it." --
Paul Graham
If you take the
SOLID principles to their extremes, you arrive at something that makes Functional Programming look quite attractive --
Mark Seemann
"This practice is not only common, but institutionalized. For example, in the OO world you hear a good deal about "patterns". I wonder if these patterns are not sometimes evidence of case (c), the human compiler, at work. When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough - often that I'm generating by hand the expansions of some macro that I need to write" --
Paul Graham