• ベストアンサー

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

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

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

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

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

その他の回答 (3)

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

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

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

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

zasx1098
質問者

補足

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

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

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