Paul's essay sounds like a case against commercial OOP-"languages for the masses" like Java/C# more than it's against OOP. Ruby, JavaScript and Python are perfect examples of powerful languages he seems to have no issues with.<p>
I can't stand Java for the very same reason: it was created with a very specific commercial purpose in mind: to have enterprise software projects done cheaply. This implies that language should be simple enough (inexpensive training, armies of dispensable coders) and restrictive enough (cheap QA) to cheaply build systems that transfer data from one database to another. Sun, do not forget, is a hardware company. And what many hardware companies want, is to turn software into irrelevant commodity.
Most of the problems I solve don't call for OO, but it's definitely useful. The one bug I can think of that I would have avoided by using OO was the one that I introduced just before asking news.yc to evaluate ourdoings.com last time.<p>I think pg is right not to rush to implement an object system in arc. There are many opinions about what the right object system looks like. Anybody without an opinion should stay out of the way. Someone else can implement an object system for arc later.
Let's not pretend there's nothing good about OOP. Obviously it doesn't solve any more problems than any other programming model (they're all Turing Complete), so personal preference will have to come into play.<p>Besides, most of pg's gripes about OO are mostly gripes about bad programming. I've seen some seriously elegant stuff done in even the uncoolest of languages. Google runs entirely on OO languages (C++, Java, Python), and you'd be hard pressed to find someone willing to criticize their codebase for bloat, duplication, or inefficiency.
I've never been that enthusiastic about OO but I've recently become a convert to a particular case. Perl's CGI::Application module makes your whole website a single class, and each page in that site is a method in the class. I believe web.py is similar in idea. So rather than a folder full of scripts for each page you just have a single script which contains the code for all the pages of the site.<p>Having your whole site as a single class is convenient firstly as your constructor can handle the code that's common to each page, though you don't necessarily need OO to do this. Where this OO approach really shines thought is that you can create a more general web site class such as an online shop, and then subclass it for a particular instance of a shop for a client.
This is typical. You, as well as Paul Graham, have gotten stuck in a certain programming model, based on your experience. You have both lost the flexibility of youth.<p>So, don't try to use pseudo arguments to say that object orientation is bad. It's not bad, it's very good. Defend your style, but don't do it by attacking our style. It's not politics here.
i hate OO programming because of inheritance. It pissed me off to have to look through layers and layers of parents to search for a method. Stick with good ol' functions for easy debugging.