2.1変数と識別子(Name)
Variable
A variable can be characterized by a collection of properties, or attributes, the most important of which is type. The design of the data types of a language requires that a variety of issues be considered : scope, lifetime of variables, type checking, and initialization
プログラミング言語を開発する過程で,信頼性を高めるために変数のScope,Lifetime,Type&Type Checking,Initializationなどの概念が出現し始める.
int i; // '변수'란, 본디 '속성의 집합'이다.
main() {
int j = 5; // 변수의 Name과 Type, 그리고 Initialization
}
sub() {
int k; // 변수 k는 sub라는 모듈의 시작과 끝에서만 접근 가능 (Lifetime)
j = k; // main의 local variable이므로 불가 (Scope)
i = k; // global variable이므로 가능 (Scope)
}
~>本Chapter 2でこれらの内容について議論する.変数:Von-Neumann計算モデルに基づくプログラミング言語では、変数は「別のメモリセルに名前を付けた名前とその空間」です.
たとえば、アセンブリ言語でマトリクス計算を実行するプログラムを作成します.かなり複雑になります.
変数は代表的に6つの属性で表すことができる.name、address、value、type、life、scopeがそれらです.
name
address
この変数を格納するメモリ領域を示します.
多くの高度な言語では、同じnameを異なるメモリ領域に割り当てることができます.ex)最も代表的なC言語!Scopeコンセプトは、より詳細に説明されます.
1つまたは複数の可変名前で特定の単一メモリセルにアクセスできる場合、これらの名前は「Alias」と呼ばれます.
メモリセルがaとbの名前で同時に参照できる場合、Aliasが生成されます.
Chapter 1の位置付けに記述されているAliasingはこの意味である.
代表的なのはC言語の一般変数&ポインタ変数関係です.FORTRANのEQUIVALENCEコマンドやPascalのVariant Record Structureなど.
また、Subprogram(関数)のParameterからCallerの変数に直接アクセスできる言語もあります.これはAliasingに相当します.Call by ReferenceはDefault Referenceメソッドの言語たち!
これらのAliasingは可読性、メンテナンスの面で非常に悪い機能です.(デバッグが困難になるため)
Type
Value
これは、Variableが表す「抽象メモリセル」が実際に持っているコンテンツを意味します.
l-Value:Left Value、変数のアドレスを表します.
r-Value:Right Valueを表し、変数の値を表します.
ex) a = a + 1;
~>"="左側のaはl-value,右側のaはr-value
Scope
Name
≪名前|Name|oraolap≫:変数、ラベル、サブルーチン、フォーマット・パラメータなどの特定のエンティティを識別する文字列.
~>nameは良好な可読性を持つことが重要である.変数/関数/ラベル/パラメータなどの意味をうまく反映できるかどうかはプログラマーの重要な素質の一つである.
Nameの形式
Special Wordとは、その言語に特別な意味を持つ単語のこと.これらの特殊なWordは、コマンドラインを区切ったり、範囲を決定したりするときに使用されます.Keywordはここに相当します.
Reservice Word:Keywordを含む様々な特殊なWordは名前で「予約しました.」属性を表します.
これは
Reference
この問題について(2.1変数と識別子(Name)), 我々は、より多くの情報をここで見つけました https://velog.io/@junttang/PL-2.1-Variable-Name-Bindingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol