正しい認識かまだよくわからない部分もあるが自分なりに学習して解釈したものをまとめてみた
ライブラリには、
スタティックリンクライブラリ(LIB)
ダイナミックリンクライブラリ(DLL)
があるということ
ライブラリには、汎用関数、汎用クラスがプログラミングされている
ライブラリは、自分が作っているプログラムから呼び出して利用するための汎用性のあるプログラムの集合です。
図書館(ライブラリ)のように様々な書物(関数や一連の操作ができるプログラム)を分類して保管されているものがライブラリです。
コンパイル(プログラム(人が見て理解できる言語)を実行できるファイル(コンピュータが理解できるマシン語、特にEXEファイルなど)に変換を行うこと)時に実行ファイル(特にEXEファイルなど)内に取り込まれるライブラリ
1つの実行ファイルとしてコンパイルされる
[ライブラリ自体は、プログラムと同じ言語のままや、中間言語のようになっている場合が多い]
コンパイル時に実行ファイルと切り離されて、実行ファイルを実行するたびに呼び出されるライブラリ
1つの実行ファイルと、プログラムを作るときに利用した複数のダイナミック・リンク・ライブラリの構成になる
[ライブラリ自体がコンパイル(コンピュータが理解できるマシン語に変換を行うこと)されたライブラリ]
ライブラリは、基本的には、宣言(このライブラリを利用しますと記述する)ことでそのライブラリを利用できるようになる。
宣言の詳細については、各プログラミング言語のリファレンスを参考にする。
DLLは、共有できるようになっていれば、どのプログラミング言語で書かれたかは、問題ではなく、各プログラミング言語で宣言して利用できる。
じつは、実行ファイルでもライブラリと同じように実行ファイル内の関数や、クラスが利用できたり、EXEファイルそのものを実行できたりすることができるものもある 。
アプリケーションをライブラリのようにプログラミング言語で利用できるように定義したものはAPIと言われている。こちらもどの言語で書かれたかは問題ではなく、各プログラミング言語でどう宣言したら利用できるかなのでよくリファレンスマニュアルを参考にする。
すでに提供されているライブラリ内の関数・クラスまたは、APIの記述方法と動作を記述したリファレンスマニュアルが重要になる。
プログラミング言語内には、基本コマンドがあるが、今のプログラミングでは、既に存在するこのライブラリを活用することでプログラミングの生産性は格段に向上する。逆に言うと、どのようなライブラリがあってどんな仕様なのかを知っている(覚えている)人がプログラミング能力が高いともいえるかもしれない
こんなことがしたい、あんな動作させたいと思ったときにこのライブラリのこのクラスや、このAPIを利用すれば実現できるとすぐに思い浮かぶ、もしくは、参照先を覚えている必要がある
アプリケーション・プログラミング・インターフェイス
プログラム上でアプリケーションを利用するための定義
インターフェイス(インターは~の間,フェイスは顔)とは、連携、つなぐという意味で アプリケーション(実行ファイルのこと。厳密には実行ファイルとライブラリファイル他含むとなる。)とプログラムを連携させるルール
例えば、Windows APIは、Windows OSの機能をプログラム上で利用できるように、呼び出して利用する方法を定義したもの
DLL内のクラスを呼び出して利用するのに似ているかもしれない
関数やクラスなどを呼び出してプログラムで利用する方法もAPIの一つともいえる
こちらもプログラム上でライブラリ内の関数やクラスを利用するための定義ともいえる
よく聞くのが.net framework
フレームワーク(骨組みの意味)は、アプリケーションの骨組みを提供するのでその中身をプログラミングしたり改造したりするというプログラミング手法
フレームワークの中でアプリケーションを作るのに必要な関数、クラスなどをすべて提供しますといった感じ
そのため、このフレームワーク自体が多言語、多種OSに提供されていれば、同じようなアプリケーションが作成できる
Java言語は、これに近い考え方かもしれない
その後のJavascriptの学習でプラットフォームを言う言葉が出てきて、Node.jsがそれにあたると書いてあった。プラットフォームとフレームワーク何が問う違うのやらまた複雑な概念が飛び込んできた。