>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 なのにバイナリ互換性がないことが凄く問題だったのよ
あれから30年近く経って,その間に #golang のようなシングルバイナリでマルチプラットフォーム対応な言語&高速コンパイラが登場して,あのときの苦労はなんだったんだ,とは思うねw
書籍『Clean Architecture』では
>オブジェクト指向プログラミングは、間接的な制御の移行に規律を課すものである。
とざっくり書かれている。もう少し言えば、オブジェクト指向ってのはオブジェクトという概念を使って「振る舞い」に関する制約を構成する。
もし Perl にオブジェクト指向な言語仕様を追加できれば面白いだろう(今世紀に入って Perl はオブジェクト指向な要素を追加した話を聞いた気がするが... うろ覚えゴメン)。最近のバージョンは知らないが、元々の Ruby の動的型システムは確か duck typing で、基本型を含めて、まさに振る舞いによる制約を構成するものだ。スクリプト言語はオブジェクト指向と相性がいいよね
さっき紹介した『Clean Architecture』では
>関数型プログラミングは、代入に規律を課すものである。
と、これまたざっくりと書かれている。
恥ずかしい話だが、ロートルエンジニアの私は未だに関数型に慣れない。脳内でスパスパっとコードが書けないでいる。これが少し緩和されつつあるのが Rust である。
Rust は所有権の概念を使って部分的に「代入に規律を課」している。まぁ、ガチの関数型言語を操ってる人から見れば「何言ってるの?」って感じだろうがw
まぁでも、Rust の勉強は中断して久しいので、やるなら最初からやり直しだなぁ。仕事で Rust をやるというのなら飛びつくだろうけど