抽象化レイヤー

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

コンピューティングでは、抽象化レイヤーまたは抽象化レベルは、サブシステムの作業の詳細を隠す方法であり、関心の分離を可能にして、相互運用性プラットフォームの独立性を促進します。抽象化レイヤーを使用するソフトウェアモデルの例には、ネットワークプロトコルOpenGL、およびその他のグラフィックライブラリのOSIモデルが含まれます

コンピュータサイエンスでは、抽象化レイヤーは、特定の実装から離れた、概念モデルまたはアルゴリズムの一般化です。これらの一般化は、さまざまな特定の実装に存在する類似性を表現するモデルによって最もよくカプセル化される幅広い類似性から生じます。優れた抽象化レイヤーによって提供される単純化により、有用な概念またはデザインパターンを抽出することで簡単に再利用できるため、正確に適用できる状況をすばやく認識できます。

レイヤーが依存している場合、レイヤーは別のレイヤーの上にあると見なされますすべてのレイヤーは、その上のレイヤーがなくても存在でき、機能するにはその下のレイヤーが必要です。多くの場合、抽象化レイヤーは、抽象化レベルの階層に構成できます。OSIモデルは、7つの抽象化レイヤーで構成されています。モデルの各レイヤーは、デジタル通信のニーズのさまざまな部分をカプセル化して対処し、それによって関連するエンジニアリングソリューションの複雑さを軽減します。

David Wheeler有名な格言は、「コンピュータサイエンスのすべての問題は、別のレベルの間接参照によって解決できる」というものです。[1]これは、「間接」の代わりに「抽象」と意図的に誤って引用されることがよくあります。また、バトラーランプソンに誤って帰属することもあります。これに対するケヴリン・ヘニーの当然の結果は、「...間接参照の層が多すぎるという問題を除いて」です。[2]

コンピュータアーキテクチャ

コンピュータアーキテクチャでは、コンピュータシステムは通常、次のようないくつかの抽象化レベルで構成されるものとして表されます。

プログラマブルロジックはハードウェアの一部と見なされることがよくありますが、論理定義はデバイスのソフトウェアまたはファームウェアの一部と見なされることもあります。ファームウェアには低レベルのソフトウェアのみが含まれる場合がありますが、オペレーティングシステムやアプリケーションを含むすべてのソフトウェアが含まれる場合もあります。ソフトウェア層は、ハードウェア抽象化層、物理および論理デバイスドライバー、ファイルシステム、オペレーティングシステムカーネル、ミドルウェア、アプリケーションなどのリポジトリにさらに分割できます。VHDL機械語アセンブリ言語からコンパイル言語インタプリタスクリプト言語などの低水準プログラミング言語と区別することもできます[3]

入出力

Unixオペレーティングシステムでは、ほとんどの種類の入出力操作は、デバイスから読み取られた、またはデバイスに書き込まれたバイトのストリームと見なされます。このバイトストリームモデルは、デバイスの独立性を提供するために、ファイルI / O、ソケットI / O、およびターミナルI / Oに使用されます。アプリケーションレベルでデバイスの読み取りと書き込みを行うために、プログラムは関数を呼び出してデバイスを開きます。デバイスは、端末などの実際のデバイス、ネットワークポートなどの仮想デバイス、またはファイルシステム内のファイルの場合があります。 。デバイスの物理的特性は、オペレーティングシステムによって仲介されます。オペレーティングシステムは、プログラマーがデバイスとの間でバイトを読み書きできるようにする抽象的なインターフェイスを提供します。次に、オペレーティングシステムは、バイトストリームの読み取りとデバイスへの書き込みに必要な実際の変換を実行します。

グラフィック

OpenGLなどのほとんどのグラフィックライブラリは、インターフェイスとして抽象的なグラフィカルデバイスモデルを提供します。ライブラリは、プログラマーが提供するコマンドを、グラフィック要素やオブジェクトを描画するために必要な特定のデバイスコマンドに変換する役割を果たします。プロッタの特定のデバイスコマンドはCRT モニターのデバイスコマンドとは異なりますが、グラフィックライブラリは、グラフィックオブジェクトの描画に一般的に役立つ 一連のプリミティブを提供する抽象的なインターフェイスを提供することにより、実装とデバイスに依存する詳細を隠します。

も参照してください

参考文献

  1. ^ スピネリス、ディオミディス(2007)。ビューティフルコード:一流のプログラマーが彼らの考え方を説明しますセバストポル、カリフォルニア州:オライリーアンドアソシエイツ。pp。279–291。
  2. ^ @kevlinhenney(2012年9月3日)。「はい、それは私の当然の結果です」 (ツイート) –Twitter経由
  3. ^ タネンバウム、アンドリューS.(1979)。構造化されたコンピュータ組織ニュージャージー州エングルウッドクリフ:プレンティスホール。ISBN 0-13-148521-0