ソフトウェアポータビリティのコンテキストでは、この3つの概念の違いは何ですか?ラッパー、バインディング、およびポートの違いは何ですか?
たとえば、元のncursesライブラリはC言語で書かれていますが、アプリケーションはC++で書かれています。その後、 "ncurses wrapper"、 "ncursesへのバインディング" ncurses port "と入力します。どちらを使うべきですか?
それぞれの賛否両論は何ですか?
ソフトウェアポータビリティのコンテキストでは、この3つの概念の違いは何ですか?ラッパー、バインディング、およびポートの違いは何ですか?
たとえば、元のncursesライブラリはC言語で書かれていますが、アプリケーションはC++で書かれています。その後、 "ncurses wrapper"、 "ncursesへのバインディング" ncurses port "と入力します。どちらを使うべきですか?
それぞれの賛否両論は何ですか?
wrapperは、機能をリサイクルするために他のコードの上に座っているコードですが、インターフェイスは異なります。これは、通常、同じ言語で記述されたインタフェースを意味します。また、技術的に意味するものがバインディング(自分自身を含む)であるときに、ラッパーと言うこともあります。
長所:
短所:
binding他のコードの上に座っているコードの他のビットは、それが今回のバインディング以外の機能だリサイクルすることです彼らが縛っているものとは異なる言葉で書かれています。注目すべき例は、QTのPythonバインディングであるPyQtです。
長所:
短所:
にインタプリタ言語を含む任意のラッパー、特に、かなり大規模なパフォーマンスヒットを取っているラッパー
長所:
短所:断然
すばらしい説明! – jweyrich
ラッパーのパフォーマンスに大きな影響はありますか?パフォーマンスが重要なベンチマークアプリケーションでラッパーを使用する必要がありますか? –
データを別のプロセスに効果的に渡して、それが返るのを待っているので、すべてのラッパーは「パフォーマンス・ヒット」です。もしあなたが何らかの方法でより速く手渡しているなら、ヒットは利益によってバランスがとれているかもしれないということが、上手です!一例として、Goで書かれたHekadプロジェクトには、C正規表現ラッパーを実行するためのルアインタプリタが含まれています。これは、goのネイティブ正規表現ハンドラATMよりも高速です。 – odgrim
Which one should I use?
あなたはbindings to ncurses
を使用する必要があります。バインディングは、アプリケーションやライブラリなどの特定のバージョンで、元の言語とは異なる言語で使用することができます。頻繁な例には、Windowsマネージャ(gtk + = C、gtkmm = C++、Qt = C++、PyQt = Python、eccなど)があります。しかし、人々はしばしばバインディングを参照するためにラッパーやポートなどの他の単語を使用するので、混乱するのは簡単です。
より多くの文脈を与えない限り、あなたが話していることを言うことは不可能です。 –