面白いアイデアです。問題の核心はこれだと思います。適切に設計されたライブラリ(またはライブラリのセット)は、関数、データ構造、およびその他の規則の小さなセットを慎重に選択するという点で一貫性があります。これは、プログラマーがそれを理解し、使用し、再利用できるようにするものです。
大規模な関数データベースは、同じ意味で、一貫性のない、設計されていない関数の塊を再利用できるようにする試みのようです。しかし、問題の難しい部分は、そもそも関連する機能を見つけることではないと思います。直接再利用のほとんどの試みを打ち負かすのは、任意の技術的選択(適度に単純なタスクでも固有)の完全な組み合わせ爆発であると思います。 (擬似コードのようなインスピレーションとは対照的に)。
「フォルダ内の画像を開く」サンプルクエリを使用して、可能なターゲット関数がどのようになるかを検討します。
- フォルダを特定します:ディレクトリハンドル、文字列、または1ダースの「パス」データ構造の1つ
- 特定の画像を選択します:文字列、パターンマッチ、または多くのインタラクティブUIオプションの1つ
- 画像形式の処理:GIF、JPG、PNG、またはさまざまなポリグロット画像ローダーフレームワークなど
- 画像をロードします:無条件に、ヘッダー/メタデータ、本文、タイル、行、またはその他
- 画像を表す:ロードされた画像を保存するためにどのデータ構造を使用しますか?
- 例外、エラー、または中間決定ポイントを使用する
これらの可能性のいくつかは、プログラマーが簡単に処理できます(関数が適切に文書化されていると仮定します)。一部はパッチ可能である可能性があります(たとえば、提供されているフレームバッファ形式から使用可能な形式に変換する別の関数を見つけることによって)。しかし、他の人は技術的に大きな意味を持っています。インタラクティブなUIファイルチューザーでは、特定のUIフレームワークを使用する必要があります。ポリグロットイメージローダー関数は、数十のイメージライブラリを取得し、そのメモリ管理スキームにコミットできます。
別の言い方をすれば、「再利用のための設計」は何十年にもわたってソフトウェアエンジニアの希望に満ちたモットーであり、私たちの最善の努力はわずかな成功しか収めていません。しかし、長い経験から、モットーに内在する教訓が得られました。「デザイン」の部分がなければ、「再利用」はチャンスになりません。