導入
コンピューティングでは、変数は名前 (シンボル) を値またはオブジェクトに関連付けます。変数は識別子の一部です。変数の概念はプログラミング言語と密接に関係しています。これらの言語 (命令型言語) の多くでは、時間の経過とともに変数の値を変更できることが注目に値します。

プログラミング言語の変数
プログラミング言語では、変数は結果を格納するスペースです。ただし、変数の可能性は、参照するプログラミング言語と密接に関係しています。たとえば、C++ の変数には 6 つの特性があります。
- その名前、つまり変数がどのような名前で宣言されているかを示します。
- その型は、変数を構成するビットのシーケンスの解釈規則です。変数タイプは、このシーケンスの長さ(8 ビット、32 ビット、64 ビット) も指定します。
- その値はビットシーケンスそのものであり、 constキーワードを使用する場合、時間の経過とともに変化することはありません。
- そのアドレスは、それが格納されるメモリ内の場所です。
- その可視性は、変数 (キーワード public、private、protected) を誰が使用できるかを固定する一連のルールです。
- その有効期間は、変数が存在するコードの部分です。C および C++ では、変数は中括弧 “{}” で囲まれたコード ブロックに含まれます。ローカル変数の有効期間とその可視性を混同しないでください。
ただし、これらの特性を簡素化する言語を見つけることができます。
- 変数名の概念は、動的変数の作成 (C++ の新機能) を許可するすべての言語で問題になります。
- PHP には、多くのスクリプト言語のような強力な型指定がありません。
- プロローグでは、最初の識別が行われた後、時間の経過とともに変数の値が変化することは許可されません。
- C では変数の可視性はデフォルトで public です。
- C++ のポインタの概念は Java の参照の概念に置き換えられ、プロローグでは変数のアドレスは意味を持ちません。

変数名
一部の言語では、変数名 (識別子の名前など) は必ず文字 (大文字または小文字) または_ (下線付き) で始める必要があります。変数名を構成する他の文字は、文字、数字、または_である必要があります。変数名における大文字と小文字の区別 (大文字と小文字の区別) は、対象となる言語によって異なります。
C での有効な変数名の例:
- _var
- __var2
- ヴァール
C での無効な変数名の例:
- 2var
したがって、最初の文字を数値にすることはできません。これにより、あいまいさがなくなり、プログラムのコンパイルまたは解釈が容易になります。コンパイラは、数値を読み取るときに、後続の文字が数値を構成することを認識します。同様に、文字や下線を読めば、変数を扱っていることがわかります。
これらの変数名はすべてLispで有効です。
タイピング
変数の型がコンパイル時に (プログラマによって明示的に、または型推論によって自動的に) 決定される場合、静的型付けと呼ばれます。この変数の値は必ずこの型である必要があります (広い意味では、同じ型または派生型)。
静的型付けは、(メモリ消費量と実行速度の点で) より効率的なオブジェクト コードを生成するのに役立ちます。ただし、実行時の再帰性は禁止されています。
それ以外の場合、変数ではなく値が型を持つ場合、動的型付けまたは潜在型型と呼ばれます。
変数を型で宣言し、その型で使用することが言語で要求される場合 (例: Ada または C++)、強い型付けについて話します。変数がその存在中に (特に式のセマンティクスに準拠するために) 型を変更できることを言語が認める場合、弱い型付けについて話します。

変動するライフサイクル
通常、変数には 4 つの操作があり、それぞれが異なる構文形式をとることができます。
- この宣言では、変数名を宣言し、場合によってはそれに型を関連付けたり、初期値を宣言したりすることができます。
- 代入は変数に値を代入することで構成されます。
- 読み取りは、変数にリンクされた値を使用することで構成されます。
- 削除は自動的に、または言語指示によって実行されます。
C、Caml、Pascal などの言語では、変数を宣言するか、使用する前に変数に型を与える必要があります。変数の必須宣言により、コンパイラまたはインタプリタは、宣言されていない変数や同名変数などのタイプミスを識別できます。他の言語では、最初の代入時 (これはほとんどのスクリプト言語の場合)、またはコード内での最初の出現時 (Prolog など) に宣言が行われます。
変数の初期化、つまり最初の値の関連付けに関して、一部の言語では最初の読み取りの前に変数を初期化する必要がありますが、他の言語では暗黙的な値 (指定または不定) が提供されます。 Oz や Prolog などの言語は、厳密に言えば初期化を実行しません。値が関連付けられていない変数を宣言する場合、その変数はリンクされていないと言います。変数の値はプログラムの実行時に決定されます。これは単一化と呼ばれます。
関数型プログラミング言語または論理プログラミング言語では、変数には、その存在中に 1 つの値のみを割り当てることができます。
反射性
ほとんどの言語では、変数はプログラマのためのツールとしてのみ存在します。したがって、出現するすべての変数の名前を変更しても、プログラムの動作は変わりません。
それどころか、追加の表現力を提供するために、一部の言語では変数名を他の変数と同様に値と見なすことができます (たとえば、これらはCommon Lispと Smalltalk のシンボルです)。これは、シンボリック コンピューティング アルゴリズムを効率的に実装するための非常に便利な手法です。

絶え間ない
定数は、固定値に関連付けられた識別子です。構文的には、この識別子は変数のすべての側面を備えています。ただし、値を割り当てることができるのは 1 回だけ (通常はプログラムの起動時) です。
