OOPのmessage
ObjectとObject同士のやりとり
あるObjectが、別のObjectのmethodを呼ぶことを通信に見立ててこう呼ぶ界隈がある
SmalltalkのOOPはmessage指向
https://thom.hateblo.jp/entry/2017/04/02/131951
Object自体を一つのコンピュータと捉えて、メッセージ通信する感じ
https://gyazo.com/a0fcd8160113d0813739e076e2923590
methodを呼ぶことで、インスタンスに対してrequestを送り、
インスタンスはresponseとして返り値を返す
このやり取りを「message」と呼んでいる
RESTとのアナロジーで考えればわかりやすい
get系のmethodならPOSTで、set系のmethodならGET, UPDATEみがある
雑なアナロジーだがmrsekut.icon
自分のobjectに送るものを内部メッセージ、他のobjectへ送るものを外部メッセージと言ったりする
外部メッセージとカプセル化が近しい概念だということも想像できてきた
http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented
上のような解釈で、さらにSmalltalkではこのメッセージは非同期でやり取りできる
だから「メッセージ」だった
その後、同期的なモデルに切り替えたが、用語としては「メッセージ」を使い続けているので誤解生じがち、とのことらしい
https://ubiteku.oinker.me/2016/05/09/what-is-oo-all-about/
関数と(外部)メッセージは、命令と依頼の違い
https://qiita.com/lldev2/items/a1aa26083e48df990b3c
関数は、命令をする
メッセージはobjectに対して処理を依頼する
言っていることはわかるが、これを知ったからといって何の差が出るんだ?
OOのノリがわかるのか。
class設計に多少貢献はしそう
Elixirにも「メッセージ」という概念が出てきた記憶がある
あれは別物なのか、だいたい同じ意味7日 #??
https://blog.noredink.com/post/142689001488/the-most-object-oriented-language
Elixir/Erlangが最もOOである
Io
参考
https://sumim.hatenablog.com/entry/20070310/p1
https://qiita.com/lldev2/items/a1aa26083e48df990b3c
オブジェクト指向とは何だったのか? – ゆびてく
メッセージについて