1.1.2 命名と環境

プログラミング言語の重要な特徴のひとつは、コンピュータ上のオブジェクトを指すために名前を利用する手段を提供してくれるということです。このことを、(value)がそのオブジェクトである変数(variable)を名前によって特定すると言います。

LispのScheme方言では、define\texttt{define}(定義)によって対象に名前をつけます。以下のように入力すると、

(define size 2)

インタプリタはsize\texttt{size}という名前と2という値を関連づけます。8size\texttt{size}という名前が一度2という数値に関連づけられると、2という値を名前によって参照できます。

size
2
(* 5 size)
10

define\texttt{define}の使い方をさらに見ていきましょう。

(define pi 3.14159)
(define radius 10)
(* pi (* radius radius))
314.159
(define circumference (* 2 pi radius))
circumference
62.8318

define\texttt{define}は、この言語の持つ抽象化方法のうち、最も単純なものです。これによって、上で計算したcircumference\texttt{circumference}(円周)のような複合演算の結果を簡単な名前で参照できます。一般的に、コンピュータ上のオブジェクトというものはとても複雑な構造を持っているので、使うたびにその細かいところを思い出して打ち直さないといけないとしたら、とんでもなく面倒なことになります。インタプリタでは、この名前とオブジェクトの関連づけを一連の対話を通して少しずつ作っていくことができるので、このような段階的なプログラムの構築に特に便利です。この特徴は、プログラムの開発・テストを少しずつ進めていくのに向いていて、Lispプログラムが一般的に大量の比較的単純な手続きから構成されるということの大きな理由となっています。

当然のことですが、インタプリタが値と記号を関連づけ、後から取り出すことができるということは、名前とオブジェクトのペアを記録しておくために何らかのメモリを持っておかないといけません。このメモリは環境(environment)と呼ばれます(より正確には、グローバル環境(global environment)です。後で学ぶように、演算には複数の異なる環境が使われることもあるからです)。9


8. この本では、定義を評価した後にインタプリタが返す応答を示すことはしません。それは実装に強く依存するからです。
9. 第3章では、インタプリタがどのように動作しているかを理解するため、またインタプリタを実装するために、この環境という概念がキーポイントになることを示します。

results matching ""

    No results matching ""