• ベストアンサー

プログラミングについて。

ダイナミックリンクライブラリは、なぜサブルーチンだけで、構成されるのでしょうか? ご教授いただけないでしょうか?すみません。なぜ、メインルーチンしかないもの、サブルーチンしかないもの、メインルーチンとサブルーチンが存在するものの3つに分かれたりするのでしょうか?これについてもよろしくお願い致します。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5083/13282)
回答No.2

サブルーチンだけで構成されたモノをダイナミックリンクライブラリと呼んでいるので、サブルーチンだけで構成されています。 複数のアプリケーションで共通する処理は一つにまとめた方が効率的に開発ができますし、利用者にとってはアプリケーションが異なっても同じ操作で同じ動作をしてくれる方が使い易くなります。 例えば、ファイルを保存する操作がWordとExcelで全く異なっていたら使いにくいですし、Wordはマウスの左クリックが選択で右クリックが補助メニューだけど、Excelはマウスの左クリックが補助メニューで右クリックが選択だったら操作が混乱します。 なので処理や操作を共通化するために、各アプリケーションは共通のライブラリを使う事で利用者が直感的に使えるようにし、アプリケーションの開発者が毎回同じ処理のプログラムを作らなくていいように共通ライブラリとして提供されます。 現状では、よっぽど単純な練習プログラムでもない限りメインルーチンだけのプログラムなんて存在しないでしょうけど、一連の処理の中で同じ処理を繰り返し使わないのであればメインルーチンだけで処理が完結します。 一連の処理の中に繰り返し同じ処理が出てきたり、繰り返し条件分岐が出てくるのであればメインルーチンとサブルーチンに分ける方が効率的に開発ができますし、コードの可読性やデバッグのし易さなとでも有利になるので、メインルーチンとサブルーチンに分かれていきます。 また、メインルーチン一つで開発すると、複数の人で開発する事が難しくなりますし、Windowsアプリやスマホアプリのようにイベント駆動型のソフトウェアだとメインルーチンは操作を待つだけになるので、必然的に待つだけのメインルーチンと操作に応じて呼び出されるサブルーチンに分かれます。 更に大規模なアプリケーションやOSの開発になると、複数のアプリケーションで共通の処理が出てくるので、それら共通の処理だけを一纏めにして用意すると効率的に開発がでるので、サブルーチンだけが用意されたライブラリが作られるようになります。

その他の回答 (3)

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.4

>WindowsのDLLに限定しなければという事は、限定するとサブルーチンしか持たないという事ですよね? 調べた範囲では、Windowsの場合は単体実行用のメインルーチンを含むDLLを作る方法は見つけられませんでした。DLLにメインルーチンを積極的に含めたいような使い方は考えつかないのでそれでいいと思います。

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.3

>ダイナミックリンクライブラリは、なぜサブルーチンだけで、構成されるのでしょうか? サブルーチンだけで構成されると決まっているわけではありません。 WindowsのDLLに限定しなければ、メインルーチンを持っているダイナミックリンクライブラリを作ることは可能です。 たとえば「Linux 単体実行可能な共有ライブラリ」でネット検索すれば、メインルーチンを持っていて単体実行できる(もちろん共有ライブラリとしても使える).soファイルの作り方が見つかります。必要性が薄いので普通はやりませんが。

zasx1098
質問者

補足

WindowsのDLLに限定しなければという事は、限定するとサブルーチンしか持たないという事ですよね?ご教授いただけないでしょうか?すみません。

  • hahaha8635
  • ベストアンサー率22% (800/3609)
回答No.1

昔は マウスを動かすプログラム や 音楽を表すプログラムを ファイルを読み込むプログラムなど 各社自分で作ってました それらを 統一化したものが DLL であり それらの集合体がOSです それにより 前途共通プログラム開発時間が極端に減り 大規模なプログラムが安価にできるようになりました まあ、マイクロソフトに振り回されるという 二次災害は増えたわけですが

関連するQ&A

  • メインルーチンについて。

    メインルーチンとは何でしょうか?メインルーチン単体で使う事はあるのでしょうか?ご教授下さい。すみませんが。サブルーチンがない場合は、どうなるのでしょうか?ご教授下さい。すみませんが。

  • ポケコンの制御方法などについて教えてください

    ポケコンのメインルーチンとサブルーチンについての質問なんですが… サブルーチンを使用する利点を教えてください なるだけ、短い文章でお願いします

  • ダイナミックリンクライブラリについて。

    ダイナミックリンクライブラリで、共通な処理(サブルーチン)を集めたプログラムです。という回答を頂いたのですが。どういう事でしょうか?ご教授頂けると幸いです。すみませんが。

  • ダイナミックリンクライブラリについて。

    ダイナミックリンクライブラリで、共通な処理(サブルーチン)を集めたプログラムです。という回答を頂いたのですが。どういう事でしょうか?ご教授頂けると幸いです。すみませんが。 結局、そのダイナミックリンクライブラリには、全てのソフトで、共通する処理をその中にまとめて、その中から、ファイルを開くということを呼び出すということでしょうか?ご教授頂けると幸いです。すみませんが。

  • ルーチンとライブラリについて。

    プログラムがあって、ABCBCDが、あってこのプログラム全体を、メインルーチン、BCをEとしてまとめたものを、サブルーチンで、AやDをルーチンとなっていますが、 状況によって(別プログラム)で 考えた時には、AやDがサブルーチンとなるプログラムは、どんなものでしょうか?教えていただけると助かります。すみません。意味不明でしたら、聞き返してください。教えていただけると助かります。

  • ルーチンについて。

    例えば、ABCBCDというプログラムがあって、BCをサブルーチン化して、Eとおいて、AEEDとした時、AとDは、ただのルーチンというのでしょうか?それとも、メインルーチンと言ってもいいのでしょうか?教えていただけると幸いです。すみません。

  • ルーチンとライブラリについて。

    例えば、ABCBCDというプログラムがあって、BCをEというサブルーチンにしておいて、Aは、abcbcdというプログラムになっているので、Aは、メインルーチンといってもいいのでしょうか?Dも同様でしょうか?教えていただけると幸いです。すみません。

  • cobol サブルーチンのlink

    cobol言語プログラミングでの質問です。 サブルーチンで 【ダイナミックLINK】と【スターティックLINK】というのがあるようですが、どのような違いがあるのでしょうか?今、私の認識は以下の通りなのですが正しいでしょうか??→例えば、ダイナミックはサブルーチンを修正し、コンパイル完了するとメインをコンパイルしなくてもサブルーチンの修正が反映される。スターテックはサブルーチンを修正し、コンパイル完了してもメインをコンパイル完了するまではサブルーチンの修正が反映されない。どうでしょうか????

  • ダイナミックリンクライブラリ 実行 失敗

    「ダイナミックリンクライブラリ(DLL)初期化ルーチンの実行失敗」って、何が原因でしょうか?

  • 画像処理ソフト・SPIDERについて

    個人的に画像処理に今興味があるのですが、SPIDERというサブルーチンライブラリが存在すると聞きました。既に20年ほど前の学会論文誌でも発表されているようでしたが、これに相当するもしくはこれ以上の画像処理アルゴリズムのサブルーチンライブラリというのが現在存在するのでしょうか?また、現在、SPIDERは世間でどのような扱いをされているのかご存知の方いらっしゃいましたら教えてください。

専門家に質問してみよう