39

私は本でこの引用を読みました:

コンピュータ サイエンスには、別のレベルの間接化を使用して解決できない問題はありません。

誰かがそれを説明できますか?「間接性のレベル」とはどういう意味ですか?

私が理解したことから、インダイレクションは、値自体の代わりに値のポインターを使用するための派手な名前です。これを明確にしてください。

4

3 に答える 3

45

「間接化」とは、最も広い意味で、何か他のものを使用するものを使用することです。

したがって、値の代わりに値のポインターを使用する例は、この定義に1つのレベルで適合します。ポインターは何かで、値は他の何かです。

通常、これは範囲が広いものです。

  • Web サイトを使用して、XML ベースのサービスによって生成されたデータをグラフィカルに表示します。ここでは、Web サイトが何かであり、その背後に隠れているのは、別の何かであるデータです。
  • オペレーティング システムを使用して表示画面にアクセスする。ここには、少なくとも間接的な 2 つの層があります。OSはスクリーンドライバーを使用しています。何か他のものを使用して何か。次に、スクリーン ドライバがスクリーン ハードウェアと直接対話し、あちこちに小さな光の点を作成します。ドライバーは、ハードウェアである別のものを使用する次の何かです。
  • ある API が高レベルで何かを処理し、その API が低レベルで同じことを処理することは珍しくありません。ここでも、低レベル API の上に一定レベルの間接化が追加されており、これを新しく改善された API と呼びます。

この最後の例は、おそらく、すべての「理由」を説明しています。

何かを扱うとき、それをマスターし、それをより高いレベルの抽象化に抽象化する方法を学ぶため、新しいレベルの間接化が必要になり、作業の一部を新しい API にオフロードすることで、より大きな問題をより迅速に解決できます。

于 2013-08-01T20:15:55.893 に答える
9

インダイレクションの潜在的な大きな利点の 1 つは、カップリングの減少です。これは、物事を適切に区分する必要があるという別の言い方です。これは、多くの場合、長期にわたるテスト、保守性、および柔軟性に大きく役立ちます。

例として、アプリケーションが永続化されたデータを読み取る必要がある場合、データを読み取る場所 (および方法) に関する特定の知識をアプリケーション全体に分散させるのではなく、データを分離 (データの読み取りをメソッドに入れる) してから、アプリの各部分がそれらの詳細を処理する代わりに、アプリケーションの他のすべての部分がそのメソッドを呼び出してデータを取得できるようにします。

于 2013-08-01T20:15:00.457 に答える
1

素晴らしい質問です。level of indirection私は実際にデータベースコースでこの用語に出くわしました。このコースのスライドでは、「間接化」やその使用方法に関する情報さえ提供されていませんが、学生に次のような質問を投げかけます。 ... suppose the file is unordered by the non-key field DEPTNUMBER and we want to construct a secondary index on DEPTNUMBER with one level of indirection that stores record pointers.

言及されたあなたの理解は、微妙なことを私に明らかにします: From what I understood, indirection is a fancy name for using a pointer of a value instead of the value itself. ここに画像の説明を入力

ここで、説明のために質問に写真を添付し​​ます。いわゆるは、と の間のブリッジであるlevel of indirectionを含むメモリのブロックに他なりません。したがって、ここでは、データ ファイル内のレコードごとに 1 つのインデックスを持つ代わりに、 によって構成される追加のレイヤーを使用して、インデックス ファイルと間接レベル (レコード ポインターのブロック) の間のインデックスを疎にします。そして、これについての私の理解は、データファイルの密なインデックスと同様に疎な(密でない)インデックスを持つことにより、メモリ使用量とルックアップ速度の間の適切なトレードオフを提供することです.pointersindexesdatapointersunordered

残念ながら、私の学校のスライドはただのゴミですが、インターネット上のlevel of indirection データベースへの実装に関して、この用語の適切な説明を見つけることができませんでした(それをカバーしていませんが、彼らはそれについて質問しています)。

良いソースがある場合、またはここで何か間違っている場合はコメントしてください。本当に感謝しています!

于 2021-04-03T07:17:00.840 に答える