オブジェクト指向をDisするときに使われるゴリラ・バナナ問題とは

ゴリラ・バナナ問題とは

オブジェクト指向は再利用性がないという問題に対して、最近よく読むのがゴリラバナナ問題だ。
これはErlangの開発者のJoe Armstrong(ジョー・アームストロング)の再利用性について語った話らしい。元は2009年の本

原文はこう。

The Gorilla / Banana problem:
I think the lack of reusability comes in object-oriented languages, not functional languages. Because the problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
If you have referentially transparent code, if you have pure functions — all the data comes in its input arguments and everything goes out and leave no state behind — it’s incredibly reusable.

私は再利用性の欠如は、関数型言語ではなくオブジェクト指向言語から来ていると思う。
オブジェクト指向言語の問題は暗黙の状況を常に持ち歩いていることだ。
たとえばあなたはバナナを欲しがったが、あなたが得たのはバナナとジャングル全体を持つゴリラだった。
もしあなたが透明なコードを参照出来る、またはピュアな関数を持っているなら、
すべてのデータが入力引数に入り、すべてが消せます。何の状態も残さないでしょう。
それは信じられないほど再利用可能なのです。

JSでのオブジェクト指向

ECMAScript 2015からはClass構文が利用出来るようになりましたが、JSには元々prototype継承という副作用の無い起こらない考え方があるので、好んで使うべきではないらしいです。
とはいえ、最近はclassも結構使われている印象を感じるし、多重継承とかしなければいいんじゃないかって気もする。

まとめ

JSerは基本的にprototype継承やオブジェクト合成を利用して書いて行くと良いといえるんだろか?
ただ、これはJSの話であって、typescriptではまた違う気もする。

まあこういう問題があるってことで認識しとけばいいのか( ´ω` )
あぁゴリラ・バナナ問題ね!!みたいな。