>Rubyの「全てがオブジェクト」みたいな謳い文句はJavaに対する差別化でしかないと思っていて、Javaよりモダンな言語が多数登場した今となっては賞味期限切れな台詞なのではないか
https://twitter.com/mod_poppo/status/1748868929613881458?s=20
いや、当時の Ruby のそのコピーは Perl に対するカウンターで C++ や Java のようないわゆる「オブジェクト指向言語」に対するものではなかった筈。
Java は「オブジェクト指向」であること以上に、当時はカオスになってた UNIX 系プラットフォームでバイナリ互換のコードが吐けることが画期的だった。"write at once, run ahywhere" って奴。まぁ実際には "debug anywhere" だったんだけどw
当時は同じ UNIX なのにバイナリ互換性がないことが凄く問題だったのよ
書籍『Clean Architecture』では
>オブジェクト指向プログラミングは、間接的な制御の移行に規律を課すものである。
とざっくり書かれている。もう少し言えば、オブジェクト指向ってのはオブジェクトという概念を使って「振る舞い」に関する制約を構成する。
もし Perl にオブジェクト指向な言語仕様を追加できれば面白いだろう(今世紀に入って Perl はオブジェクト指向な要素を追加した話を聞いた気がするが... うろ覚えゴメン)。最近のバージョンは知らないが、元々の Ruby の動的型システムは確か duck typing で、基本型を含めて、まさに振る舞いによる制約を構成するものだ。スクリプト言語はオブジェクト指向と相性がいいよね
私は若い頃、C言語(C++ではない)でオブジェクト指向プログラミングを設計&実装させられた事があって、それと C++ を比較して「オブジェクト指向言語すげー」と思ったことがある。その後 Java を触るようになって、ポインタをすべて参照で隠蔽する思い切った言語設計に苦笑した覚えがある。今どきの人はむしろポインタこそ難解な概念かもしれないけどw
産業界でも Ruby が台頭し始めて改めて思ったのが「コンパイル言語ってオブジェクト指向プログラミングと相性が悪いんじゃねーの?」だった。
これが覆ったのが #golang を知ってから。クラスも継承もなく、枯れた言語仕様のみで構成されてるのに無理なくオブジェクト指向プログラミングができるのはある意味で衝撃的だった。関数型プログラミングの要素を極力排除する、時代と逆行する言語設計も面白い