オブジェクト指向の理論

知らない話が多かったのでメモ
2
イカ娘 @came_tongue_000

ハッキリ言うと、SchemeでLisp1.5のロジックさえ動かすのはクソメンドいでゲソ(謎

2013-12-23 18:44:49
イカ娘 @came_tongue_000

以前やってみたんでゲソが、call/ccだらけになっちゃって笑っちゃったでゲソ(謎

2013-12-23 18:45:08
イカ娘 @came_tongue_000

まあ、実はある意味、現代的な新型のLispは別として、Schemeって本当はLispの中でも異端児なんでゲソよね。実は正統派じゃない方言だと思うでゲソ。

2013-12-23 18:46:29
イカ娘 @came_tongue_000

SchemeのLispならざる特徴: 1. ダイナミックスコープじゃない 2. マクロがさして重要じゃない

2013-12-23 18:48:37
イカ娘 @came_tongue_000

まあ、一番目はいまやレキシカルスコープの言語が当たり前で違和感感じるかもしれんでゲソが、元々そうなんでゲソよね。CLもレキシカルスコープを「Schemeの後に」導入したでゲソが、やっぱダイナミックスコープを完全には取り去ってないんでゲソよね。

2013-12-23 18:50:03
イカ娘 @came_tongue_000

つまり、ある意味Emacs Lispが正統なLisp継承者だとすれば(ってかある意味本当なんでゲソが)やっぱSchemeってヘンなLispでゲソ。

2013-12-23 18:51:08
イカ娘 @came_tongue_000

2番目もそうで、元々Schemeってマクロをどう導入するのか、ってのは本来の議論の対象じゃなくって、あくまでアクター理論研究の為の処理系なんで、マクロってSchemeの蚊帳の外なんでゲソよね。

2013-12-23 18:52:09
イカ娘 @came_tongue_000

従って、Schemeは何かマクロに冷たいでゲソ(笑)。なーんかいまだにその辺引きずってる気がするでゲソ。

2013-12-23 18:52:50
イカ娘 @came_tongue_000

もっとも「真面目にマクロを論じた」Lisp処理系ってのはいまだ無いってば無いのかもしれんでゲソが。ただ、CL的な「マクロへの思い」って元々Schemeって目的が違うから持ってない気がするでゲソ。

2013-12-23 18:53:44
イカ娘 @came_tongue_000

つまり、ある意味、Schemeだと関数型言語の方面なんかより、OOPとして「拡張して」マクロに頼らずプログラム組む、ってのが本質的な使い方のような気がするんでゲソが、気がするだけなんで気にせんでイイでゲソ(謎

2013-12-23 18:54:53
イカ娘 @came_tongue_000

全部メッセージパッシングでなんて書いてられっか、でゲソ(謎

2013-12-23 18:55:22
イカ娘 @came_tongue_000

ちなみに、いまだスッキリせんのが、例えば実用Common LispでPeter Norvigが見せたような「オブジェクト指向の単純な実装」とかSICPのデータ駆動型プログラミングとか、ラムダ式使って「スタイル的に」OOP説明するのはまあいいわけでゲソよ。

2013-12-23 18:59:21
イカ娘 @came_tongue_000

なるほど、動くね!各データはラムダ式に隠蔽されてるね!と、まあ現象的には分かるわけでゲソね。

2013-12-23 19:00:00
イカ娘 @came_tongue_000

ただ、これは現象的な「動く/動かない」の話であって、メッセージパッシングとかアクター理論とか、Schemeで言うと末端引数への情報受け渡しと一体「理論的にどう絡んでくるのか」ってのがサッパリ分からんのでゲソね。

2013-12-23 19:01:12
イカ娘 @came_tongue_000

そもそもcall/ccの元になってるのが、「継続受け渡し」ってプログラミング技法で、これが元々OOPの理論の「メッセージパッシング」と同じモノなんだ、はぁ、ってなぁイイんでゲソが、あの「現象的な」OOPの単純実装とあんま繋がってないんでシックリ来ないんでゲソ。

2013-12-23 19:02:42
イカ娘 @came_tongue_000

何かその辺、理論とかあるんでゲソかね。OOPって言うと「デフォルト定義」(笑)な「クラスがあって、データ隠蔽して、メソッドも持ってる」が跋扈してて、理論的な面がイマイチやっぱ把握出来てないんでゲソよねぇ。

2013-12-23 19:04:01
イカ娘 @came_tongue_000

単純な話、継続受け渡しだけでプログラミングすればそれはオブジェクト指向なんでゲソか。いや、んなわけねぇ筈でゲソよねぇ。

2013-12-23 19:06:10
イカ娘 @came_tongue_000

そもそもんなのメリット無しでゲソしねぇ。

2013-12-23 19:06:28
Masanori Ogino @omasanori

@cametan_001 だって実用OOPL界隈、「意味論?型理論?そんなことよりアルゴリズムだ、実装だ」な人多いですし(偏見)

2013-12-23 19:11:59
イカ娘 @came_tongue_000

@omasanori まあ多いかどうかはさておき、アクター理論ってのに比べると実装で実際出来たC++はじめとして、多分Smalltalk以外は理論的に突き詰めて作ってみた、っつーより「何となく(概念じゃなくって)アイディア実装出来ちゃいました」ってカンジでゲソよねぇ。

2013-12-23 19:13:55
イカ娘 @came_tongue_000

現実のOOP言語とかは、そうなんでゲソよねぇ。理論的な共通理解がある、っつーより「こんなもんだろ」実装で要するに本当の意味でのコンセンサスとかまるで無いんでゲソよね。だからユーザー側で「あれはOOPとは言えない」とか文句が出たりするわけでゲソ。

2013-12-23 19:18:14
イカ娘 @came_tongue_000

Pythonのデコレータって何のことやら、から随分と遠いトコに来てるでゲソ(謎

2013-12-23 19:22:23
イカ娘 @came_tongue_000

そもそも「特殊メソッド」ってのがある辺りがPythonが嫌だな、とか思う原因だったりするんでゲソよねぇ。心が狭いんでゲソか(謎

2013-12-23 19:23:17
イカ娘 @came_tongue_000

__call__とか嫌じゃなイカ?(謎

2013-12-23 19:23:57
Masanori Ogino @omasanori

@cametan_001 この話には複数の話題があって、それぞれをどう表現したらいいか考えていましたが、なんとなく固まってきたので書いておきます。ただ、私の意見や解釈が含まれますし、間違いも含まれているでしょうし、長いです。いつもそうですけれど。

2013-12-23 20:17:19