上手く伝わる自信がないんだけど、
呼び出しって言葉にはどういう意味があるの?
例えば、手続き実行とは言わずになんで呼び出しなの?
メソッドは実行?
実行時にメモリ空間上に常駐させるから呼び出し?
なんか概念の話ではなく、言語仕様の話なの?
Javaだとメソッド呼び出しじゃあないよね?
ずっと疑問なんだ。
助けて。
探検
手続き「呼び出し」ってどういう意味?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2021/05/20(木) 15:40:57.78ID:kdHhkFdS2021/05/20(木) 15:41:45.71ID:46+G9eEq
callやろ
3デフォルトの名無しさん
2021/05/20(木) 15:48:00.57ID:92Zuh7PO4デフォルトの名無しさん
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の関係性を含んでる
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等)は呼び出しとは言わないしね
そもそもサブルーチンが何なのかの話もあるかも知れないが
サブルーチンとはいわゆる一つの関数の事なのだが
当然だがそれらの関数の処理は実際には今現在処理しているアドレスとは別の場所(アドレス)に並んでいる
そのサブルーチンを呼ぶ際に普通にジャンプするとサブルーチンを終了したときに元の場所に戻れない
なのでサブルーチンを呼んだ後にその次のアドレスに戻れるようにその情報(復帰するアドレス)をスタックに格納する
(アセンブラではjsrやcallみたいな命令になっている。実態は復帰アドレスをスタックにpushしてサブルーチンにジャンプする命令)
サブルーチン側では処理が終わればそのスタックに格納されているアドレスを取り出しジャンプする
(アセンブラではretやrtsみたいな命令だったりする。実態はスタックからpullしてそのアドレスにジャンプする命令)
だから、クラスのメソッドや単なる関数は実態はサブルーチンを利用することになるが
日本語だとサブルーチンを呼ぶみたいな言い方されているので呼び出しで特に問題は無いと思う
サブルーチンに飛ぶという風に言っても意味としては通用するが
サブルーチンというものが処理が終われば戻ってくるものなので
呼び出しの方がニュアンスとしては的確な気がする
単なる条件、無条件ジャンプ(Cだとif elseやgoto等)は呼び出しとは言わないしね
2021/05/20(木) 19:56:57.21ID:/JYGZP1E
>>12
メモリ空間とかの話じゃなくてもcallは使う
プログミング言語のパラダイムのような概念的な話でも、例えば "call by need" のように、callという語は使われる
その疑問やアイディアが生まれた根拠がわからないから全然共感できない
何がどう疑問なのかがさっぱりわからない
どういうアイディアやイメージがあってわざわざそのような使い分け方をしようと思ったの?
メモリ空間とかの話じゃなくてもcallは使う
プログミング言語のパラダイムのような概念的な話でも、例えば "call by need" のように、callという語は使われる
その疑問やアイディアが生まれた根拠がわからないから全然共感できない
何がどう疑問なのかがさっぱりわからない
どういうアイディアやイメージがあってわざわざそのような使い分け方をしようと思ったの?
2021/05/20(木) 20:32:47.28ID:MNzWSTCi
ちなみにOracleの公式マニュアルでは
「メソッドをコールする」
と書いてあるな
Oracleの公式とその辺の教科書とかでは用語が違うことに注意
例えばOracle公式では「拡張for文」という言い回しは使わずに
「foreach文」という言い方を一貫して使っている
「メソッドをコールする」
と書いてあるな
Oracleの公式とその辺の教科書とかでは用語が違うことに注意
例えばOracle公式では「拡張for文」という言い回しは使わずに
「foreach文」という言い方を一貫して使っている
2021/05/20(木) 21:02:58.23ID:XFBfV2CC
日本語の直訳なだけで、意味はあってる
19デフォルトの名無しさん
2021/05/20(木) 22:30:00.36ID:92Zuh7PO20デフォルトの名無しさん
2021/05/20(木) 22:37:00.82ID:92Zuh7PO >>16
自分はちゃんと説明出来てないですし、違和感でモヤモヤしてて、ちょっとその原因について助言を貰いに来ました!たぶん、イライラさせてすみません!
アセンブラとかのcallがもとで、呼び出しと言っているなら、手続き呼び出しは理解出来るし、プログラムが動く仕組みをするときにメソッド呼び出しと言うのも理解出来ます!これは、アセンブラのcallと同じだからです。
ただ、オブジェクト指向のモデルについて説明する時にも、メソッド呼び出しって言っていますが、メッセージを送って、受け取ったら対応するメソッドを実行するって言うのは語源のcallでいう呼び出しとは全然違うじゃんと思うのです!
自分はちゃんと説明出来てないですし、違和感でモヤモヤしてて、ちょっとその原因について助言を貰いに来ました!たぶん、イライラさせてすみません!
アセンブラとかのcallがもとで、呼び出しと言っているなら、手続き呼び出しは理解出来るし、プログラムが動く仕組みをするときにメソッド呼び出しと言うのも理解出来ます!これは、アセンブラのcallと同じだからです。
ただ、オブジェクト指向のモデルについて説明する時にも、メソッド呼び出しって言っていますが、メッセージを送って、受け取ったら対応するメソッドを実行するって言うのは語源のcallでいう呼び出しとは全然違うじゃんと思うのです!
21デフォルトの名無しさん
2021/05/20(木) 22:39:38.40ID:92Zuh7PO 訳がどうというのは、
英語でcallって言うからには、そのように言う意味があるわけで、そのもともとの意味と、メソッドを実行するというのは違うんじゃないかなって言うのが自分の悩みです!
英語でcallって言うからには、そのように言う意味があるわけで、そのもともとの意味と、メソッドを実行するというのは違うんじゃないかなって言うのが自分の悩みです!
2021/05/20(木) 22:54:59.44ID:yxa1m0L9
言語化できないのは仕方がないとして
「オブジェクト指向のモデルの話をするときに、メソッド呼び出しと言うのが理解出来ない」と実際に感じた実例を2~3あげたら?
このサイトのこの説明を読んで・・・とかさ
「オブジェクト指向のモデルの話をするときに、メソッド呼び出しと言うのが理解出来ない」と実際に感じた実例を2~3あげたら?
このサイトのこの説明を読んで・・・とかさ
2021/05/21(金) 10:03:41.31ID:QhlqoCTd
>>19
そもそもObject指向の方が後から生まれたものだからさ
そんなこと言ったら上で書かれていたJsrのニーモニックなんてJump SubRoutineの略だぞ?
後からスタックエリアから呼び出しアドレス末尾+1で戻るにも関わらず、だ
「厳密にはこう言った方が正しいけど余計なこと言い出すとみんな混乱すんじゃね?」みたいなときは
そんな感じになることが多いのさ
そもそもObject指向の方が後から生まれたものだからさ
そんなこと言ったら上で書かれていたJsrのニーモニックなんてJump SubRoutineの略だぞ?
後からスタックエリアから呼び出しアドレス末尾+1で戻るにも関わらず、だ
「厳密にはこう言った方が正しいけど余計なこと言い出すとみんな混乱すんじゃね?」みたいなときは
そんな感じになることが多いのさ
2021/05/21(金) 12:51:44.58ID:J3ITD3+f
メッセージ送信の方がメソッド呼び出しよりも広い意味をもつ
メソッド呼び出しはメッセージパッシングの実装の一形態でしかない
例えばRPC(遠隔手続き呼び出し)やRMI(遠隔メソッド呼び出し)もメッセージパッシングの一形態でしかない
だから、特定の言語についてではなくoop全般について話すような文脈では、メソッド呼び出しと言うよりもメッセージ送信と言うほうが正確
実際 smalltalk や objective c ではメッセージ送信とは言うがメソッド呼び出しとはあまり言わない
って感じの主張がしたいんだろうか
メソッド呼び出しはメッセージパッシングの実装の一形態でしかない
例えばRPC(遠隔手続き呼び出し)やRMI(遠隔メソッド呼び出し)もメッセージパッシングの一形態でしかない
だから、特定の言語についてではなくoop全般について話すような文脈では、メソッド呼び出しと言うよりもメッセージ送信と言うほうが正確
実際 smalltalk や objective c ではメッセージ送信とは言うがメソッド呼び出しとはあまり言わない
って感じの主張がしたいんだろうか
2021/05/21(金) 12:53:39.78ID:Un7Xn0rW
メソッドとかを実行する主体(cpu,pc)と、pcとかが実行する内容(メソッド、関数、手続き)を分けて考えればいい。
CPUがメソッドを実行するときは、CPUの手元にはメソッドの詳しい内容が無いから、CPUはまずメソッドの内容を呼び出して手元に持ってきてから実行する。
実際にはCPUはメソッドの書かれているアドレスに読みに行くんだけど、CPUを主体に考えればcall(手元に持ってくる)になる。
まあ、オブジェクト指向はこのあたりごちゃごちゃだよな。
CPUがメソッドを実行するときは、CPUの手元にはメソッドの詳しい内容が無いから、CPUはまずメソッドの内容を呼び出して手元に持ってきてから実行する。
実際にはCPUはメソッドの書かれているアドレスに読みに行くんだけど、CPUを主体に考えればcall(手元に持ってくる)になる。
まあ、オブジェクト指向はこのあたりごちゃごちゃだよな。
2021/05/21(金) 14:55:54.93ID:HEzO3EYM
>>1
頼むからそういう話はマ板でやってくれ
頼むからそういう話はマ板でやってくれ
2021/05/21(金) 15:12:49.83ID:IHGXJo1X
実装レベルではなくオブジェクト指向分析時などの概念レベルでは
メッセージ呼び出しではなくメッセージパッシングとして捉えるほうが適切だと思うって主張したいんでしょ
わからなくはないけど
OOP言語の場合はSmalltalkやObjective-Cを含めて実体はメソッド呼び出しなので
他人がメソッド呼び出しと呼ぶのにいちゃもんつけても意味ない
メッセージ呼び出しではなくメッセージパッシングとして捉えるほうが適切だと思うって主張したいんでしょ
わからなくはないけど
OOP言語の場合はSmalltalkやObjective-Cを含めて実体はメソッド呼び出しなので
他人がメソッド呼び出しと呼ぶのにいちゃもんつけても意味ない
2021/05/21(金) 15:54:00.04ID:xNO9nRMY
単なる関数だと、戻るアドレスと引数をスタックにpushするけど
クラスだったらそれにクラスのインスタンスもpushするだけぐらいなもんだしなぁ
実態はメソッドだろうが関数だろうがサブルーチンで呼んで終わったら
呼んだ次の行の実行をするのは同じだしね
クラスだったらそれにクラスのインスタンスもpushするだけぐらいなもんだしなぁ
実態はメソッドだろうが関数だろうがサブルーチンで呼んで終わったら
呼んだ次の行の実行をするのは同じだしね
2021/05/21(金) 21:56:21.67ID:KKZ6UG4J
抽象データ型とメッセージ・パッシングー2つのオブジェクト指向
https://togetter.com/li/1477056
https://togetter.com/li/1477056
2021/05/21(金) 22:06:34.06ID:lBWNuKf5
>>1
あなたはX=X+1(数式としてはナンセンスな表現)でずっと悩んでいるべきだw
あなたはX=X+1(数式としてはナンセンスな表現)でずっと悩んでいるべきだw
2021/05/22(土) 06:34:55.87ID:Fxu4ZmVZ
>>21
関数ポインタとかで悩みそうね
関数ポインタとかで悩みそうね
2021/05/24(月) 08:08:08.88ID:Jnh461kb
引用符は`もあるのになぜ'しか使わないのか
ch='A'じゃなくてch=`A'のほうが正しいんじゃない
ch='A'じゃなくてch=`A'のほうが正しいんじゃない
2021/05/24(月) 09:48:15.87ID:ZzLA6YH5
正しくはということなら
`はアクセント符号であって左シングルクォートでは無いし
'はかつてアポストロフィであったものであって右シングルクォートでは無い
クォート記号として使われるのは代用でしかない
`はアクセント符号であって左シングルクォートでは無いし
'はかつてアポストロフィであったものであって右シングルクォートでは無い
クォート記号として使われるのは代用でしかない
2021/05/26(水) 14:46:44.96ID:DBCz7Yq/
概念やモデルを語る文脈では「メッセージパッシング」という用語を用いる方が適切で、実装・実現方法を表す「呼び出し」という用語を用いるのは違和感があるという主張でしょ。
違和感はわかるし、主張内容にも(どこまで徹底するかはともかくとして)一定の共感はできるよ。
ただ、厳密に適切かはさておき、「呼び出し」という語も慣用的に受け入れられているわけだし、それを潔癖に排除するまでの必要は、少なくとも現時点ではないかなと思う。
1と同じ感覚で用語法に拘る人が増えてくれば情勢は変わるのかもしれないけれど、そもそもオブジェクト指向的なモデルにそこまで拘る必要があるかというのも一つの問題。「(モデルとしてはメッセージパッシングかもしれないけれど、)実際には呼び出しなんだから呼び出しでいいじゃないか」という感覚は根強いだろうし、それをバッサリ切り捨てるのもどうかと思うな。
違和感はわかるし、主張内容にも(どこまで徹底するかはともかくとして)一定の共感はできるよ。
ただ、厳密に適切かはさておき、「呼び出し」という語も慣用的に受け入れられているわけだし、それを潔癖に排除するまでの必要は、少なくとも現時点ではないかなと思う。
1と同じ感覚で用語法に拘る人が増えてくれば情勢は変わるのかもしれないけれど、そもそもオブジェクト指向的なモデルにそこまで拘る必要があるかというのも一つの問題。「(モデルとしてはメッセージパッシングかもしれないけれど、)実際には呼び出しなんだから呼び出しでいいじゃないか」という感覚は根強いだろうし、それをバッサリ切り捨てるのもどうかと思うな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★7 [ぐれ★]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 小林よしのり「高市早苗はネトウヨに媚びる女」 [616817505]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
- 【ネトウヨ朗報】イギリスのトラス元首相、高市有事で高市早苗の支持を表明 [603416639]
