My point was you didn't establish a causation anywhere. We have lots of software written in OOP, yes, but you didn't (and can't, really) prove that it wouldn't have been written without OOP. There are and have been APIs that work just fine without OOP, so it doesn't seem like not having OOP was barrier to entry. FFmpeg is doing fine without OOP, by the way, and so is Linux.
Here is how I can read the last few decades - software started becoming more and more popular, and in the beginning of the 90s people jumped on the OO hype/bandwagon (and haven't let go ever since). Now, OOP done wrong was worse than procedural done wrong, but since the hype and koolaid were so strong, and the fast-growing market really needed the software, programmers have just plowed through, DESPITE OOP. Classic Starcraft story, jump to "Game engine architecture" - http://www.codeofhonor.com/blog/tough-times-on-the-road-to-s... . My point being, you can release software even when you get held back by OOP.
Another thing that you failed to do is comprehend my message. Of course we have a lot of OO frameworks, since OOP is the most popular programming paradigm. If functional were the most popular then you would have a lot of FP frameworks. You're using argumentum ad populum, basically.
Without controlled experiments we cannot "establish" causation. However, citing things that work with OOP certainly disproves that OOP doesn't work. You can then fall back to the weaker position of "OOP doesn't matter", but it certainly does work.
Anyway, I certainly did a LOT more to make my case than you did, because all you did was make ever wilder claim, even claiming hypotheticals as absolute truth with ZERO backup whatsoever.
I gave the example of the WWW App. Written on NeXTStep/Objective-C, which is the closest the Smalltalk-like OOP and frameworks you could get at the time. One guy, a couple of months in his spare time. Editing included (largely because he was reusing an existing class library). 5KLOC. From scratch. Inventing.
NCSA Mosaic was created on top of non OO X-Windows and later Windows and Mac. 5 people, a year, 100KLOC, just copying something that already existed. No editing. So arguably lesser functionality, 20x the code, 10x or more the development effort.
So if your point is that OO doesn't work, you have utterly and completely failed to make that point. In fact, you just list projects that succeeded with OOP and then claim without any evidence whatsoever that they succeeded "despite" OOP.
A: "Rockets don't work".
B: "Here are some rockets launching satellites into space"
A: "But you don't understand, these satellite launched despite the rockets"
B: <stepping away slowly> "OK, whatever makes you happy."
And you are reversing cause and effect. How do you think OOP became popular? Because it allowed us to tackle larger projects more easily.
Try to back off the religion a little and look at actual evidence.
Does that mean OOP is the be-all and end-all of Software Development? Nope. At least I think not and I certainly hope not. Because it is deeply flawed, just like all of our current paradigms are deeply flawed (and IMHO FP is flawed even more, but that's another discussion). However, it was a lot less flawed than what preceded it, and therefore allowed us to get a lot more done. Or maybe not even less flawed, but had more useful points that compensated.
And I gave you the example of Starcraft, where the use of OOP actually slowed them down. And it had ever so slightly more than 5KLOC, so it's probably a better way to illustrate OOP's pitfalls.
> NCSA Mosaic ... just copying something that already existed.
Not familiar with Mosaic's history, but what you appear to be describing is porting an OO codebase to a non-OO codebase, which is not an easy feat. I know some OO codebases that are so tangled in various layers of inheritance and composition that it is only natural to be a lot of effort involved. And generally, porting isn't always a clear-cut affair; for example, straight ports from PCs to consoles are rarely straight, unless you're using a generic engine that will do that for you.
> So if your point is that OO doesn't work, you have utterly and completely failed to make that point.
No, my point was your argument by popularity is flawed, and you don't seem to have graped it. Read my original comment.
> In fact, you just list projects that succeeded with OOP
Even the author of that piece describes "the horror of the class hierarchy" and how OOP gave them a hard time. You can travel between cities with the handbreak on, but that doesn't mean you should.
> "But you don't understand, these satellite launched despite the rockets"
This analogy is so flawed I'm not going to even bother dissecting it, that's just lazy on your part.
> here are productivity numbers:
From where I gather we should all be using Haskell or something.
> And you are reversing cause and effect. How do you think OOP became popular?
C++, Java, marketing, marketing, marketing.
> Try to back off the religion a little and look at actual evidence.
Quite so. Show me evidence that OOP is better than other programming paradigms.
> Show me evidence that OOP is better than other programming paradigms.
Huh? Why should I? I was responding to someone who claimed that OO had "failed".
It hasn't, and for non-failure, existence is quite sufficient (and no, this is not the "proof by popularity" you keep talking about for no particular reason I can surmise). Fact is that we have been able to successfully tackle much larger projects (and finish them with less code) than previous paradigms.
In addition, the very person who wrote about "No Silver Bullets" predicted that OOP (which was new at the time) was one of closest things to a SB that he sees, and 20 years later confirmed that estimation. He took a little harder look than you did.
> From where I gather we should all be using Haskell or something.
You should improve your reading skills. Haskell language level is 8.5, Objective-C is 12.0, Smalltalk is 15.0. Higher is better.
Once again, I wouldn't claim that OO is "best", though right now it is probably one of the least bad we have. However, the evidence is overwhelming that it hasn't "failed". (And no, single projects failing doesn't mean OO failed. And you are probably going to have more failed OO projects than other paradigms, simply because there are more OO projects).
> [NCSA Mosaic] Not familiar with Mosaic's history
Then how about you don't make specious claims about it??
Here is how I can read the last few decades - software started becoming more and more popular, and in the beginning of the 90s people jumped on the OO hype/bandwagon (and haven't let go ever since). Now, OOP done wrong was worse than procedural done wrong, but since the hype and koolaid were so strong, and the fast-growing market really needed the software, programmers have just plowed through, DESPITE OOP. Classic Starcraft story, jump to "Game engine architecture" - http://www.codeofhonor.com/blog/tough-times-on-the-road-to-s... . My point being, you can release software even when you get held back by OOP.
Another thing that you failed to do is comprehend my message. Of course we have a lot of OO frameworks, since OOP is the most popular programming paradigm. If functional were the most popular then you would have a lot of FP frameworks. You're using argumentum ad populum, basically.