4 ms·
I'm one of those people that dislike OOP. I would call it more of a Swiss army knife than a power drill. It's a complicated mashup of different tools, many of w
by chongli 6y ago
I'm one of those people that dislike OOP. I would call it more of a Swiss army knife than a power drill. It's a complicated mashup of different tools, many of which are not very good. A lot of people don't seem to mind this though.
I, personally, am a believer in minimalism. Features which experts tell beginners to avoid should be removed. That's very hard to do with programming languages that need to support legacy code though. So I always look for new programming languages that try to do things differently, with as few features as possible.
- AnimalMuppet 6y agoThe problem is, if you remove the parts the experts tell beginners to avoid, then those parts are gone even when those beginners have become experts. Analogy: You talk to some master chefs. You tell them that the sharp knives are dangerous; they should get rid of them. They're going to tell you to get lost. The knives are valuable to them precisely because they are sharp. Sure, an amateur like me could seriously cut himself on one. So?
- chongli 6y agoMaster chefs will tell you sharp knives are safer than dull ones because dull knives tend to slip instead of cutting. That’s been my experience too, as someone who loves to cook and keeps his knives sharp. I don’t think your analogy is appropriate though. My original analogy, the Swiss Army knife, conveys what I think is the core of the problem with OOP: it takes unrelated, powerful tools, and ties them together in a way that makes them unwieldy and more difficult to use. This problem is inherent to the object itself. It ties together unrelated concepts: polymorphism, data abstraction, mutable state, inheritance, and modules. Hence the Swiss Army knife analogy. Other languages (namely functional languages) give you all of these powerful tools but you get them separately, so they’re easier to control.
- dnautics 6y agoI mean that's fine, but master chefs are not often in the position where lives might depend on handover, review, and debugging of their work by someone who is not as much of a domain expert (and some OOPs like C++ have such kitchen sink domains that it's relatively easy for two experts to be of unmatched skill and be utterly incapable of reviewing each other's work).
- PaulDavisThe1st 6y agoCool. Groovy. Until you have to work on a 700k LOC project that spans years or decades and is not really amenable to "new programming languages that try to do things differently". OK, "I wouldn't work on such a project" is a fine answer. But not a universal one.