16 ms·
The hate is mostly a cultural misunderstanding. What happens once something reaches the top is that you start to have people with lots of experience in it that
by didibus 6y ago
The hate is mostly a cultural misunderstanding.
What happens once something reaches the top is that you start to have people with lots of experience in it that are becoming more and more aware of some of the small warts. And they start to heavily complain about them.
The people with less experience listen to those complaints, but don't have the understanding to the nuances and minutiae involved to really understand what the problem is and how big a problem it is, if it means the entire paradigm is garbage, or just some details that can still be improved on, and other small things where there might be better ways to approach it.
So, the less experienced start to think it must just suck. And they don't want to spend their effort learning something with so many issues that clearly some of the smartest devs say has tons of problems and there are better approaches for.
This eventually leads to the cultish flame wars and all that which we see way too often when discussing technicalities. The problem being, most people do not actually understand what is bad or good and the trade offs at play, thus when they debate, they instead pray on their affiliation and beliefs of what they've read but did not properly understand.
- sebastos 6y agoI think this is a really important comment that deserves to be discussed. You can see this on display in virtually every hackernews thread. Somebody will say something like "I sort of like X, but my problem with it is Y". But what they don't tell you is their experience level, the context of how they came to believe Y, or really any supporting understanding of whether Y is an actual technical tradeoff that needs to be considered. It's sort of an overly grandiose, performative way of saying "oh yeah I tried haskell once, and I got stuck on this thing, so I never came back to it." As one of the novices just trying to allocate my time, I'm constantly trying to understand whether, say, it's worth really understanding C++ at a deep level, or whether I should just try to learn Rust. All too often, I find this devolves into me scouring the internet for "C++ is ok but the ownership model is so primitive that I would never start a new project in it" and comparing it to "My problem with Rust is that it's still such a nascent language I can't trust it to have the libraries I need". Who are these people, and why are they saying these things? Are their gripes relevant to me? I have no way to know! Reading some comments on hackernews, I often come up on a comment that seems to be speaking another language. At first I'm intimidated into thinking that there's a secret club of intellectuals that understand exactly what this comment is talking about. But then I start to wonder.. is this actually elite minds speaking in a very high-level way with extremely advanced context? Or, is it just some overly opinionated junior person who just assumes everybody is working on the same web tech stack they are, and speaks with that implicit assumption? When they say "OOP is now considered an anti-pattern, most companies are moving towards reactive FP", do they really mean "I work at snapchat and the ads group I work for is moving away from OOP. My friend at amazon said he's doing the same thing"?
- forgot_account 6y ago>>>But what they don't tell you is their experience level, the context of how they came to believe Y, or really any supporting understanding of whether Y is an actual technical tradeoff that needs to be considered. Yes, thankyou! I think about this every time I see "Systems are so powerful we can just throw RAM/CPU cycles at every problem, efficiency doesn't matter..." as if everyone on the planet is doing web apps, and there are no engineering/architectural situations that might drive certain languages or design principles. Such as this: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/wp/wp-01020.pdf https://www.intel.com/content/dam/www/programmable/us/en/pdf... I guess I'm just focused on a niche market...
- seibelj 6y ago> Reading some comments on hackernews, I often come up on a comment that seems to be speaking another language. At first I'm intimidated into thinking that there's a secret club of intellectuals that understand exactly what this comment is talking about. But then I start to wonder.. is this actually elite minds speaking in a very high-level way with extremely advanced context? Or, is it just some overly opinionated junior person who just assumes everybody is working on the same web tech stack they are, and speaks with that implicit assumption? I love HN don’t get me wrong, but my coworkers and I like to poke fun at it. Some jokes are “why didn’t you just use rust?” and “Well what did Paul Graham have to say about it?” when debating something. It’s a culture like any other. I would say a lot of super smart people are here, who have deep knowledge on the most esoteric niche subjects, and provide a lot of sage wisdom and advice. But there are a lot of cranks too (including myself!).
- AnimalMuppet 6y agoHeh. I'm (I hope) a person with sage wisdom... on some subjects. On others, I'm a crank. And you, who call yourself a crank, I suspect there are some subjects on which you have sage wisdom.
- Obi_Juan_Kenobi 6y ago#WWPGD
- jariel 6y ago"The hate is mostly a cultural misunderstanding." It's not even that -> there is not 'hate' but among a fairly small group. There is no general movement among the rank and file devs against OOP, nor among leaders. It's really just a specific group. More to you point - all incumbent systems have 'arbitrary antagonist'. It doesn't matter who is in charge, who is #1, who is the best, there will always be vocal critics.
- inopinatus 6y agoIt is readily the case that this small but noisily opinionated group occupy much of the signal bandwidth available in their respective communities, and thereby become convinced that they represent the prevailing opinion of that community. When in truth they’ve simply formed an echo chamber for their own loudly-stated views.
- monus21 6y agoIt's funny that this applies to not just programming but a bunch of other stuff like politics and religion.
- CarbyAu 6y agoHumans gotta humanate.
- dnautics 6y ago> What happens once something reaches the top is that you start to have people with lots of experience in it that are becoming more and more aware of some of the small warts. And they start to heavily complain about them. I think it's lazy to dismiss the OOP as hate from experts who are complaining. I think a lot of criticism for OOP comes from experts who used to program in OOP, often with decades of experience, and have moved on to other paradigms, and are proudly proclaiming "I will never go back". If you want a really good (non-individual) example, take React, yes, the framework as a whole, which has quietly migrated away from OOP to promoting FP style as best practice; and hell, this is inside of a programming language that while proclaiming to be multi-paradigm, was very much created with Object Orientation in mind (yes, I am aware that it was supposed to be a lisp at one point, but almost everything in the language is Object object). I think there's good evidence that this isn't just a run of the mill "grass is greener" grousing by experts. Here's a challenge. Can you name a contemporary expert or a platform that started or spent a good chunk of time as FP and ran back towards OOP (I would say since 1990 or so, as it is a thing that FPs had very poor performance before that era)?
- wolco 6y agoI can't think of an OOP framework that went functional. I can't think of a time where we killed a project or rewrote a project to make it more functional. Or where OOP bite us. React went functional for a reason. Does everyone share that reason?
- CraigJPerry 6y ago>> I think there's good evidence that this isn't just a run of the mill "grass is greener" grousing by experts. I’m not sure. For example, frameworks are often nicer in OO than FP. Of course some wag will suggest you shouldn’t use frameworks, only libraries, but that misses the point. Plugins strike me as another use case that works better in OO than FP. I’m certainly not saying you can’t have a plugin architecture in FP though, it just won’t be as nice to use, that’s all. I expect in a few years the OO revival will be strong. “Look, we can neatly model fundamental concepts such as timers again!” >> Can you name Does es5 to es6 count? es5 was in theory already OO but the predominant usage appeared to be more heavily influenced by FP. I could be wrong on that but books like javascript the good parts were popular.
- bluedino 6y agoI had a former boss who said things like: I don’t like object oriented programming It falls apart when your project gets large There’s too much performance penalty It requires you to structure your code (?) And this is in the year 2020.
- moon4u 6y agoI, too, have a question mark for the last point, but he is right for the performance remark, though.
- BurningFrog 6y agoOne important inflection point for "Tool Hate" is when something becomes so popular that teams and companies adapt them as standard tools. Because that means people who wouldn't have picked the tool themselves are now forced to work with it. That causes a WHOLE NEW level of complaining! Another way of putting it is that the most hated tool in a field is almost always the most used one.
- phre4k 6y agoReminds me of systemd.
- deleted 6y ago[deleted]
- deleted 6y ago[deleted]
- lmm 6y agoWhat would you expect to be different in a world where OOP really did suck? It doesn't take any depth of experience to say "oh, it's a tradeoff, there are no good or bad techniques, only tools in your toolbox". It sounds wise. But often it's plain wrong.
- imtringued 6y agoIf it really sucked then people wouldn't use it. It's very easy to spot a universally bad tool. There are these screwdrivers with an integrated lamp to check if a wire is live or not. Only incompetent electricians use single phase testers. Amateurs buy them because they don't want to spend $30+ on a real two phase tester and that's fine because they are going to use them 10 times in the first week and then never again. The reality is that the difference between general purpose languages aren't that great. Even when highly conservative languages like Java adopt functional programming elements, they don't really add capabilities, they only change convenience. Lambdas are nicer than anonymous classes but they are still equivalent in functionality. The situations in which you absolutely need a purely OOP or FP focused language are pretty rare. People need a language that does a little bit of everything but doesn't go too deep into either end. The problem with feature rich languages is that they are ripe for abuse. When someone discovers a feature for the first time they are going to test it out. People produce a lot of crap in their learning phase that should be thrown out but it ends up in production code bases.
- lmm 6y ago> It's very easy to spot a universally bad tool. There are these screwdrivers with an integrated lamp to check if a wire is live or not. Only incompetent electricians use single phase testers. Amateurs buy them because they don't want to spend $30+ on a real two phase tester and that's fine because they are going to use them 10 times in the first week and then never again. Electricians are in a mature profession with established training standards. Software developers aren't. > The reality is that the difference between general purpose languages aren't that great. Even when highly conservative languages like Java adopt functional programming elements, they don't really add capabilities, they only change convenience. Lambdas are nicer than anonymous classes but they are still equivalent in functionality. And yet every substantial Java codebase I've seen uses some kind of XML- or annotation-driven reflection/bytecode-manipulation proxying framework to implement something that a functional programming language would just do. Given how many bugs and complexities these frameworks introduce, no-one would use them if they didn't actually need them. So it seems that in practice the language is lacking something important, even if in theory it's "only convenience".
- leafboi 6y agoThe content of what you discuss is true there are juniors that argue for it based off of ideology. But the origins of the hate against OOP is not a cultural misunderstanding. I hate OOP and I'm pretty good at both FP and OOP. Well hate is too strong of a word. I don't hate OOP, but i definitely think it's a mistaken paradigm. I think there's actually an opposite phenomenon going on side by side with the one you discussed. Too many senior programmers are really great experts at OOP while never really examining the faults or mastering alternative paradigms. The time invested into OOP leads to a huge bias in favor of it. When OOP is evidently (to me) too be worse than procedural programming and FP people are unwilling to give up years of time invested into OOP. When experts decry OOP of course someone with 10 years of experience in JAVA is going to object. That's the way people work. The bias comes from both directions. If you think OOP is pretty good and everyone else is biased... ask yourself are you a master at OOP and FP or just OOP? If you're great at both paradigms and the time invested into both paradigms are equal... than you have the ability to make an unbiased choice. Until then most people on this thread are java guys promoting the skill they've been honing for years. A master carver isn't going to decry his years of training just because a 3D printer can beat him at his game. Humans don't work that way. This is mostly what's going on.
- didibus 6y ago> I hate OOP and I'm pretty good at both FP and OOP. Well hate is too strong of a word. I don't hate OOP, but i definitely think it's a mistaken paradigm. Thank you for demonstrating my point :p This is exactly what I'm referring too. The use of hyperboles or blanket statement by experts, which are taken at face value by those learning from them. Whereas your real sensibilities are well reasoned, nuanced, and your disliking of OO is in the details. Not everyone can get that from your reaction. So it creates this fashion trend, it's trendy to hate on OO. That's not constructive, because experts also know there's a lot to learn from OO, and not everything about it is bad.
- leafboi 6y ago>That's not constructive, because experts also know there's a lot to learn from OO, and not everything about it is bad. Isn't this statement the same? You don't get into the details of who these experts are, what they like about OOP. You summarize the issue because that's what humans end up doing rather than writing a whole essay about what's so great about OOP. Also you're communicating with someone who you presume already knows the details. You're a parody of your own statements. You create the opposite fashion trend to hate on people who hate OOP which I see plenty of nowadays. Literally half the posts on this thread follow your ideology: "I don't fully understand either paradigm so rather then picking the fashion trend I decide to make up a new one and be one of those people waving white flags and calling everything apples and oranges because I can't figure out which is worse or which is better." Since you're unable to find one paradigm better than the other you think others are just being opinionated on the details, so you declare: It's All the Same! Everything is equal! This is pure fantasy. OOP does not stand on equal ground to FP or even Procedural programming. It's like comparing Hitler to Mother Teresa, not all things in this universe are equal. When you look deeply you will find that there IS absolutely something wrong with OOP. It's not a little detail thing. There is something fundamentally wrong with OOP. Not only that, but you will find that the "experts" in CS have largely discounted OOP. I can assure you the "experts" largely discount OOP by a huge margin. OOP doesn't even have a formal definition. By experts I mean academics who are experts in programming language creation using formal and mathematical theory. Someone like Martin Fowler is not an expert because all Martin Fowler does is classify concepts with qualitative descriptions and big words. Let me clarify. An example of an expert in PL theory is someone who can create a programming language that can prove itself correct. Essentially programming languages that are not only type safe, but logically safe to the maximum degree. Idris is an example of one of these programming languages. Imagine writing in one shot, no incremental testing a 9000 line program with zero bugs. Studies in formal verification enable this with cost... and people who know this stuff are an example of experts in the field. An example of someone posing to be an expert is someone drawing 3 boxes and using lines to connect it to a single parent and calling that the "Trinarium Pattern" in order to sound like an expert. This is largely what "OOP experts" are including Martin Fowler. You don't believe me? Why don't you try to find a book on the formal theory of OOP. One that starts off with the axiomatic foundations of OOP. You want to know why "lambda calculus" books exist but there are no "Object Oriented Calculus" books? Because there is no formal theory of OOP period. It literally doesn't exist among "experts." If anything this post should at least point you or someone in the direction of why OOP is just bad. OOP doesn't have formal foundations... no one has bothered to turn it into a theory or science because it's just that bad.
- amw-zero 6y agoYou really hit the nail on the head here. It’s so easy for people to see something that took years to create, and pick out the one or two flaws in it. Meanwhile, those flaws are exponentially small compared to the benefit that an idea might have had. That’s a bit abstract. Basically a lot of good cake from OO. It’s not all good, sure, but polymorphism is a pretty darn good idea. Substitutability is a good idea. OO won’t solve all of your problems for you, but it isn’t inherently creating your problems either.