Replies: 14 comments 43 replies
-
|
I would like to read an article where the author has opposing views. This will help me draw a better conclusion. If you have a link to such an article, please share it. |
Beta Was this translation helpful? Give feedback.
-
|
You wrote “dot notation, which first appeared in Smalltalk in the 1970s,” but I believe this might be incorrect. Could it be that you’re confusing it with “Simula in the 1960s”? |
Beta Was this translation helpful? Give feedback.
-
|
Great article. I came here to see how people discussed it, apparently, sadly as well, people tend to silently downvote/thumdown what they don't agree with whenever they can not find a good reason why they don't like it. |
Beta Was this translation helpful? Give feedback.
-
|
I've read this opinion many times. I never really used C# but I used C++ extensively, and I've seen object orientation grossly misused, mostly by developers that didn't understand it. However, here are 2 examples where object orientation can be great (yes, I know there are other ways to achieve these without object orientation):
That said, in one sense I agree with the author; probably 85 out of 100 developers create complex, hard to debug messes with OOPs languages, But that's not the languages fault. I've seen impossible to understand straight spaghetti C code just as often. |
Beta Was this translation helpful? Give feedback.
-
|
Why did they put this in the TLDR Dev newsletter? |
Beta Was this translation helpful? Give feedback.
-
|
Before you snag your diapers on the coffee table, get off your cloud mister high horse. Computer scientists like you complain about things not being ideal. Engineers deal with it. I was never informed that a snot-nosed little kid like you were the person who decided what a “true” engineer was. Missed the memo, apparently. Computer scientists like you complain about things not being ideal, but that’s because they are smart, unlike you. Software engineers just deal with it and get the work done as best they can. You are obviously the former with a lot to learn. So shut up and get your work done. In your main point, you chose to use a User class and not an IUser interface, or both, and then complained about your choice. Nice argument there, Aristotle. You wouldn’t know KISS if dressed up in black leather, white face paint, and blew fire down your throat. OOP was always and has always been about code reuse. That’s it. You seemed to have missed the whole fricking point. Write it in Sanskrit for all I care. Good languages like C# and Python have both inheritance and delegation. Golang doesn’t. You just aren’t experienced enough to know how to use any of them. Obviously. Regarding the banana and monkey problem (who’s Joe Armstrong?). That’s an implementation problem, not an OOP problem. Next time design your interfaces and classes better the first time around and you won’t have any fruity problems. Usually, we learn how we should have designed our interfaces and classes AFTER the first version ships. If we ever get the chance, we try to fix those mistakes in version two. It sounds like neither of you are old enough to have worked on the version two of a large, complex software project. It sounds like I would have dropped you from the team early on, too. At the end of the day, it’s all about readability. Will someone be able to read and understand your code tomorrow? That’s really the only goal of programming. Come back in ten years. And in the mean time, try to learn something from your elders. I wouldn’t wipe Uncle Bob’s ass (or any of the other CS giants he mentions in his book) with a little punk like you. Now, that’s what I wanted to write. But then I thought, you know, that’s kind of mean. So I just wrote this: I disagree and I have a TON more experience in software development than you do in your “many” years. So there, that’s my argument. You can ignore the first part. |
Beta Was this translation helpful? Give feedback.
-
|
I started learning programing in college with Java and C#, and it was a pain to understand the different design patterns (to your point, it's battling the architecture rather than the business decision)... and later transitioned to JavaScript in my internships which I love the FP aspect of it, but missed the OOP's way of modeling relationships and object lifecycles (I guess I was hardwired to think in OOP in some ways from my education) And recently, I got an engineeering job that uses Ruby. According to my understanding and experience so far, it is an OOP language with quite a bit of FP features, and I think it's a sweet spot for me! I do have a question, how would FP handle lifecycles? I had Claude spit out a rough comparison between OOP and FP: OOP example: FP example: It seems like OOP is able to track the lifecycle of an object, whereas FP has to create different versions of it due to its immutability nature. |
Beta Was this translation helpful? Give feedback.
-
|
Try reinveting DOM (Document Object Model) for the web without OOP :) |
Beta Was this translation helpful? Give feedback.
-
|
Netscape Navigator vs Internet Explorer, or to stay in programming: Procedural vs Object-Oriented, Static typing vs Dynamic typing, Server-side vs Client-side, Monolith vs Microservices, Relational Databases vs NoSQL, Native apps vs Web apps ... it's all the same, all the same unnecessary wars that waste resources. They are two different concepts that address different problems and have different strengths and weaknesses. It depends! Btw. the worst thing ever happened to programming is US american date format "2/24/2025" ;-) |
Beta Was this translation helpful? Give feedback.
-
|
From your list of complaints against OOP it is clear that you don't know how to implement it properly. A poor workman always blames his tools, and if you are incapable of writing effective software using nothing more than encapsulation, inheritance and polymorphism then you are not much of a programmer. I worked in other languages for 20 years before switching to PHP in 2002, and I taught myself OOP based on my personal experiences. I have been told time and time again that my methods are wrong, that I am not following best practices, but my critics are missing a very important point - my methods cannot be wrong because they work. I do not follow their version of best practices as I prefer to follow a different set of practices which produce better results, ones than produce far more reusable code than they can shake a stick at. You can read one of my numerous articles at A minimalist approach to Object Oriented Programming with PHP |
Beta Was this translation helpful? Give feedback.
-
|
I mean, everyone is entitled to their opinion, but clearly you never worked on real complex projects with many contributors if you suggest functional programming, which belong maybe in projects of 2-3 people that really like math. I've been programming for the better part of the last 30 years, in dozen of languages, in various disciplines and while I had enough misery handling badly written OOP code, the issue was always incompetent programmers more than this or that technology. Besides sentences like "why experienced Java (C#, C++, etc.) programmers can’t really be considered great engineers, and why code in Java cannot be considered good." begs the question if the writer of this "article" has ANY real-world development experience, writing real complex solutions that servers millions of people daily (I did, multiple times). Some humility and self consciousness won't hurt. |
Beta Was this translation helpful? Give feedback.
-
|
I can't imagine you really feel that strongly about OOP after having many years of experience. At the end of the day, everything is about trade-offs, and programmers can shoot themselves in the foot with FP just as easily. I also think it's important to consider the historical context of why things were introduced. Even if you really hate OOP, alternatives at its time might not have been viable/feasible or just worse. Or course we should always seek to improve upon past wisdom, but to discount them wholesale because of some inconvenience you encountered seems disingenuous/unwise. But in the age of information, you gotta create some buzz I guess. It certainly got me to reply |
Beta Was this translation helpful? Give feedback.
-
|
why are people so obsessed with "versus"? Functional and OOP ideas can compliment each other. You don't need to frame OOP as some sort of injustice that your generation must be at war with. It's good for some things and less good for other things. To frame it as only right or wrong is just childish, who is the author trying to impress, exactly? I find either style of code readable and I think many of the points the author makes are stretched. They're just not very good at writing/reading OOP code, its ok, most developers aren't good at reading or writing code at all, if you find something that works for you; great. But you don't have to shit on something else in order to express that. |
Beta Was this translation helpful? Give feedback.
-
|
How an LLM sees us humain arguing here: 😀 Jokes About OOPWhy do OOP programmers never die? They live on through inheritance, and their kids keep overriding their garbage methods forever. Java devs walk into a bar. Bartender: “What’ll it be?” Real OOP gangsters don’t use public fields. Everything private, 400 getters/setters just to flex on procedural peasants. C++ programmers hate OOP until multiple inheritance shows up. Then they marry two base classes and spend a decade debugging the diamond-problem divorce. OOP résumé: “15 years crafting beautiful abstractions that hide the fact I still don’t know how memory works.” Jokes About OOP HatersOOP haters: “I love simple code!” → writes one 4000-line C file with globals named x, tmp, and pls_work. “Inheritance is evil!” says the guy whose codebase is a single god function called do_everything_and_kitchen_sink(). Functional bros roast OOP while their “pure” Haskell app needs three PhDs and a blood sacrifice to print “Hello World” without side effects. “I hate objects, I’m a real systems guy!” → writes raw assembly, chases segfaults for six months, cries when a 20-line class fixes it. OOP haters in 2025 still quoting that one 90s rant while secretly using Python classes daily because “it’s just syntactic sugar, bro.” React functional purists bragging about hooks and “no classes” while doing const [state, setState] = useState() — my brother in Christ, you just reinvented private encapsulated state with extra steps and a worse devtools experience. Congrats, you encapsulated your encapsulation inside a functional LARP |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Discussion of https://alexanderdanilov.dev/en/articles/oop
Beta Was this translation helpful? Give feedback.
All reactions