標準ライブラリ

プログラミング言語における標準ライブラリとは、通例的に言語の各実装に備えられているライブラリである。いくつかの場合では、ライブラリはプログラミング言語の仕様において直接言及され、その他の場合では、標準ライブラリの内容はプログラミングコミュニティでのより非公式な慣例において決定される。

ホスト言語に備えられた構成要素にも依存するが、標準ライブラリは以下の要素を含みうる：

 サブルーチン
 マクロ定義
 グローバル変数
 クラス定義
 テンプレート

多くの標準ライブラリは少なくとも以下のよく使われる機能の定義を含む：

 アルゴリズム（ソートアルゴリズムなど）
 データ構造（リスト、木構造、ハッシュテーブルなど）
 入出力とオペレーティングシステム命令を含むホストプラットフォームとのやり取り

 哲学 
標準ライブラリの設計における哲学は多種多様である。例えば、C++の設計者であるビャーネ・ストロヴストルップは以下のように書いた：

 「標準C++ライブラリには何があるべきなのか？　プログラマのひとつの理想は、関心を引く、重要で、合理的な、あらゆる一般的なクラス、関数、テンプレート、その他を単一のライブラリから得られることだ。しかしながら、ここにある疑問は『とあるライブラリにおいて何があるべきか？』ではなく『標準ライブラリにおいて何があるべきか？』だ。『すべて！』という答えは前者の疑問に対する合理的な一番近い答えではあるが、後者に対してではない。標準ライブラリとはすべての実装者が提供すべき何かであり、すべてのプログラマがそれに頼るようなものなのだ。」 ビャーネ・ストロヴストルップ、『The C++ Programming Language』第3版、アジソン・ウェスレイ社、1997年

これは「すべてのプログラマ」がソフトウェアの大きなコレクションを構築する際に当然のように必要とする構成要素のみを含む、比較的小さな標準ライブラリを示唆している。
CおよびC++の標準ライブラリにおいてはこうした哲学がある。

対照的に、Pythonの設計者であるグイド・ヴァンロッサムは標準ライブラリについてより多くの包括的ビジョンを受け入れており、Pythonチュートリアルにおいて以下のように書いた：

 「Pythonには『電池が付属する』という哲学がある。この哲学はこの大きなパッケージ群での洗練された強固な能力において最も良く見てとれる。」 グイド・ヴァンロッサム、Pythonチュートリアル

ヴァンロッサムは上記に続けて、C++標準ライブラリが省いたようなXML処理、XML-RPC、電子メールメッセージ、地域化、その他サービスのライブラリを列挙している。こうした他の哲学はスクリプト言語（PythonやRuby）やJavaや.NET Frameworkのような仮想マシンを使う言語においても見られるであろう。

 標準ライブラリの例 
 標準Cライブラリ - C言語用
 標準C++ライブラリ - C++言語用
 Standard Template Library（STL） - 標準C++ライブラリの一部
 Javaクラスライブラリ (JCL) - JavaおよびJavaプラットフォーム用
 基本クラスライブラリ (BCL) - .NET Framework用

 脚注 

Category:ライブラリ (プログラミング)