値(コンピュータ科学)とは:種類、表現、意味論
コンピュータ科学における値とは、プログラムが生成・操作・転送する離散的な情報である。数値、文字列、真偽値、オブジェクトなどを指し、それを参照・格納する変数や記憶領域とは区別される。
コンピュータ科学における値の一般的な意味は、プログラムが生成、操作、転送する情報の一片である。値は式の評価結果であり、データ構造の内容でもある。例として、数値リテラル、テキスト文字列、真偽値フラグ、nullまたは未定義を示すマーカー、リスト、レコード、オブジェクトなどの構造化された集約体が挙げられる。値は、それを指し示す、または格納する変数、メモリセル、名前とは区別される。
特性と分類
値は一般に、型と意味論によって分類される。プリミティブ値には整数、浮動小数点数、文字、真偽値があり、配列、タプル、オブジェクトなどの複合値と対比される。言語はまた、コピーによってデータ自体が複製される値セマンティクスと、複数の参照が単一の基底オブジェクトを共有する参照セマンティクスを区別する。一部の言語では、特定の値を不変として扱う。不変な値は、構築後に変更できない。
表現と振る舞い
実行時、値は直接(アンボックス化して)表現される場合もあれば、参照(ポインタまたはハンドル)を介して表現される場合もある。これはコピーのコスト、同一性、等価性に影響する。等価性は、内容が等しいことを指す構造的等価性の場合も、同じオブジェクトであることを指す参照的等価性の場合もある。CやC++などの言語における左辺値と右辺値の区別は、式が代入可能なオブジェクトを指すか、あるいは計算のために得られる値にすぎないかに関するものである。
用途と例
値は、プログラムが式を評価するとき、引数を渡すとき、結果を返すとき、またはデータを直列化するときに現れる。定数とリテラルはソースコードに記述される固定の値であり、計算された値は関数呼び出しや演算から生じる。関数型プログラミングは値と不変性を重視し、推論や並列処理を容易にする。一方、命令型プログラミングはしばしば、変数に格納された可変の値に依存する。
歴史と理論上の役割
値という概念は、意味論および型理論の中心にある。ラムダ計算、操作的意味論、表示的モデルなどの形式体系は、値がプログラム内をどのように流れるか、また型がそれらの値をどのように制約するかを記述する。型システムは許容される値を分類し、実行時より前に不整合を検出するのに役立つ。
主な区別
- 値と変数・名前:値はデータであり、変数はそれに名前を付ける、または格納する。
- 同一性と等価性:同じオブジェクトであることと、内容が同じであること。
- 可変と不変:作成後に値を変更できるかどうか。
- プリミティブと複合:基本的な原子的値と集約体。
値、その表現、および意味論を理解することは、プログラミング言語の設計、プログラムの正しさ、性能工学の基礎となる。
関連項目
著者
AlegsaOnline.com 値(コンピュータ科学)とは:種類、表現、意味論 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/104108
出典
- worldcat.org : Foundations for programming languages