Systems and Tools Have Limitations

Posted on July 31, 2016 by Richard Goulter
Tags: programming.oop, programming.fp, programming.tools

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.


Newer post Older post