ラッパー
外部ライブラリ内の関数を呼び出すことのみを目的とするネイティブ言語で関数を記述します。目標は、母国語でできる限り少ないことです。たとえば、ネイティブ言語から外部ライブラリ言語へのデータ型の翻訳などです。
ラッパーは、外部ライブラリが次の場合に意味があります。
- ネイティブ コードよりも効率的な言語で記述されている (たとえば、Python から呼び出される C++ ライブラリ)
- 大規模/複雑で、翻訳に時間がかかるかエラーが発生しやすい
- 定期的に更新。適切に管理されたライブラリでは、インターフェイス (ラッパーが関係するもの) は、機能の実装よりも頻繁に変更されません。したがって、機能のラッパーがある場合、ライブラリの新しいバージョンへの更新はかなり簡単です。
移植
ポートは、ある言語から別の言語への単なる翻訳です。一般に、同じロジックが可能な限り維持されます。
移植は、次の場合に意味があります。
- ネイティブ言語は外部ライブラリよりも効率的です
- ライブラリはシンプルで、ラッピングに伴うオーバーヘッドを節約したい
- 母国語で移植されたコードに変更を加えて維持することを意図している
- 外部ライブラリを独自の言語で使用する予定はありません
- 関連する言語の一方または両方を学びたい
リライト
リライトは、多くのリファクタリングを伴うポートと考えてください。目標は、母国語の機能を利用して、何らかの方法でライブラリを改善することです (効率、読みやすさなど)。
書き換えは、移植と同じすべてのシナリオで意味があります。単純な移植を行うか、完全な再書き込みを行うかの決定は、通常、次の 1 つの質問に帰着します。
- 外部ライブラリの機能をネイティブ言語で実装するためのより良い方法はありますか?