トピック
ちゃむ tyamusan

サブルーチンって何ですか?

今までなんとなくGOSUBを使ってきましたが サブルーチンとは何かを知りたいです
3そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
"メイン"ルーチンに対しての"サブ"ルーチンですね。 メイン:主な処理をするところ サブ:補助的な処理するところ というくらいの意味あいですが、深い意味はありません。 プログラムテクニックとしては、意味的にまとまった処理 「変数を初期化する」 「タイトルを表示する」 「Aボタンが押されるのを待つ」 「自機を動かす」 「敵を動かす」 「弾を動かす」 「ハイスコアを保存する」 を、メインから呼び出す形にするのが良い形。 あと、メインサブの主従関係でなく、相補的な「コルーチン」という概念もあります。ほぼ死語
2そうだね
プレイ済み
返信[2]
親投稿
れい rei-nntnd
使えるならそれで充分だと思うけど。 それでも知りたいならなるべく厳密に。 一般には(広義には)サブルーチンとは「命令(手続き)をまとめたもので、他から呼ばれることを想定したもの」のことを指す。 便利なので大抵のプログラミング言語ではサブルーチンを作るための機能を持ってるけど、なくてもサブルーチン自体は作れる。 プチコンではサブルーチン作成用の機能として DEFで定義される「関数」と、GOSUB/RETURNで制御される「(狭義の)サブルーチン」の2種類がある。 GOSUB/RETURNの特徴は ・個別のスコープがない(変数などが呼び出し元と共有される) ・値を返せない ・開始場所はラベルで支持する。 ・終了場所はRETURNだが、どこにいくつあってもいい。 最後の特徴のせいで(広義の)サブルーチンの条件を満たさない使い方もできちゃうので、サブルーチンの機能としては貧弱。
1そうだね
プレイ済み
返信[3]
親投稿
れい rei-nntnd
コルーチンは死語じゃないし相補的なものでもない。 coroutineのcoはcooperativeのcoで、相補ではなく共同の意。 コルーチンはサブルーチンの実装の一形態で、途中で実行を一時中断し、のちに開始できるような実装のこと。 昔はあまり馴染みなかったけど、CPUが並列動作可能になったりして最近のほうがメジャー。 一部では言語レベルでサポートされてる。 C#のyieldとかね。
2そうだね
プレイ済み
返信[4]
親投稿
MIKI ifconfig
マジカ!! 初出は 1967 だっけ? 約半世紀かけて浮上したんだ!?!? オブジェクト(class)の概念もアレが初出だよね!??
0そうだね
プレイ済み
返信[5]
親投稿
れい rei-nntnd
マジもマジだよ でも常に一定の需要はあったと思うよ。 日本で言葉が普及してなかっただけ。 win32APIだってgnuにだってコルーチンたくさんある。 体感速度を向上するためにandroidやiphoneでもたくさん使われてる。 初出はACMで1963。かの有名なConway。 classやobjectは…微妙。 objectが先でclassが後なのは間違いないけど、 1960あたりでみんなが気づいたので。
1そうだね
プレイ済み
返信[6]
親投稿
ΖΕΧ ZEX256
コルーチンってFreeRTOSくらいしか使ってないと思ってた
0そうだね
プレイ済み
返信[7]
親投稿
ちゃむ tyamusan
皆様回答ありがとうございます 他の方のプログラムを見て GOSUBのヘルプを見てみると  サブルーチンが何やら書いてあったので気になっていました 教えて下さり ありがとうございました
0そうだね
プレイ済み
返信[8]
親投稿
ちゃむ tyamusan
追記 他の方のプログラムを見て よく使われていたので ということです
0そうだね
プレイ済み