Systems and Tools Have Limitations
So “Goodbye
OOP”
is a piece which has been going around.
I’ve no idea why. I wasn’t able to finish reading it. The author’s tone is
amazingly cringe-worthy.
After some time the of the clearly inexpert author (adopting a faux-foolish
tone) bashing
bad ways of OOP, the author concludes in a paragraph or two with “but, hey,
Functional Programming looks pretty cool”.
– I’m reminded of “Farewell
NodeJS”
with 1.4k likes. There the author spends time bashing the shortcomings of
NodeJS, (inexpertly or not I can’t tell; at least the author’s tone isn’t as
mockable), with a similar naivity of “but, hey, Go-lang looks pretty cool”.
I found in Undergrad there’s a politics about which tools are cool and which
aren’t. PHP isn’t “cool”. (It’s also an abysmal language; I recall reading a
great piece I liked, but can’t find it. There’re far too many articles on the
topic). Java isn’t “cool”. – But in my experience, those that complain the
loudest about how sucky these languages are rarely good programmers.
(For signalling “good programmer”, admiration of either Erlang or Haskell will
do the job. They’re Hipster Cool. – In Haskell’s case, you don’t even need to
have written anything in Haskell to say you love the language).
– What’s quite annoying about these posts, then, is that they try to make an
evaluation/judgement (“OOP sucks, FP is cool”) without qualifications. – I
like Scala; but I’m also aware there’s some pretty complicated
shit going on. (The real
downside you’ll find to Scala is it’s long compilation time, though). – I
mean, praising a language/tool without also indicating it’s costs/downsides
seems immature. In ComSci, almost everything is a tradeoff.
– What the post did get right, (from what I read of it, anyway), was that it
highlighted ways of misusing OOP; ways which aren’t “obviously” wrong, or
which sound like they’re keeping in line with OOP discipline. (By this point,
or much earlier, PL purtians would’ve pointed out the distinction between Alan
Kay’s “OOP is message-passing + late-binding” from “Java OOP”. – FWIW, the
author of “Goodbye OOP” claims experience with Smalltalk and C++, but from the
way the author writes, inexperience with each seems evident).
– Steve Yegge’s “When Polymorphism
Fails” is
another piece which takes a stab at a problem OOP is unable to model.
– But there’s a difference between “this tool can’t model this problem; don’t
use it for that” (& how to avoid such limitations), and “I’m misusing this
tool; it sucks; everyone should use this other tool I just heard of instead”.
cf. Steve Yegge’s praise of Ruby here. Yegge’s a very talented writer, so the comparison is unfair on that front, but he qualifies his praise. (He doesn’t like Ruby, but he uses it; he doesn’t know Ruby, but he rarely needs to look at the docs, compared to languages he knows, where he does have to; it’s performance isn’t amazing, but that’s mostly ok anyway).
A blogpost from Robert C Martin, “The Churn”, came up on my timeline. ‘The Churn’ referring to the naive programmer’s chase of all new things as “superior”. (Which makes for a fun comparison with “the programming language cycle”; these two pieces agree about new languages [which smart people like] lack in usable tools/libraries). – Martin makes good observations that OOP, FP are orthogonal; both tools used to solve problems. – I think in insinuation that FP isn’t worth learning/paying attention to drew ire from the FP kids.