ソフトウェア ライブラリ – 定義

コンピューティングにおいて、ソフトウェアライブラリまたはライブラリ[ 1 ] (またはプログラム ライブラリ) は、書き直さなくても使用できるようにグループ化されて利用可能になった一連のユーティリティ関数です。関数は、同じ概念ドメイン (数学、グラフィックス、並べ替えなど) に属することによってグループ化されます。ソフトウェア ライブラリは、アプリケーションを表すものではないという点で実行可能ファイルとは異なります。これらは完全ではなく、主な機能としてプログラムの本質を持たないため、直接実行することはできません。ライブラリでは、単純な関数 (コサインの計算や行列の逆変換など) だけでなく、直接アクセスできない多くの内部関数を含む複雑な関数もグループ化できます。ライブラリの利点は、毎回書き直す必要がない便利なコードがライブラリに含まれていることです。

ソフトウェア ライブラリは、一貫した相補的なライブラリのセットを構成するために、フレームワークにグループ化されることがあります。

名前の由来

図書館という名前は、人間の行動に由来しています。技術的なこと (庭に種を植えるなど) を行う方法が分からないが、それをやりたい場合、私たちは図書館に行き、進め方を示した本を調べることができます。毎回自分で手順を作り直す必要がありません。

プログラムは少し同じように進みます。必要な各プログラムで共通のプロシージャをコーディングするのではなく (つまり、同じプロシージャが、それを使用できるプログラムの数だけコンピュータ上で書き直されることになります)、これらの手順はライブラリにあります。プログラムに実行する関数があり、それがライブラリにある場合、プログラムはそれを直接使用します。

ソフトウェア ライブラリ - 定義

図書館の設計と組織

ライブラリの古典的な構成には、関数のテーマ別の分割が含まれており、プログラマが必要な関数をより簡単に見つけられるようにします。このテーマ別の分類により、提供するサービスに応じて図書館を分類することができます。

  • 低レベル ライブラリまたはシステム ライブラリ: オペレーティング システムや周辺機器とのインターフェイスサービスを提供したり、汎用ツールを提供したりします。
    • 入出力ライブラリ: ファイルの読み取りと書き込みのための関数、キーボード、画面などの入出力デバイス。
    • システムデータ構造の管理、
  • 高レベル ライブラリ (ビジネス ライブラリとも呼ばれ、低レベルのライブラリと対話します): 含まれる関数は特定のアクティビティに固有です。
    • グラフィック ツールボックス: 複雑なグラフィック オブジェクト (OpenGL など) を管理、アニメーション化、表示できる一連の関数。
    • 画像処理演算子ライブラリ: 分析目的で画像内の情報を構造化することを目的とした関数のセット。
    • ユーザーデータ構造の管理、
  • その他のライブラリ:

プログラミング インターフェイス(一般的には、英語の頭字語 API でApplication Programming Interfaceと呼ばれます) は、ライブラリまたはライブラリのセットの目に見える部分であり、プログラマーは利用可能な関数の中から、それを可能にする関数を選択できます。彼が必要としているサービス。 API は、使用可能な関数および/またはクラスの名前のリストとして表示され、API に提供されるパラメーターと返される結果に関するドキュメントが含まれます。

オペレーティング システム形式でのライブラリの実装

原則

実行可能コードが使用するライブラリ内の関数の命令にアクセスするには、コード内の各関数呼び出しが、ライブラリ内で呼び出される関数の最初の命令の実効アドレスに関連付けられている必要があります。

このために、コンパイル段階の後に介入するいくつかの方法とツールがあります。

  • リンク編集により、アプリケーションの実行可能コード内で (1 つ以上のライブラリからの) 外部関数への分岐命令が確実に実装されます。
  • リンク編集が動的である場合、プログラムの実行中にローダーが介入して、使用されるライブラリの関数をメモリに取り込むことができるため、関数が呼び出されたときにそのコードがメモリ内で利用できるようになります。
  • エディションが静的である場合: アプリケーションによって使用される関数のコードはアプリケーション コードに統合され、それによって自律的になります。

ライブラリのロードは、次の 2 つの方法で行うことができます。

  • 関数 (遅延リンク) を使用するプログラムによる呼び出し中に、この手法には本当に必要なコードのみをロードできるという利点があります。
  • または、実行するプログラムをロードします。

ライブラリは、それを使用するすべてのアプリケーションでコードが重複しないように、原則としてオペレーティング システムによって共有されます。ただし、同時バージョンの可能性を参照してください。

動的にロードされるライブラリ

ダイナミック ライブラリ はWindowsではダイナミック リンク ライブラリ(.dll) という名前、 UNIXでは共有オブジェクト(.so) または「ダイナミック ライブラリ」という名前で、実行可能プログラムによって使用されますが、その一部ではないソフトウェア ライブラリファイルです。

このファイルには、プログラムの実行中に呼び出すことができる関数が含まれていますが、これらの関数は実行可能ファイルには含まれていません。

動的ライブラリの利点は次のとおりです。

  • ソフトウェアの特定の部分が実行可能ファイルの外側にあるため、実行可能ファイルのサイズが小さくなります。
  • また、それらを使用するすべてのアプリケーションの便利な機能が更新される可能性もあります。アプリケーションは、ライブラリからの修正や機能改善の恩恵を自動的に受けます。
ソフトウェア ライブラリ - 定義

共有ライブラリ

複数のプログラムが同じライブラリを使用する場合、それらをメモリに 1 回だけロードし、すべてのプログラムが同じコピーを使用できるようにすることをお勧めします。次に、共有ライブラリについて話します。ライブラリは、共有されずに動的になることも、動的にされずに共有されることもできます。

ライブラリの共有には、あるプログラムによる関数呼び出しによってライブラリの内部状態が変更される可能性があり、それを使用する他のプログラムが中断されないようにするための、強力な設計上の制約が伴います。マルチタスクシステムでは、ライブラリ関数が呼び出されるタイミングを制御しないため、関数が同時に複数回呼び出される可能性があります。再入可能とは、複数のアプリケーションで同時に使用できるライブラリの機能です。

同時リリース

ライブラリのバージョンを別のバージョンに置き換えると、古いバージョンで動作していた一部のプログラムが新しいバージョンでは動作しなくなる可能性があります。この問題は、ライブラリのバージョンとバージョン間の互換性メカニズムによって解決されます。

さまざまなオペレーティング システムでの特定のケース

DLL は、Windows オペレーティング システムのコンテキストでは、ダイナミック リンク ライブラリ(フランス語ではダイナミック リンク ライブラリ) の略です。従来、これらのファイルの名前は拡張子「.dll」で終わります。 DLL には、他のアプリケーションで使用できるコードまたはリソースを含めることができます。

DLL に含まれるコードは、メモリに 1 回だけロードされます。したがって、プロセスがすでにメモリ内にある DLL をロードしようとすると、既存のコードは 2 回目のロードを必要とせずにプログラム メモリにマップされ、RAM のスペースが節約されます。 DLL を操作するすべてのプロセスが終了すると、ライブラリの種類と Windows の設定に応じて、今後のホスト プログラムがプロセスのロード操作を再度実行する必要がないように、それに割り当てられたメモリ領域が解放されるか、変更されないままになります。

DLL はプログラムに静的または動的にリンクできます。最初のケースでは、プログラムはライブラリに含まれる関数が必要であることを明示的に宣言し、リンク解決はプログラムのコンパイル段階でリンカによって実行されます。次に、プログラムは、そのバイナリ構造に、適切に機能するために必要なライブラリのリストを「エクスポートテーブル」に含めます。 Windows プログラム ローダーは、プログラムの実行時に必要な DLL がすべて利用可能かどうかを確認し、そうでない場合は、実行可能ファイルに必要な依存関係が見つかったことを示すメッセージを表示してロードを停止します。 2 番目のケースでは、目的の関数へのポインタを取得するために、実行中にLoadLibrary API を使用してライブラリのロードを明示的に要求するプログラムです。この最後のアプローチは、プログラマ側に多大な労力を必要とするため、より面倒ですが、一方では、ホスト システムn 上の存在が確実ではないライブラリにリンクされたプログラムの実行を妨げないようにすることができます。一方、発行者が提供するインターフェイス ファイルで宣言されておらず、したがって「文書化されていない」とみなされるべき関数にアクセスする唯一の方法となる場合があります。

C、C++、Delphi などの言語では、他のプログラムで使用できる DLL を作成できます。 MFC やBorlandの VCL などのランタイム ライブラリを提供する多くの開発ツールは、静的リンク (コードを実行可能ファイルに直接統合) または動的リンク (ライブラリは DLL 形式で配布される) のいずれかを提供します。

DLL を使用すると、コードを利用できるようになり、アプリケーションのアーキテクチャをモジュール化することができます。古い DLL のみを置き換えることによって更新することもできます。ただし、Windows では、複数の競合バージョンの DLL を使用すると問題が発生し、 DLL Hellという用語に分類される特定の非互換性が発生します。

DLL は現在のディレクトリで検索され、次にc:\windowsc:\windows\system32などのパス環境変数に含まれるディレクトリで検索されます。

Unix、GNU/Linux、BSD

Unix ライクなシステムでは、ライブラリは通常、拡張子.so (共有オブジェクト)、. .dylib (MacOSX ダイナミック ライブラリ)、. .a (アーカイブ、従来の Unix)、. .sl (「共有ライブラリ」)、または.saを使用して名前が付けられます。 (「共有アーカイブ」、SunOS)。

.soファイルは、 /etc/ld.so.conf ( man ldconfigで入手可能なドキュメント) で記述されたディレクトリ内で検索されます。

ライブラリは進化する可能性があり、同じシステム上で異なるバージョンを使用することができます。次に例を示します。

/usr/lib/libxml2.so (リンク)
/usr/lib/libxml2.so.2 (リンク)
/usr/lib/libxml2.so.2.6.6
/usr/lib/libxml.so.1 (リンク)
/usr/lib/libxml.so.1.8.17
ソフトウェア ライブラリ - 定義

C:\WINNT\system32\wsock32.dll
/usr/lib/libxml2.so

スクリプト言語ライブラリ

Python や Perl などのスクリプト言語には独自のライブラリがあり、多くの場合、それらのスクリプト言語で記述されます。

たとえば、python2.4-pychart ライブラリは次の 3 つのファイルで構成されます。

  • /usr/lib/python2.4/site-packages/pychart/log_coord.py
  • /usr/lib/python2.4/site-packages/pychart/axis_doc.py
  • /usr/lib/python2.4/site-packages/pychart/object_set.py
ソフトウェア ライブラリ - 定義

メモと参考文献

  1. 図書館という用語は、偽の友人を英語の図書館翻訳した際の不適切な翻訳に起因する言葉の乱用であると考える人もいます。しかし、中世には、本屋という言葉が最初にすべての本を指しました(モンテーニュの本屋)。これが英語に伝わり、フランス語ではこの意味で使われなくなり、ラテン語ではなくギリシャ語起源の用語「 libraria」に置き換えられました。帝国ラテン語の。
  1. مكتبة برمجية – arabe
  2. Kitabxana (informatika) – azerbaïdjanais
  3. Бібліятэка (праграмаванне) – biélorusse
  4. Библиотека (програмиране) – bulgare
  5. Biblioteka (računarstvo) – bosniaque
  6. Biblioteca informàtica – catalan

ソフトウェア ライブラリ – 定義・関連動画

https://www.youtube.com/watch?v=sZWjQwGtG6E&pp=ygU144K944OV44OI44Km44Kn44KiIOODqeOCpOODluODqeODqiAtIOWumue-qSZobD17bGFuZ30%3D

サイエンス・ハブ

知識の扉を開け、世界を変える。