オブジェクト指向についてなにか

12
天重誠二 @tenjuu99

WordPressはファイルシステムに書き込みまくるからドッカー的なやつと相性よくないみたいな話をしたんだけど、ドッカー的なやつが状態を外部化して宣言的になっていった流れ、なんだろうな。イメージ保存のテクノロジーとしても発展できた可能性ありそうなのだけど。

2021-04-14 01:15:08
天重誠二 @tenjuu99

というか、そういえばそもそもOSの仮想化技術ではないしな...。 Vagrant使ってたときはイメージごと保存されるの分かってたから、vimとかも入れてたし捨てる前提で汚すというよりイメージ保存の前提だった。

2021-04-14 01:28:54
天重誠二 @tenjuu99

なぜイメージをイメージのまま保存する技術というのはここまで廃れてきたのさ

2021-04-14 01:30:41
たなかこういち @Tanaka9230

@tenjuu99 面白い着眼点っす、言われるまで疑問に思わなかった。。 基本モチベは「IaC」=環境構築の再現性にあって、それならDockerの方向性で良いわけです。 VMは、IaC意図でも使えますが、元々は文字通りの仮想化がモチベだった。が、仮想化意図を汲む部分はまるっとAWSが持ってったのかも。

2021-04-14 09:08:28
たなかこういち @Tanaka9230

@tenjuu99 ところが、実は「状態の永続化」という第三のモチベがあったのだ、と。

2021-04-14 09:09:02
たなかこういち @Tanaka9230

@tenjuu99 (これ、"二つのOO"に通じるところがあるわけですよね。)

2021-04-14 09:11:02
天重誠二 @tenjuu99

@Tanaka9230 "二つのOO"、まさにそれです。Dockerはクラスベースでインスタンスを生成する技術に似た形として発展したのですが、状態をなるべく排除する方向になった。他方、イメージのまま保存というのはVirtualBoxとかもそうですがSmalltalkもそうです。状態をそのまま保存する。

2021-04-14 10:08:46
がくぞ @gakuzzzz

kmizuさんの言う通り、現在の主要なOOPLを見ると「サブタイピングの存在」しか非OOPLとの本質的な差異がなくて、かつ主流の言語ではサブタイピングと実装継承が密接に絡みついてて、実装継承は容易にカプセル化を破壊するので使うべきじゃない的な事が一般的に言われるまでになっており……

2021-04-14 22:29:43
がくぞ @gakuzzzz

じゃあ非OOPLの方がよくね?みたいな話になってしまうのだけど、OOPL擁護論でこの辺を上手く論じてる記事があるならぜひ読んでみたい

2021-04-14 22:29:44
ゆとり🇺🇦 @megascus

@gakuzzzz データ構造と手続きが一緒に定義できるのは便利だよね!ぐらいで良いんじゃないですかね?

2021-04-14 22:32:08
がくぞ @gakuzzzz

@megascus 別にそれ非OOPLでもできますし……

2021-04-14 22:34:23
ゆとり🇺🇦 @megascus

@gakuzzzz 構造体に手続きも一緒に持てるようにしようぜ!が原初のOOPというか、OOPと名付けられた仕組みのはずなんですが、なんでこんなに拡大解釈されたんですかね。。。

2021-04-14 22:35:59
kmizu @kmizu

@megascus @gakuzzzz 原初のOOP論は、やりだすとややこしい論争になりそうなのでおいとくとして、 構造体+手続きでひとまとめは、抽象データ型って名前が既についてるんですよね(なので、非OOPの世界でも出てくる概念です)。

2021-04-15 23:12:31
kmizu @kmizu

@megascus @gakuzzzz で、当然、抽象データ型の概念は、OOPって用語よりもだいぶ前ですし、実際、SMLにはabstypeってそのものを定義する構文があります。故に、非OOPLでもできちゃう、んですよね(違うとしたら、主流のOOPLだとチェインが書きやすい?)。

2021-04-15 23:15:02
がくぞ @gakuzzzz

@kmizu @megascus あーなるほど。SMLのabstypeってデータコンストラクタの可視範囲をモジュール機構とか使わずに限定できるんですね。この機能知りませんでした、ありがとうございます

2021-04-16 02:01:45
非実在naka aki @naka_aki_spl

@kmizu @megascus @gakuzzzz 大昔かじった話の雑理解ですが、 Cのstructの型名単位で処理関数を設ければ抽象データ型ごっこ、 structの中に処理関数の関数ポインタ持たせるのもまだ抽象データごっこ、 その持たせる関数(ポインタ)を運用で複数使い分けてやっとOOPごっこ という理解ですー 多態を活用して初めてOOP(ごっこ)かなと

2021-04-16 07:36:54
なぎせ ゆうき @nagise

@kmizu @megascus @gakuzzzz なるほど🤔 (OOPなんもわからんになった頷き

2021-04-16 07:40:16
ゆとり🇺🇦 @megascus

@nagise @kmizu @gakuzzzz OOPの定義があやふやなままでSMLは非OOPなのでって言われても議論が噛み合わないです。原初のOOPはこういう意味だったはずなのになんでこんなに変な解釈されてるのかがわからんという話ですよ。SMLがOOPの定義を満たすならOOPLで良いのでは?

2021-04-16 07:46:23
ゆとり🇺🇦 @megascus

@nagise @kmizu @gakuzzzz SMLはOOPLの定義を満たすのかもしれないけどOOPLではないという定義があるならそれはそれで良いです。ただ、この話はここで終わりです。

2021-04-16 07:47:26
なぎせ ゆうき @nagise

@megascus @kmizu @gakuzzzz 「構造体+手続きでひとまとめは、抽象データ型って名前が既についてるんですよね(なので、非OOPの世界でも出てくる概念です)」 という部分が個人的にかなり気になって、そこが抽象データ型なら、OOPで「増えた部分」って何?ってなったので再考中

2021-04-16 07:50:18
ゆとり🇺🇦 @megascus

@nagise @kmizu @gakuzzzz Cになかった機能がそれで、それを扱ったプログラミングスタイルをOOPと呼ぼう、それが実現できる言語をOOPLと呼ぼう。という順序だったとC++作った人の本に書いてあった気がするけど、あげちゃって私の手元にないので信憑性はない。

2021-04-16 07:53:42
ゆとり🇺🇦 @megascus

@nagise @kmizu @gakuzzzz だから、結論としては「増えてない」という認識。

2021-04-16 07:55:40
なぎせ ゆうき @nagise

@megascus @kmizu @gakuzzzz なるほど。 まあ、引っかき集めてパッケージングして「OOP!」ってブランディングしたってんならそれはそれでアリだけども

2021-04-16 07:57:47
ゆとり🇺🇦 @megascus

@nagise @kmizu @gakuzzzz むしろ、C++がそのブランディングで爆発的に売れたので、その機能、うちの言語にもあるよ!って名乗るのが増えてったんじゃないですかね?これは完全な感想ですが。

2021-04-16 08:11:20
1 ・・ 11 次へ