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

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

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

ずっと疑問なんだ。
助けて。
2021/05/20(木) 15:41:45.71ID:46+G9eEq
callやろ
3デフォルトの名無しさん
垢版 |
2021/05/20(木) 15:48:00.57ID:92Zuh7PO
>>2
すみません、ちょっと自分には意味がわからないので、もう少し教えて欲しいです。
そしたらメソッド呼び出しってよく聞きますけど、
並行オブジェクトにおいては、適切ではないということですか?
4デフォルトの名無しさん
垢版 |
2021/05/20(木) 15:56:35.03ID:92Zuh7PO
すみません、自分の疑問は、
メソッド呼び出しという言葉は適切なのか?です!
2021/05/20(木) 15:59:47.22ID:/JYGZP1E
適切
専門用語なんだから国語辞典的な意味に引っ張られるな
2021/05/20(木) 16:13:31.49ID:SZkXAUOU
他の場所にあるプログラムを実行する様子が、処理を呼び出しているように見えるから...とか?
2021/05/20(木) 17:29:06.19ID:XA+o92qv
メッセージでええやん
8デフォルトの名無しさん
垢版 |
2021/05/20(木) 17:42:34.74ID:92Zuh7PO
callは、別プログラムに制御を移して実行するんですよね?

手続き指向で考えてもこれは矛盾がないので、手続き呼び出しという言葉に違和感はないです。

ただ、オブジェクト指向で言えば、待ち状態になるだけで制御は独立した別物ではないんですか?(もちろん、言語仕様とは別で)

メッセージによるメソッド実行ならいいんですけど、メソッド呼び出しじゃなくね?って言うのが疑問です。
9デフォルトの名無しさん
垢版 |
2021/05/20(木) 17:50:02.74ID:92Zuh7PO
callは、プログラムの話をしてるのに、概念の話とごっちゃにしてしまってますね...

プログラミング言語の話をしている時に、メソッド呼び出しは良いけど、概念の話をしている時にメソッド呼び出しは間違ってると思うんですがどうでしょうか!?
というのが自分の疑問って整理できました!
2021/05/20(木) 17:58:05.90ID:/JYGZP1E
プログラムの話と概念の話をどう分けてるんだ
元から概念の話しかしてないだろ
2021/05/20(木) 18:08:15.32ID:46+G9eEq
英語の話だよ。callは日本語でなんと言う?
12デフォルトの名無しさん
垢版 |
2021/05/20(木) 18:12:56.06ID:92Zuh7PO
???メモリ空間とかどう動くかは概念の話じゃないですよね?なんでそんな怖い口調でいうん...
2021/05/20(木) 18:20:57.01ID:IqiuDW4q
callとinvokeの違い
2021/05/20(木) 18:27:53.40ID:yxa1m0L9
function call
procedure call
method call
みんな同じ

function execution
procedure execution
method execution
これも使うけどニュアンスが微妙に違う
callはcaller/calleeの関係性を含んでる
2021/05/20(木) 19:21:24.45ID:905fVrUH
アセンブラを知らないとサブルーチンコールがどういう仕組みなのか分からないのかも知れないね
そもそもサブルーチンが何なのかの話もあるかも知れないが
サブルーチンとはいわゆる一つの関数の事なのだが
当然だがそれらの関数の処理は実際には今現在処理しているアドレスとは別の場所(アドレス)に並んでいる
そのサブルーチンを呼ぶ際に普通にジャンプするとサブルーチンを終了したときに元の場所に戻れない
なのでサブルーチンを呼んだ後にその次のアドレスに戻れるようにその情報(復帰するアドレス)をスタックに格納する
(アセンブラではjsrやcallみたいな命令になっている。実態は復帰アドレスをスタックにpushしてサブルーチンにジャンプする命令)
サブルーチン側では処理が終わればそのスタックに格納されているアドレスを取り出しジャンプする
(アセンブラではretやrtsみたいな命令だったりする。実態はスタックからpullしてそのアドレスにジャンプする命令)
だから、クラスのメソッドや単なる関数は実態はサブルーチンを利用することになるが
日本語だとサブルーチンを呼ぶみたいな言い方されているので呼び出しで特に問題は無いと思う

サブルーチンに飛ぶという風に言っても意味としては通用するが
サブルーチンというものが処理が終われば戻ってくるものなので
呼び出しの方がニュアンスとしては的確な気がする

単なる条件、無条件ジャンプ(Cだとif elseやgoto等)は呼び出しとは言わないしね
2021/05/20(木) 19:56:57.21ID:/JYGZP1E
>>12
メモリ空間とかの話じゃなくてもcallは使う
プログミング言語のパラダイムのような概念的な話でも、例えば "call by need" のように、callという語は使われる

その疑問やアイディアが生まれた根拠がわからないから全然共感できない
何がどう疑問なのかがさっぱりわからない
どういうアイディアやイメージがあってわざわざそのような使い分け方をしようと思ったの?
2021/05/20(木) 20:32:47.28ID:MNzWSTCi
ちなみにOracleの公式マニュアルでは
「メソッドをコールする」
と書いてあるな
Oracleの公式とその辺の教科書とかでは用語が違うことに注意
例えばOracle公式では「拡張for文」という言い回しは使わずに
「foreach文」という言い方を一貫して使っている
2021/05/20(木) 21:02:58.23ID:XFBfV2CC
日本語の直訳なだけで、意味はあってる
19デフォルトの名無しさん
垢版 |
2021/05/20(木) 22:30:00.36ID:92Zuh7PO
>>15
>>15
アセンブラにおけるサブルーチンコールというのが、呼び出しという日本語のもとなら、Javaとかプログラミング言語の仕組みの話をするときに、メソッド呼び出しというのは理解出来るのですが、オブジェクト指向のモデルの話をするときに、メソッド呼び出しと言うのが理解出来ないです!でも本でも論文でもメソッド呼び出しって言ってるので、メッセージ通信であって呼び出してなくね?って思ってしまうのです!
説明出来てないと思うのですが、この違和感が自分でもまだ整理ついてなくて、助言を貰いに来ました!
20デフォルトの名無しさん
垢版 |
2021/05/20(木) 22:37:00.82ID:92Zuh7PO
>>16
自分はちゃんと説明出来てないですし、違和感でモヤモヤしてて、ちょっとその原因について助言を貰いに来ました!たぶん、イライラさせてすみません!

アセンブラとかのcallがもとで、呼び出しと言っているなら、手続き呼び出しは理解出来るし、プログラムが動く仕組みをするときにメソッド呼び出しと言うのも理解出来ます!これは、アセンブラのcallと同じだからです。
ただ、オブジェクト指向のモデルについて説明する時にも、メソッド呼び出しって言っていますが、メッセージを送って、受け取ったら対応するメソッドを実行するって言うのは語源のcallでいう呼び出しとは全然違うじゃんと思うのです!
21デフォルトの名無しさん
垢版 |
2021/05/20(木) 22:39:38.40ID:92Zuh7PO
訳がどうというのは、
英語でcallって言うからには、そのように言う意味があるわけで、そのもともとの意味と、メソッドを実行するというのは違うんじゃないかなって言うのが自分の悩みです!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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