4 ms·
I have to disagree with the sentiment you express here. Your metaphor is bit confused. You are comparing individuals tools to methodologies. For example, objec
by winstonewert 5y ago
I have to disagree with the sentiment you express here.
Your metaphor is bit confused. You are comparing individuals tools to methodologies. For example, object oriented programming is a methodology which involves the use of a variety of the tools like inheritance, composition, interfaces, dependency injection, etc. So, object-oriented programming does not correspond to always using a hammer in every situation. It rather corresponds to particular theory about which tools to use in which situations.
There have been a variety of methodologies of framing buildings. There was traditional framing, then balloon framing, and now platform framing. These different approach to framing are what would actually corresponding to things like procedural programming, objected programming, and functional programming, not the individual tools.
It seems to me that it is pretty clear that there is something usefully termed data-oriented programming or functional programming. Neither is appropriate to all scenarios, but that doesn't prevent them from being useful concepts.
Crucially, though, your thrust seems to be that we should use the right approach for the task at hand. That's true to a degree. But what remains is that some paradigms are either bad ideas or frequently get applied in domains they aren't suited to (I'm looking at you OO!).
The consequence is that I don't see it as particular helpful to say "use the right tool for the job." Yes, it is true, you should use the right tool for the job. But I think its also true that some paradigms are better then others, just as some framing techniques are improvements on anothers.
- ncmncm 5y agoIf you start building a skyscraper by nailing up 2x4s, you won't get very far. But that says nothing about the merits of nailing up 2x4s. If you start a project thinking, "I'm going to make an object-oriented program", or "I'm going to make a data-oriented program", you are just working with one hand tied behind your back. A mature programmer mixes elements freely with no thought to "orientation". If you demand simple advice: Don't Be Stupid. It's not helpful, but neither is TFA. At least mine is correct.
- winstonewert 5y ago> A mature programmer mixes elements freely with no thought to "orientation". Seriously, you advocate freely mixing radically different architectural approaches? Well... I don't want to share a codebase with you.
- ncmncm 5y agoI advocate freely using language features anywhere they are useful. Architecture has nothing to do with seminar-peddlers' "paradigms". Architecture is about organization. For each problem, some architecture is uniquely suited to addressing it. If you constrain yourself to this or that paradigm, you commit at the outset to failing to arrive at the optimal organization for the actual problem.
- winstonewert 5y ago> Architecture has nothing to do with seminar-peddlers' "paradigms". No, these paradigms all have ideas about how software should be organized. OO thinks you should organize everything into interacting objects. Functional thinks you should organize everything into pure functions.
- ncmncm 5y agoOO doesn't think. Functional doesn't think. Paradigms don't have ideas about anything. Advocates for those, and others, characteristically think badly. People who build things that work do not limit themselves with pat labels. Nature has no respect for pat labels.
- winstonewert 5y agoObviously, when I say OO thinks X, I mean that people working within the paradigm think that. Given that you've decided to pretend that I meant something stupid instead, you aren't a person worth talking to.
- 5y ago