手続き「呼び出し」ってどういう意味?

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/05/20(木) 15:40:57.78ID:kdHhkFdS
上手く伝わる自信がないんだけど、
呼び出しって言葉にはどういう意味があるの?
例えば、手続き実行とは言わずになんで呼び出しなの?
メソッドは実行?

実行時にメモリ空間上に常駐させるから呼び出し?
なんか概念の話ではなく、言語仕様の話なの?
Javaだとメソッド呼び出しじゃあないよね?

ずっと疑問なんだ。
助けて。
2021/05/26(水) 15:23:58.27ID:8NIluYSN
>>34
subjectがobjectを呼び出すんだから「呼び出し」で問題無い。

まあ、そういう解釈は主流じゃないけどな。
2021/05/26(水) 18:10:58.25ID:VFoFD49u
go homeとcome homeみたいに視点の置き方ひとつでどうにでもなる感じ
2021/05/26(水) 18:32:49.58ID:rgCCVIaL
>>34
呼び出しは実装・実現方法に限られた用語じゃないと思うけどな
2021/05/26(水) 22:48:02.19ID:lzHVbuEY
>>37
1はオブジェクト指向のモデリングを前提としているみたいだから、それとの関係ではでは「呼び出し」は実装・実現方法の方に属する概念じゃない?
そもそもオブジェクト指向でモデリングする必要があるのか自体が問題だけど。
2021/05/26(水) 23:43:42.78ID:rgCCVIaL
「ファイル新規作成メッセージ」を送る
「ファイル新規作成機能」を呼び出す

前者が概念レベルで後者が実装レベル?
視点の違いであって抽象度の違いではないような
2021/05/27(木) 00:07:47.62ID:ru1l+Gvl
「呼び出し」をそこまで抽象的に捉えるなら、たしかに視点の違いに過ぎないとも言いうるけれど、その場合、オブジェクト指向のメッセージパッシングのモデリングと適合的に考えるのであれば、呼ばれるものはオブジェクトであるべきであって、メソッドが直接呼ばれるというのは違和感がある……というのが1が言いたいことなんじゃないかと(かなり推測だけど)。

あと、「呼び出し」という語は、やはり>>15みたいな具体的なイメージを伴って用いられることの方が多いのではないかとも思う。
41デフォルトの名無しさん
垢版 |
2021/05/27(木) 10:30:46.58ID:FO5QR3ui
呼び出しはcallを語源としているというのが前提としていて、
callの仕組みを抽象化すれば、例えばjavaの言語レベルの話をするさいには、
メソッド呼び出しという言い方は理解できる。

オブジェクト指向のモデルの話をするときには、
callの仕組みとは本質的に違うのだからメソッド呼び出しという言葉は適切ではないのではないか?

ということが言いたかったのです!
呼び出しという言葉が、実装レベルに限らない、抽象度の問題ではないというのは理解していますが、何を語源にするかという前提にたてば、メソッド呼び出しという用語の使い方は言語の仕組みレベルのときにのみ使うべきという主張です。
もちろん、callとは本質的に違うメソッド実行の実現が言語でされている場合には、その言語について話すさいにメソッド呼び出しという言葉は不適切だと思います!
42デフォルトの名無しさん
垢版 |
2021/05/27(木) 10:35:39.43ID:2WTxyTqA
手続きはプロシージャで
値を返すプロシージャをファンクションプロシージャ、略してファンクションと言います
レシーバオブジェクトを介して実行されるプロシージャをメソッドプロシージャ、略してメソッドと言います
そのように考えるとメソッドも手続きの一種でしかないわけですね
43デフォルトの名無しさん
垢版 |
2021/05/27(木) 10:46:13.12ID:2WTxyTqA
手続きという概念の中に
ファンクションもメソッドも内包されるから呼び出しでもかまわない
メソッドの呼び出しはある特定の条件下でメッセージングとも呼ばれる
と、いうことだと僕は思いました
2021/05/27(木) 11:17:21.37ID:kul3rGaF
>>41
呼び出しは英語のcallの訳語というだけで
CALL文やCALL命令のような実装を前提とはしていない
語源を考えるならCALL文やCALL命令に
なぜcallという単語があてられたのかを考えて

>callの仕組みとは本質的に違う
何が違うと思ってるの?
45デフォルトの名無しさん
垢版 |
2021/05/27(木) 11:28:50.63ID:FO5QR3ui
>>44
前提から違っていたんですね。

オブジェクト指向では、メッセージの授受とこれに対応する処理で、制御がうつっているわけではないので違うと考えていました。
2021/05/27(木) 12:02:30.94ID:xtcmqae0
オブジェクトひとつひとつがスレッドだと思ってるのか
47デフォルトの名無しさん
垢版 |
2021/05/27(木) 12:06:54.98ID:FO5QR3ui
>>46
言語の実現上では違いますが、

オブジェクト指向のモデルの上では、それぞれ待機状態にあって、メッセージを受けたらこれに対応する処理を行なうのではないんですか?
2021/05/27(木) 12:15:14.91ID:o74jQiO4
>>41
Object指向のObjectを、主体客体(subject-object)のObjectとして捉えれば適切だろ。

プログラミングが「主体がソースコードを解釈して実行する」という枠組みになっている以上、主体を無視して解釈しようとすることのほうが適切じゃない。
49デフォルトの名無しさん
垢版 |
2021/05/27(木) 13:03:38.02ID:rDD7tIjX
>>48
理解できます。
ソースコードを…と言っているように、オブジェクト指向の話でも、どのレベルの話をしているのか、によってメソッド呼び出しというかメッセージ通信というか分けるべきでは?という主張です。
2021/05/27(木) 13:35:55.56ID:kul3rGaF
>>47
>オブジェクト指向のモデルの上では、それぞれ待機状態にあって、メッセージを受けたらこれに対応する処理を行なうのではないんですか?

オブジェクト指向といった場合には一般的にそういう前提ではないね

メッセージパッシングとオブジェクト指向を混同してるように見える
メッセージパッシング自体はオブジェクト指向だけに使われる用語ではないから
オブジェクト指向の文脈でどういう意味なのかを理解したらいいと思う
51デフォルトの名無しさん
垢版 |
2021/05/27(木) 13:55:50.32ID:rDD7tIjX
>>50
メッセージパッシングがオブジェクト指向でのみ使われる用語ではないことはわかるのですが、オブジェクト指向がメッセージパッシングを前提としていると誤って理解をしていました。

オブジェクト指向から間違って理解していました。
お騒がせしてしまい、ごめんなさい。
52デフォルトの名無しさん
垢版 |
2021/05/29(土) 20:18:01.13ID:kfieFN1v
オブジェクト指向設計ならオブジェクトそのものが呼び出しだろう(
53デフォルトの名無しさん
垢版 |
2021/05/29(土) 20:18:11.34ID:kfieFN1v
オブジェクト指向設計ならオブジェクトそのものが呼び出しだろうに
54デフォルトの名無しさん
垢版 |
2021/05/30(日) 10:23:48.70ID:ssDmNHo+
オブジェクト指向の入門書でメッセージパッシングを強調し過ぎるのは
入門者にあらぬ誤解を抱かせる悪点だと思う

原理主義みたいなもん
smalltalkを否定する訳ではない
2021/05/30(日) 14:44:51.91ID:DbVDrryp
メッセージパッシングも関数呼び出しも
抽象化して考えれば、どっちも同じことだろ
2021/05/31(月) 00:54:05.32ID:vbcL3D/k
オブジェクト指向と言う言葉でアクターモデルをイメージしていたら
手続き呼び出しとは言いにくいわな
57デフォルトの名無しさん
垢版 |
2021/05/31(月) 10:46:11.68ID:AP3os+rN
アクターモデルはオブジェクト指向の一形態でしかないから
オブジェクト指向を矮小化するクソですわ、アラン・ケイはクソですわ
2021/05/31(月) 12:43:40.97ID:wHUeJvTE
>>56
なんで?
機能の担当者は呼び出すものだろ。
2021/05/31(月) 13:55:35.23ID:vbcL3D/k
>>58
理念的には、アクターは自前の計算資源を持ち、個々が非同期に動作するものだから、
それが担当する機能(の一つ)の実行を依頼することに対して、
「手続き呼び出し」と言う歴史的な意味のついた言葉を使うのは違う感じがしない?
60デフォルトの名無しさん
垢版 |
2021/05/31(月) 14:07:10.12ID:AP3os+rN
呼び出しは同期を意味しないからなあ
61デフォルトの名無しさん
垢版 |
2021/05/31(月) 14:07:35.89ID:AP3os+rN
アクターがなにか処理をするなら手続きだし
62デフォルトの名無しさん
垢版 |
2021/05/31(月) 14:08:37.47ID:AP3os+rN
アクターはオブジェクトの一つでしかないので特別視する必要もない
63デフォルトの名無しさん
垢版 |
2021/05/31(月) 14:16:32.19ID:AP3os+rN
全部アラン・ケイが悪いんですわ、あとアラン・ケイ信者がクソ
2021/05/31(月) 21:33:21.44ID:nK3+fI7q
関数を利用することが手続きを呼び出すことだろ
違うの?
callback関数とか定義を決めて
説明するのは面倒だけど
2021/06/01(火) 08:33:05.90ID:F8uhV1ao
>>59
なんか違和感があるんだけど
オブジェクトが他人だったら「呼びだし」でいいんじゃない?
自分で実行するなら呼びだしとは言わないじゃない
歴史的経緯があるから変更しろ!というどっかのヒステリー国みたいw
2021/06/01(火) 08:58:20.03ID:myvfkNHR
アクター界隈ではアクターの機能を呼び出すことを、アクターの独立性に鑑み
メッセージパッシングとわざわざ呼び、プロシジャーコールとは区別しているのだから
アクター的な計算モデルが念頭にあればプロシジャーコールに違和感があるのは無理のないことだと思うけどなあ。

>オブジェクトが他人だったら「呼びだし」でいいんじゃない?
>自分で実行するなら呼びだしとは言わないじゃない
と言うのは申し訳ないが自分には何を言われているのか判然としないな。

>歴史的経緯があるから変更しろ!!というどっかのヒステリー国みたいw
に関しては誰がこんなことを書いているのか???????って感じ。
アクターっぽいものをイメージしている時、プロシジャーコールという言葉に
違和感感じるのは自分的には理解できるって話だよ?
懐かしい言い回しで言うなら「妄想乙」
67デフォルトの名無しさん
垢版 |
2021/06/01(火) 09:10:00.38ID:Lmdhl1K7
アクターをオブジェクトの一つでしかない
わざわざ言い分ける必要なんてない
アラン・ケイとその信者がクソなだけ
68デフォルトの名無しさん
垢版 |
2021/06/01(火) 09:17:01.70ID:Lmdhl1K7
オブジェクト指向はSimulaで発明された
それで実現できる一形態であるアクターに焦点をあて
オブジェクト指向を矮小化したのがアラン・ケイというクソ野郎
C++のビヤーネはそれを修正した
2021/06/01(火) 11:58:30.93ID:uwqmKkHK
>>65
他人の郵便受けに伝言を入れておくことを「呼び出し」とは言わないでしょ

召喚命令を入れてくることを呼び出しと言うことはあるかもしれないが
それはメッセージの中身の話で受け渡しする仕組みの話じゃない
2021/06/01(火) 12:38:45.23ID:Sn0WkXvt
>>69
キューとかのある非同期メッセージだけの話だな。

ほとんどのメソッド実行は同期だから、「呼び出し」使っても問題ないな。
71デフォルトの名無しさん
垢版 |
2021/06/01(火) 12:48:05.01ID:Lmdhl1K7
キューに入れる処理を呼び出してるわけだろ
非同期に処理が実行されるのなら非同期の呼び出しだよ
72デフォルトの名無しさん
垢版 |
2021/06/01(火) 12:51:49.76ID:Lmdhl1K7
プログラムの処理は郵便受けにお手紙入れるのとは全く違うからな
これをこうしろっていう指令を出してるわけで、callつまり呼び出しなわけ
2021/06/01(火) 13:44:31.60ID:uwqmKkHK
>>70
アクターモデルの話をしてるんじゃなかったのか?

メソッド呼び出しは同期だろうが非同期だろうが「呼び出し」と言っても別に違和感はない
キューの有無や同期/非同期は関係ないぞ
74デフォルトの名無しさん
垢版 |
2021/06/01(火) 15:03:57.60ID:Lmdhl1K7
何が言いたいんだよカス
2021/06/01(火) 16:09:40.54ID:3mehbzQU
>>73
アクターモデル使ったことがないからイメージできないのかもよ
2021/06/01(火) 18:23:48.62ID:2Y9mkBUH
callかexecuteかってことで
引数用意して関数呼び出して
なんらかのreturnをもらう
2021/06/01(火) 19:58:27.20ID:2Y9mkBUH
SQL.execute
のような文でも呼び出してる
SQLオブジェクトがexecuteしてる
78デフォルトの名無しさん
垢版 |
2021/06/01(火) 21:19:37.61ID:efqhq7n9
コンピューターとしてはCPU内のデータの移動、データの入れ替えだけど、アメリカ人がコールと呼んだから、呼び出しになっているだけ。
2021/06/02(水) 12:29:44.79ID:DADYKp1n
callは要求とか命令みたいな意味もあるし他者(外部)の存在が意識される
executeは自分で実行するイメージが強いからsystem callはいいけどsystem executionだと違和感がある
混乱が生じてるなら「呼び出し」がcallの訳語として不適切なんだろう
2021/06/02(水) 20:13:19.93ID:Oa9Zr9hk
>>69
伝言じゃなくて必ず実行されないといけない命令文でしょ
いわば裁判所の召喚状に近い
2021/06/02(水) 20:27:42.23ID:PfB9ScmQ
>>80
全然違う
アクターモデル知らんのならググるくらいしろよ
2021/06/02(水) 20:38:36.79ID:RfLE0/Hl
>>80
命令文は違うな
あくまでmessageをpostしてるだけ
関数を呼び出すのとしくみが違う
83デフォルトの名無しさん
垢版 |
2021/06/02(水) 20:52:26.40ID:SnBKv6wO
内部でキューイングしてるだけだろ
やってることは赤紙による強制執行だろうが
84デフォルトの名無しさん
垢版 |
2021/06/02(水) 20:54:00.37ID:SnBKv6wO
WebAPIさえ呼び出しと呼ばれるんだからアクターだろうがなんだろうが
何らかの命令が実行されるなら呼び出しなんだよ
85デフォルトの名無しさん
垢版 |
2021/06/02(水) 20:55:00.97ID:SnBKv6wO
アクターが特別だと思うな、ただのオブジェクトただのメソッドだろうが
メソッドを使わずにアクターを実装できるんけ? あ? そこんとこよろしく!
2021/06/02(水) 21:00:04.49ID:RfLE0/Hl
そうとしか思えないならそう
思ってたらいい
別物とわかってたら便利に利用できるのに
2021/06/02(水) 21:29:43.25ID:eT2sWM4E
>>85
実装できるに決まってるじゃん
ほんとに何も理解してないのな
にもかかわらず謎の上から目線ww
88デフォルトの名無しさん
垢版 |
2021/06/02(水) 21:34:39.23ID:SnBKv6wO
>>87
やってみろよ、おん?
89デフォルトの名無しさん
垢版 |
2021/06/02(水) 21:34:53.43ID:SnBKv6wO
ちなみに言語はJavaな
90デフォルトの名無しさん
垢版 |
2021/06/02(水) 21:35:46.73ID:SnBKv6wO
>>86
同じものだから、別物と思えるのならオブジェクト指向の理解が浅いだけ
91デフォルトの名無しさん
垢版 |
2021/06/03(木) 07:36:37.70ID:xk+QgXES
しつこい
2021/06/03(木) 08:46:43.91ID:ZI8vcUaN
そもそもアクターモデルのプログラム言語て存在したっけ?
2021/06/03(木) 09:56:18.57ID:+ckkiaxk
ggrks
2021/06/03(木) 12:51:32.78ID:ZI8vcUaN
>>92 >>93
Ponyとかクソマイナーな言語しか出てこなかったんだけど、メジャーな言語は存在しないんだな。
2021/06/06(日) 16:55:40.37ID:vQVSsWXH
単発質問でスレ立てる >>1 が悪い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況