Benji Smith wrote a nice piece on Why I Hate Frameworks. Recommended reading for any coders out there, if only for amusement.
He has a follow-up amongst the comments, too, so it’s worth scrolling down a bit.
The problem with his argument, I think, is that programming always tends to move towards higher-level constructs. Assembly-language programming with macros was a great framework for those who had previously had to flick switches on the front of their PDP-8. And C offered greater productivity again, but is now considered pretty low-level. The scripting languages of yesterday become the programming languages of tomorrow.
But he draws a distinction between libraries and frameworks.
A library is something *contained* in my code. A framework is a *container* for my application.
And it’s true to say that many frameworks have come and gone which try to exert too much control over the code. (Anyone remember CASE tools?) Many frameworks put the programmer in a box and say, “Here’s where you can put your little bit of contribution to my mighty machine”. And programmers don’t like that. They like to know what’s happening when and feel that they’re in control of it.
This is the nice thing about software libraries: they’re servants which do your bidding and then return power to you. Frameworks are like big companies in which you must first find your office, and then work out what you are allowed to do in it. Both have their role. But I suspect that today’s libraries will become tomorrow’s programming languages.
Thanks to Frazer for the link. Oh, and P.S. Apple has a tendency to package up its libraries nicely and call them frameworks, but they’re still libraries in the sense of this article.