• ベストアンサー

モジュールとサブルーチン

モジュールというとソースの中の機能の単位と思っていたのですけれども、共通モジュールとかは一つのプログラムでもモジュールと呼んでいます。プログラムになればサブルーチンだと思うのですが、モジュールとサブルーチンの違いは何ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Traja
  • ベストアンサー率19% (107/546)
回答No.2

使う人や、言語、年代によって差があるでしょうが サブルーチン:サブのルーチンなので、一時的に分岐して処理完了すると元の処理ブロックに戻る モジュール:ある程度の機能を持った処理ブロック。 サブルーチンをサブ関数と呼んだりもしてます。 というか、最近はサブルーチンという単語は使ってません。 そう言った関数群を、共通モジュールと呼称したり。 大体のニアンスで使っています。

konnyaku
質問者

お礼

ちょうど本を開いてみたら、プログラム、モジュール、サブルーチンの説明がありました。【プログラムは一個以上のモジュールから成る。モジュールとはコンパイル、アセンブルする単位のことでサブルーチンと呼ぶこともある。一個のモジュールは一個以上のセグメントから成る。セグメントは小さな一個の仕事をする命令の集合で、一個の入り口と一個の出口からできている。】これから考えると、私がルーチンと思っていたものはセグメントということになります。ルーチンとセグメントの違いは何なのだろうという新しい疑問が生まれました。また、モジュールとサブルーチンにも違いがあるのでしょうか。私がプログラムと思っていたものはモジュールまたはサブルーチン、結合されて一つの処理ができるようになってプログラムということになります。普段プログラムと言っているものはモジュールなのでしょうか。ありがとうございました。

konnyaku
質問者

補足

もう一度Trajaさんの回答を読みますと、私がサブプログラムと思っているものが、サブルーチンということになります。サブルーチンを全体的に見て共通モジュールというのでしょうか。では、サブプログラムとは何なのでしょうかm(__)m

その他の回答 (1)

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

言語によって、考え方が違う場合もあるかも知れませんが。 モジュール サブルーチンを1つまたは複数収めたファイル。通常は、関連するサブルーチンを収めたものだが、小さなサブルーチンをたんさく集めた、共通サブルーチンモジュールなんてのも目にする。 サブルーチン これは説明が難しいですが。ある処理を行うためのかたまり。または、ある処理を行うためのいくつかの機能の内の1つのこと。 こんな感じかな。

konnyaku
質問者

お礼

ありがとうございます。違いは言語によって現れるのでしょうか。今までの経験でモジュールがファイルであるという概念を持ったことはありません。Dpopさんの話ではモジュールの方がサブルーチンより大きいのですね。私の場合、モジュールとルーチンが同じです(?)となるとサブルーチンは何だったのか(-_-;)performで呼んでいるのがサブルーチンだったか。共通モジュールは私の場合はプログラムで共通に使うモジュールでしたが、それは共通ルーチンか(-_-) サブプログラムはプログラムのルーチンから呼ばれるもので…。プログラマから見れば、サブプログラムで、SEから見ればモジュールになるのか…(?)

konnyaku
質問者

補足

ロードモジュールのこと考えるとモジュールはファイルですね。共通サブルーチンモジュールとはモジュールの中の処理で機能的に分けることができる小さなモジュールという感じでしょうか。ありがとうございました m(__)m

関連するQ&A

  • サブルーチン(共通の処理)の作り方

    VB6.0の時までは、標準モジュールやフォームモジュールにサブルーチン(共通の処理)を作って、他のフォームモジュールから呼び出しができるようになっていましたが、VisualBasic2005ではできないのでしょうか?共通のサブルーチンを作成する方法を教えてください。よろしくお願いします。

  • モジュールに依存するサブルーチンの書き方

    サブルーチンがあるモジュール(例えばLPW)に依存する場合、 「すでにモジュールが読みこまれていれば読みこまず、まだ読みこまれていなければ読みこむ」 というような書き方をしたいのですが、モジュールが読みこまれているか否かを判断するにはどうすればよいでしょうか? また、Cの場合、ライブラリの読みこみは、 フラグを立てて、#ifdef, #ifndef で断するのが定跡だと思うのですが、 Perlの場合はそのような定跡はありますか? もしあればこちらも合わせてご教授いただけるとうれしいです。 宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • モジュールとは何ですか

    モジュールとは具体的には何を指しているのか、をお聞きします。 手元のカタカナ語辞典では 「プログラムを、それぞれ特有の機能を持ついくつかの基準単位に分割すること。また、その基準単位。」 と書いてありました。 そうすると、1つ1つのソースファイルを指しているように思えてきます。 いままで私が人がしゃべっているのを聞いてきたところでは、Windowsでいうところの、exeファイルやdllファイルを指しているような気がします。 「モジュール」という言葉は gooの新語辞典にも載っています。 また、コンピュータ用語辞典のようなサイトも見てみました。 それらによると、「ソフトウェア・ハードウェアの部品」だそうです。 しかし、例えば何のことをいっているのかが、分からないのです。 #ファイルなら何でもいいのだろうか。 この言葉の用例を教えていただきたいのです。 ============================ 過去の質問と回答より。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=302590 回答No.1の補足より。 >モジュールはAccessの標準モジュールのことです わたしはAccessのことをほとんど知らないので、ハテナです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=293234 こちらのNo.2の回答では、 dllとは「共通モジュール=ライブラリ」である、 という使い方ですので、例えばdllのことを指しているようです。

  • モジュール内でのサブルーチン呼出し(インボカントの扱い)

    blue-horseと申します。 はじめてお世話になります。 モジュール内でサブルーチンを用意し、これを自身の中でも使用する場合、インボカントの処理をどう扱えば良いのか悩んでいます。 以下例 #-------------------------------------------------------------- sub function_A() {   my ($self, $argA) = @_;   return $argA; }; sub func_B() {   my ($self,$argB) = @_;   my $val_A = &function_A(undef,'100');   return $val_A * $argB; }; #-------------------------------------------------------------- モジュール外からサブルーチンを呼び出す際にインボカントを受け取るために$selfを用意したのですが、モジュール内で呼び出す際にはインボカントが無いので、無理やりundefを放り込んでいます。 動いている分には動いているのですが、まず、おかしな使い方ではないかと思うので、「こうすれば良いよ。」と言った内容がございましたら、ご教示下さい。 以上、失礼いたします。

    • ベストアンサー
    • Perl
  • サブルーチンについて

    下記のようなソースコードを書いたところエラーが出てしまいました。 $sum = $sample2($a); の箇所でエラーが起こっているようなのですが、解決の仕方が分かりません。 &sample1(5,'&sample2'); sub sample1 { ($a,$sample2) = @_; $sum = $sample2($a); print $sum; } sub sample2 { ($a) = @_; $b = 10; $sum = $a + $b; return $sum; } このように、サブルーチンの中に更にサブルーチンを書いて、なおかつそのサブルーチン名を一旦変数に格納して使用する場合はどのようにプログラムを書けば良いのでしょうか?? ""で囲ったりといろいろとしてもダメでした。 もちろん、$sum = $sample2($a); ではなく $sum = sample2($a); のように書けば良いとは思うのですが、一度サブルーチン名を変数に入れてから使用する場合はどのようにすれば良いのでしょうか?? ご回答の程よろしくお願い致します。

    • ベストアンサー
    • CGI
  • UserFormをサブルーチンに出来るか

    頓珍漢な質問かもしれませんが、何分ご了承下さい。 標準モジュールで記述時、UserFormをサブルーチンとして呼び出す事は出来ないですか。 プログラムの途中に、複数項目を入力させたいのです。 InputBoxは一つしか入力させられない様だから、UserFormならと、思ったのですが。 Private付プロシージャは、同じモジュールのプロシージャからしか呼び出せないのでしょうか。 宜しくお願い致します。

  • サブルーチンについて

    サブルーチンについての質問です。 サブルーチンの中で設定した変数が、そのサブルーチンを呼び出す度に初期化されてしまいます。 (例えば初めてサブルーチンを呼び出し、そのサブルーチンを抜ける時にはx=10と記憶されているのに、また次にそのサブルーチンが呼び出される時には、x=0となっている。) これをx=10のまま記憶させておき、引き続きサブルーチンの中でこの値を使う事は不可能なのでしょうか? 乱文で申し訳ありませんが、よろしくお願いいたします。

  • サブルーチンを認識しません。

    perlプログラムで サブルーチンの中で、別のサブルーチンを呼び出していますが、 なぜか認識しません。 KCatchでは以下の表示をしています。 Catch: Mon Sep 22 07:56:36 2003 ------------------------------------------------- [regist.cgi:375:die] Undefined subroutine &main::lock called. > &lock; ------------------------------------------------- regist.cgi with Perl 5.00502 for freebsd サブルーチン名には頭に & を付けて呼び出しています。 サブルーチンは、スクリプトの最後にまとめてあります。 同じサブルーチンは、他のスクリプトでも利用していますが、 エラーは出ていないのですが。 何が原因か、わかりません。 関係ないかもしれませんが、プログラム最初の方でuse strict;の宣言をしています。 他のサブルーチンも認識しません。 KCacthの表示は同じ &main::サブルーチン名 called になっています。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • モジュールのメリット、デメリットについて

    Rubyでいろいろなツールを作っているのですが、共通するプログラムを抜き出して別のファイルにしようとしています。 今までは、xxx.rbに共通するプログラムを集めてrequireで読み込んでいたのですが、 webとか「たのしいRuby」を調べていたらモジュールとかがあるのがわかりました。 それで、モジュールを使って(モジュールにまとめて)みようと思ったのですが、 何か、メリットやデメリットはあるのでしょうか?

    • ベストアンサー
    • Ruby
  • サブルーチンの中にサブルーチンが書ける?

    どこかのサンプルでサブルーチンの中にサブルーチンが書いてあったのですが、 元々Perlではそういう書き方が出来たのでしょうか? Perl4、Perl5、Perl5.6、Perl5.8 どれでも使えるものかどうか知りたいです。

    • ベストアンサー
    • Perl