言語バインディング

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

プログラミングおよびソフトウェア設計ではバインディングは、プログラミング言語が外部ライブラリまたはオペレーティングシステムサービス(その言語にネイティブではないもの) を使用できるようにするために特別に作成されたグルーコードを提供するアプリケーションプログラミングインターフェイス(API)です。

特徴

バインディングとは、通常、あるものから別のものへのマッピングを指します。ソフトウェアライブラリのコンテキストでは、バインディングは2つのプログラミング言語をブリッジするラッパーライブラリであるため、ある言語用に作成されたライブラリを別の言語で使用できます。[1] 多くのソフトウェアライブラリは、 CC ++などのシステムプログラミング言語で記述されています。別の言語、通常はJavaCommon LispSchemePythonLuaなどの高レベルのライブラリを使用するため、ライブラリへのバインディングはその言語で作成する必要があり、必要な変更の量によっては、言語のコードを再コンパイルする必要がある場合があります。[2]ただし、ほとんどの言語は、PythonOCamlEmbeddable CommonLispなどの外部関数インターフェースを提供します[3] [4] [5]ctypescffiuffi

たとえば、Pythonバインディングは、何らかの目的で作成された既存のCライブラリをPythonから使用する場合に使用されます。もう1つの例は、 SubversionソフトウェアリポジトリlibsvnにアクセスするためのAPIを提供するためにCで記述されたものですJavaコード内からSubversionにアクセスするには、を使用できます。これは、インストールに依存し、Javaとの言語間のブリッジとして機能します。したがって、関数を呼び出して作業を行うAPIを提供します。[6] libsvnjavahllibsvnlibsvnlibsvn

ライブラリバインディングを作成する主な動機には、ソフトウェアの再利用、複数の言語でのライブラリの再実装を減らすこと、および一部の高水準言語で 一部のアルゴリズムを効率的に実装することの難しさが含まれます。

ランタイム環境

オブジェクトモデル

仮想マシン

移植

も参照してください

参考文献

  1. ^ 「付録A.cairoの言語バインディングの作成」Cairographics.org 2014年4月2日取得
  2. ^ 「標準、API、インターフェースおよびバインディング」Acm.org。2015年1月16日にオリジナルからアーカイブされまし2014年4月2日取得
  3. ^ "ctypes –Python用の外部関数ライブラリ"Pythonv3.8.3のドキュメントDocs.python.org 2020年6月4日取得
  4. ^ ヒッキー、ジェイソン; マダヴァペディ、アニル; ミンスキー、ヤロン(2013)。「RealWorlOCaml、第19章。ForeignFunctionInterface」realworldocaml.org 2015年7月19日取得
  5. ^ 「はじめに–CFFIユーザーマニュアル」Common-lisp.net 2014年4月2日取得
  6. ^ 「SubversionJavaHLFAQ」Subclipse.tigris.org。2013-06-18 2014年4月2日取得

外部リンク