利点と制限とは? わかりやすく解説

利点と制限

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/02 08:30 UTC 版)

ジェネリックプログラミング」の記事における「利点と制限」の解説

Ada言語構文では、汎用仮パラメータとして何を許容するか、精密に制約条件課することができる。例えば実パラメータとしてはモジュラー型(任意の上限巡回する符号なし整数型)のみを許容するように、仮パラメータとして指定することも可能である。さらには汎用仮パラメータ間に一定の制約あるよう規制することも可能である。例えば、 generic type Index_Type is (<>); -- 離散型(discrete type)のみを許容 type Element_Type is private; -- 制限型(limited type)以外の任意データ型 type Array_Type is array (Index_Type range <>) of Element_Type; この例でArray_Typeには、Element_Typeに対応する特定のデータ型要素とし、Index_Typeに対応する特定の離散型の部分型添字とする配列型なければならないという制約課している。プログラマがこの汎用体をインスタンス化する際には、同制約満足する配列型を実パラメタとして渡さなければならない構文複雑さに難はあるものの、精密な制約表現できることで、汎用仮パラメータ全て仕様部として完全に定義されるこのためコンパイラ汎用本体がなくても汎用体をインスタンス化することができる(もちろん本体がないとリンクはできない)。 C++異なってAdaでは暗黙的な特化による汎用体のインスタンス化許さないため、全ての汎用体は明示的にインスタンス化することが必要である。この規則により以下のような結果生じる。 コンパイラ共有ジェネリクス (shared generics) を実装できる。すなわち、ある汎用体のオブジェクトコードは全インスタンス共有できる(もちろんプログラマが副プログラムインライン化を要求しない限り)。さらなる結果として、コード肥大化する可能性がない(コード肥大化C++では一般的であり後述のように特別な配慮求められる)。 インスタンス化都度新たなオブジェクトコード生成することは不要であるため、コンパイル時のみならず、実行時汎用体をインスタンス化することができる。 汎用体仮オブジェクト対応するオブジェクトは、たとえ同実オブジェクト静的である(コンパイル時に値が確定する)としても、汎用本体中では常に静的ではないものとみなされる詳細についてはWikibookのGeneric formal objects参照。 ある汎用体の全インスタンスは全く同一であるため、他人作成したプログラムレビューしたり、理解することが容易である。配慮すべき「特別な場合」はないのだから。 全てのインスタンス化明示的であり、プログラム理解が困難となるような暗黙的なインスタンス化はない。 Adaでは特化許容しないためテンプレートメタプログラミングできない。 ただし仮パラメータ精密な制約課することができるため、例えば、スワッププログラム仮パラメータとして、ソート目的とした汎用体の挙動スワップ対象に応じて変化させたり、離散型の規定演算である大小判定用いてMax実装するなど、特化利点とされる目的一部他の方法により、達成することができる。

※この「利点と制限」の解説は、「ジェネリックプログラミング」の解説の一部です。
「利点と制限」を含む「ジェネリックプログラミング」の記事については、「ジェネリックプログラミング」の概要を参照ください。


利点と制限

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/25 16:08 UTC 版)

Live USB」の記事における「利点と制限」の解説

Live USB多くの点でLive CD似ている

※この「利点と制限」の解説は、「Live USB」の解説の一部です。
「利点と制限」を含む「Live USB」の記事については、「Live USB」の概要を参照ください。

ウィキペディア小見出し辞書の「利点と制限」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「利点と制限」の関連用語

利点と制限のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



利点と制限のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのジェネリックプログラミング (改訂履歴)、Live USB (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS