WordPressはファイルシステムに書き込みまくるからドッカー的なやつと相性よくないみたいな話をしたんだけど、ドッカー的なやつが状態を外部化して宣言的になっていった流れ、なんだろうな。イメージ保存のテクノロジーとしても発展できた可能性ありそうなのだけど。
2021-04-14 01:15:08というか、そういえばそもそもOSの仮想化技術ではないしな...。 Vagrant使ってたときはイメージごと保存されるの分かってたから、vimとかも入れてたし捨てる前提で汚すというよりイメージ保存の前提だった。
2021-04-14 01:28:54@tenjuu99 面白い着眼点っす、言われるまで疑問に思わなかった。。 基本モチベは「IaC」=環境構築の再現性にあって、それならDockerの方向性で良いわけです。 VMは、IaC意図でも使えますが、元々は文字通りの仮想化がモチベだった。が、仮想化意図を汲む部分はまるっとAWSが持ってったのかも。
2021-04-14 09:08:28@Tanaka9230 "二つのOO"、まさにそれです。Dockerはクラスベースでインスタンスを生成する技術に似た形として発展したのですが、状態をなるべく排除する方向になった。他方、イメージのまま保存というのはVirtualBoxとかもそうですがSmalltalkもそうです。状態をそのまま保存する。
2021-04-14 10:08:46kmizuさんの言う通り、現在の主要なOOPLを見ると「サブタイピングの存在」しか非OOPLとの本質的な差異がなくて、かつ主流の言語ではサブタイピングと実装継承が密接に絡みついてて、実装継承は容易にカプセル化を破壊するので使うべきじゃない的な事が一般的に言われるまでになっており……
2021-04-14 22:29:43じゃあ非OOPLの方がよくね?みたいな話になってしまうのだけど、OOPL擁護論でこの辺を上手く論じてる記事があるならぜひ読んでみたい
2021-04-14 22:29:44@gakuzzzz 構造体に手続きも一緒に持てるようにしようぜ!が原初のOOPというか、OOPと名付けられた仕組みのはずなんですが、なんでこんなに拡大解釈されたんですかね。。。
2021-04-14 22:35:59@megascus @gakuzzzz 原初のOOP論は、やりだすとややこしい論争になりそうなのでおいとくとして、 構造体+手続きでひとまとめは、抽象データ型って名前が既についてるんですよね(なので、非OOPの世界でも出てくる概念です)。
2021-04-15 23:12:31@megascus @gakuzzzz で、当然、抽象データ型の概念は、OOPって用語よりもだいぶ前ですし、実際、SMLにはabstypeってそのものを定義する構文があります。故に、非OOPLでもできちゃう、んですよね(違うとしたら、主流のOOPLだとチェインが書きやすい?)。
2021-04-15 23:15:02@kmizu @megascus あーなるほど。SMLのabstypeってデータコンストラクタの可視範囲をモジュール機構とか使わずに限定できるんですね。この機能知りませんでした、ありがとうございます
2021-04-16 02:01:45@kmizu @megascus @gakuzzzz 大昔かじった話の雑理解ですが、 Cのstructの型名単位で処理関数を設ければ抽象データ型ごっこ、 structの中に処理関数の関数ポインタ持たせるのもまだ抽象データごっこ、 その持たせる関数(ポインタ)を運用で複数使い分けてやっとOOPごっこ という理解ですー 多態を活用して初めてOOP(ごっこ)かなと
2021-04-16 07:36:54@nagise @kmizu @gakuzzzz OOPの定義があやふやなままでSMLは非OOPなのでって言われても議論が噛み合わないです。原初のOOPはこういう意味だったはずなのになんでこんなに変な解釈されてるのかがわからんという話ですよ。SMLがOOPの定義を満たすならOOPLで良いのでは?
2021-04-16 07:46:23@nagise @kmizu @gakuzzzz SMLはOOPLの定義を満たすのかもしれないけどOOPLではないという定義があるならそれはそれで良いです。ただ、この話はここで終わりです。
2021-04-16 07:47:26@megascus @kmizu @gakuzzzz 「構造体+手続きでひとまとめは、抽象データ型って名前が既についてるんですよね(なので、非OOPの世界でも出てくる概念です)」 という部分が個人的にかなり気になって、そこが抽象データ型なら、OOPで「増えた部分」って何?ってなったので再考中
2021-04-16 07:50:18@nagise @kmizu @gakuzzzz Cになかった機能がそれで、それを扱ったプログラミングスタイルをOOPと呼ぼう、それが実現できる言語をOOPLと呼ぼう。という順序だったとC++作った人の本に書いてあった気がするけど、あげちゃって私の手元にないので信憑性はない。
2021-04-16 07:53:42@megascus @kmizu @gakuzzzz なるほど。 まあ、引っかき集めてパッケージングして「OOP!」ってブランディングしたってんならそれはそれでアリだけども
2021-04-16 07:57:47@nagise @kmizu @gakuzzzz むしろ、C++がそのブランディングで爆発的に売れたので、その機能、うちの言語にもあるよ!って名乗るのが増えてったんじゃないですかね?これは完全な感想ですが。
2021-04-16 08:11:20