第 1 6 章 ル ー ル を 集 め て プ ロ グ ラ ム を つ く る
1 . ル ー ル の 独 立 性
ET プ ロ グ ラ ミ ン グ に お け る プ ロ グ ラ ム は ル ー ル の 集 合 で あ る 。 プ ロ グ ラ ム を つ く る と き 、 ル ー ル を 1 つ 1 つ 記 述 し 蓄 積 す る 。 は じ め か ら す べ て の ル ー ル が 頭 の 中 に あ り 、 そ れ ら が ど の よ う に 相 互 作 用 し て 計 算 を 進 め る か を 分 か っ て い る 場 合 に は 、 そ れ ら の ル ー ル を 実 際 に 書 き 下 す だ け で よ い 。 し か し 多 く の 複 雑 な 問 題 の 場 合 、 そ の 作 業 は と て も 困 難 で あ り 、全 体 の ル ー ル の 見 通 し が ま だ つ か ず 、計 算 全 体 の 様 子 が は っ き り わ か ら な い 状 態 で も 、 ル ー ル を 作 り 始 め な け れ ば な ら な い 。
ET プ ロ グ ラ ミ ン グ の 著 し い 特 徴 は 、ル ー ル が 独 立 性 を 持 っ て い る こ と で あ る 。つ ま り 、 ル ー ル は 、 他 の ル ー ル と は 無 関 係 に 、 正 当 性 と 高 速 性 を 議 論 で き る 。 そ し て 、 そ の よ う な ル ー ル を 集 積 す る こ と に よ っ て 、 正 当 で 高 速 な プ ロ グ ラ ム を 少 し ず つ 作 る こ と が 可 能 で あ る 。 正 当 で 高 速 な プ ロ グ ラ ム を 作 る と い う 難 し い 作 業 を 、 正 当 で 高 速 な ル ー ル を つ く る と い う 、 よ り 簡 単 な 問 題 に 分 解 で き る と こ ろ が 、ET プ ロ グ ラ ミ ン グ の 卓 越 し た 点 で あ る 。 こ の 性 質 を 「 分 解 可 能 性 」 と 呼 ぶ 。
他 の プ ロ グ ラ ミ ン グ 言 語 に は 、こ れ ほ ど の 分 解 可 能 性 は な く 、例 え ば C 言 語 な ど の 手 続 き 型 言 語 は 、 文 と 文 が 強 く 依 存 し て お り 、 独 立 し た 文 の 集 合 と し て プ ロ グ ラ ム を 見 る こ と は 、 多 く の 場 合 に お い て 困 難 な こ と で あ る 。 文 は 正 当 性 と 高 速 性 を 他 と 独 立 に で き る よ う な 単 位 で は な い 。 関 数 レ ベ ル の ま と ま り が 意 味 的 に あ る 程 度 の 独 立 な 性 質 を 持 っ て い る だ け で あ る が 、 正 当 性 が は っ き り サ ポ ー ト さ れ て い る 訳 で は な い 。 そ れ に 、 ル ー ル の レ ベ ル よ り か な り 大 き な ま と ま り で し か な い 。 分 解 可 能 性 が 低 い こ と は 、 頭 の 中 で 全 体 を 組 み 立 て る こ と の で き る よ う な 小 さ な プ ロ グ ラ ム の 場 合 は あ ま り 問 題 に な ら な い が 、 高 度 で 複 雑 な プ ロ グ ラ ム を 作 る 場 合 に は 、 大 き な 困 難 を も た ら す 。
2 . 具 体 的 な 問 題 に 基 づ い て 必 要 な ル ー ル の 追 加 を 繰 り 返 す 方 法
ル ー ル を 1つ ず つ 作 っ て 行 く と い う 基 本 方 針 を 立 て た と し て も 、ど ん な ル ー ル が 必 要 な の か を 知 る 手 が か り が な け れ ば 、 必 要 な ル ー ル を 的 確 に 増 や し て い く こ と は 難 し い 。 そ こ で 有 力 な 方 法 を 1 つ 与 え る 。 解 き た い 質 問 を 具 体 的 に 設 定 し 、 そ れ が 表 現 す る 問 題 を ans 節 で 表 現 し て 、 そ の 問 題 を 簡 単 化 す る た め の ル ー ル を 追 加 し て い く 方 法 で あ る 。
も う 少 し 詳 し く 説 明 す る と 、 ま ず 問 題(ans 節)に 適 用 で き る ル ー ル を 提 案 し 、 そ の ル ー ル を 用 い て 可 能 な 限 り 問 題 を 変 形 し 、 そ れ 以 上 ル ー ル が 適 用 で き な い と こ ろ ま で 変 形 し て 新 し い 問 題 を 得 る 。 そ し て 、 そ の 問 題 を 簡 単 化 す る ル ー ル を 同 様 な 方 法 で 考 え る 。 こ の 手 続 き を 繰 り 返 し て 、ans 節 の ボ デ ィ に ア ト ム が な く な る ま で 問 題 を 簡 単 化 す る 。 こ の 過 程 で 得 ら れ る す べ て の ル ー ル の 集 合 が 可 能 な プ ロ グ ラ ム の 有 力 な 候 補 と な る 。
各 時 点 で 採 用 す る ル ー ル を 一 般 性 の あ る も の に す れ ば 、 最 後 に 得 ら れ る ル ー ル 集 合 は 、
は じ め に 取 り 上 げ た 質 問 だ け で な く 、 あ る 範 囲 の 質 問 に 答 え る こ と が で き 、 一 般 性 を 備 え た も の に な る 。 も し 1つ の 質 問 に 答 え る た め に 提 案 さ れ た ル ー ル だ け で 、 す べ て の 質 問 を 処 理 で き な い と き は 、 別 の 具 体 的 な 質 問 を 新 た に 選 ん で 、 そ れ に 対 応 す る 問 題 を 簡 単 化 す る た め の 別 の ル ー ル を み つ け だ す 。 質 問 を 必 要 な だ け 使 え ば 、 す べ て の ル ー ル を 見 い だ す こ と が で き る で あ ろ う 。
3 . プ ロ グ ラ ム を 作 成 す る 例
リ ス ト の 最 後 の 要 素 を 求 め る プ ロ グ ラ ム の 作 成 を 題 材 に 、 適 切 な ル ー ル を 蓄 積 す る 過 程 が ど の よ う な も の か を 説 明 し よ う 。
最 初 の 質 問 と し て 、 リ ス ト(1 2 3 4 5)の 最 後 の 要 素 を 求 め る 質 問 を 採 用 す る 。
与 え ら れ た 質 問 に 答 え る に は 、 質 問 か ら 作 ら れ た 節 ( こ こ で は ans 節 ) を ル ー ル で 変 形 す る 。 こ の 質 問 を 、(last (1 2 3 4 5) *Y) と 書 く こ と に す る 。 こ の 場 合 、
(ans *Y) <-- (last (1 2 3 4 5) *Y).
と い う ans節 を 考 え れ ば よ い 。こ の 節 を 変 換 し て 、ボ デ ィ の ア ト ム が な く な る ま で ル ー ル で 変 形 し た い 。 そ の た め に 必 要 な す べ て の ル ー ル を み つ け た い 。
そ の た め に は 、 こ の ans 節
(ans *Y) <-- (last (1 2 3 4 5) *Y).
自 身 を 簡 単 化 す る ル ー ル を 考 え な け れ ば な ら な い 。(last (1 2 3 4 5) *Y) と い う ア ト ム は 、 リ ス ト(1 2 3 4 5)の 最 後 の 要 素 が*Y で あ る と 述 べ て い る 。 そ こ で 、 こ の 問 題 の 条 件 が も っ と 簡 単 に 書 け な い だ ろ う か を 考 え る 。 求 め る も の が 最 後 の 要 素 で あ る か ら 、 リ ス ト の 先 頭 部 分 は 答 え に 関 係 が な い だ ろ う と い う 考 え が 、仮 に 頭 に 浮 か ん だ と し よ う 。そ し て 、
「(1 2 3 4 5) の 最 後 の 要 素 は 、 そ の 最 初 の 要 素 を 除 い た 残 り の リ ス ト (2 3 4 5) の 最 後 の 要 素 に 等 し い 」 と 気 づ い た と す る 。 こ れ は 与 え ら れ た 特 定 の リ ス ト に 関 す る 問 題 の 簡 単 化 で あ る が 、 さ ら に 一 般 的 に 言 う と 、 ど の よ う な 簡 単 化 に な る だ ろ う か と 考 え て み る 。 そ し て 、 リ ス ト の 先 頭 要 素 を 取 り 除 く 簡 単 化 を 思 い つ く 。 こ こ で 、 次 の ル ー ル を 思 い つ い た と し よ う 。
(last (*A|*X) *Y) --> (last *X *Y).
で は 、実 際 に 上 記 の ル ー ル を 現 在 の ans節 に 適 用 し て み よ う 。す る と ans節 は 次 の 節 に 変 換 さ れ る こ と が わ か る 。
(ans *Y) <-- (last (2 3 4 5) *Y).
次 に 、こ の ans 節 を さ ら に 簡 単 化 す る こ と を 考 え よ う 。今 度 は 新 し い ル ー ル を 追 加 す る 必 要 は な く 、 先 程 の ル ー ル が 繰 り 返 し 利 用 で き る の で 、
(ans *Y) <-- (last (3 4 5) *Y).
と い う ans節 が 得 ら れ る 。 上 記 の ル ー ル の 適 用 は 、 さ ら に 続 け る こ と が で き る の で 、 適 用 で き る 限 り 操 作 を 繰 り 返 す 。
lastの ル ー ル に よ る ans 節 の 変 更 の 過 程 を 、 最 初 か ら す べ て 書 く と 次 の よ う に な る 。
(ans *Y) <-- (last (1 2 3 4 5) *Y).
(ans *Y) <-- (last (2 3 4 5) *Y).
(ans *Y) <-- (last (3 4 5) *Y).
(ans *Y) <-- (last (4 5) *Y).
(ans *Y) <-- (last (5) *Y).
(ans *Y) <-- (last () *Y).
最 後 の ans 節 に は ル ー ル の 適 用 は で き な の で 、 こ の ル ー ル に よ る 変 更 は 終 わ る 。 こ こ で 、 一 連 の ans節 を 観 察 し よ う 。 例 え ば 、
(ans *Y) <-- (last (4 5) *Y).
を 見 る と 、 こ れ は 元 の 問 題 を 正 し く 変 換 し た も の と 考 え る こ と が で き る 。(last (4 5) *Y) を 満 た す*Y は 5で あ り 、最 初 の 問 題 の 答 え 5 と 一 致 す る か ら で あ る 。し か し 、最 後 の ans 節 を み る と 、空 リ ス ト( )に は 最 後 の 要 素 は 存 在 し な い た め に 、*Y は 求 め る こ と が で き な い 。 つ ま り 最 後 の ans 節 か ら は 正 し い 解 は 求 ま ら な い 。
こ の 誤 っ た 結 果 の 原 因 は 、 先 程 の ル ー ル
(last (*A|*X) *Y) --> (last *X *Y).
に あ る 。 な ぜ な ら 、 こ の ル ー ル し か 適 用 し て い な い か ら で あ る 。 こ の ル ー ル は 、
(ans *Y) <-- (last (5) *Y). … 答 え は 5
を
(ans *Y) <-- (last () *Y). … 答 え は な い
に 変 更 し た が 、 こ れ は 誤 り で あ る 。 我 々 は 最 後 の 要 素 に 関 係 の な い リ ス ト の 要 素 を 次 々 に 取 り 除 い て き た 。 し か し 、 リ ス ト の 長 さ が 短 く な っ た ら 、 注 意 深 く な る 必 要 が あ る 。 1 つ
し か 要 素 の な い リ ス ト の 場 合 は 、 そ の 要 素 が 最 後 の 要 素 そ の も の で あ っ て 、 最 後 の 要 素 に 関 係 し な い 要 素 は 存 在 し な い 。 し た が っ て 、 関 係 の な い 要 素 を リ ス ト か ら 取 り 除 く こ と は で き な い 。
で は 、 先 程 の ル ー ル を ど う 修 正 す れ ば 正 し く な る の だ ろ う か 。 多 く の 場 合 、 リ ス ト の 最 初 の 要 素 を 取 り 除 く 変 換 は 正 し い 。 し か し 、 リ ス ト の 要 素 が 1個 に な っ た ら 、 こ れ 以 上 リ ス ト の 長 さ を 短 く し て は な ら な い 。 よ っ て 、 先 程 の ル ー ル の 適 用 条 件 を 制 限 し て や れ ば よ い と 思 わ れ る 。 そ こ で 例 え ば 、 先 程 の ル ー ル に 条 件 部 を 次 の よ う に 追 加 す る 。
(last (*A|*X) *Y), { (not (= *X ())) } --> (last *X *Y).
つ ま り 、 リ ス ト の 最 初 の 要 素 を 取 り 除 い た 残 り が 空 リ ス ト で な け れ ば 、 ル ー ル が 適 用 で き る よ う に す る 。 こ う す れ ば 、
(ans *Y) <-- (last (5) *Y).
に は ル ー ル は 適 用 さ れ な い の で 、 誤 っ た 答 を 求 め る と い う 問 題 は な く な る 。 し か し 、 も っ と エ レ ガ ン ト な 方 法 が あ る 。
(*A|*X) --> *X
と い う 簡 単 化 の パ タ ー ン の か わ り に 、
(*A *B|*X) --> (B|*X)
を 使 う の で あ る 。
こ れ ら の パ タ ー ン は 、最 初 の 要 素*A を 取 り 除 く 機 能 は 同 じ で あ る が 、適 用 で き る 範 囲 が 異 な る 。(*A *B|*X)は 、 長 さ が 2以 上 の リ ス ト に し か 適 用 さ れ ず 、 こ の 簡 単 化 パ タ ー ン を 使 え ば 、 次 の ル ー ル が 得 ら れ る 。
(last (*A *B|*X) *Y) --> (last (B|*X) *Y).
こ の ル ー ル を 採 用 し て 、 質 問 の ans節 を 次 々 と 変 更 し て い く 。 (ans *Y) <-- (last (1 2 3 4 5) *Y).
(ans *Y) <-- (last (2 3 4 5) *Y).
(ans *Y) <-- (last (3 4 5) *Y).
(ans *Y) <-- (last (4 5) *Y).
(ans *Y) <-- (last (5) *Y).
さ て 、最 後 の ans 節 は ど う 変 更 す れ ば よ い だ ろ う か 。ど ん な ル ー ル を 追 加 す れ ば よ い だ ろ う か 。 こ の 場 合 、 リ ス ト(5)の 最 後 の 要 素 は 5 で あ る こ と が 簡 単 に 思 い つ く で あ ろ う 。 一 般 に 、 長 さ 1の リ ス ト (*A) の 最 後 の 要 素 は *A に な る 。 こ の 考 え を も と に し て 、
(last (*A) *Y) --> (= *A *Y).
を 思 い つ く こ と が で き よ う 。 こ れ を 先 程 の ans 節 に 適 用 し て 、
(ans *Y) <-- (last (5) *Y).
(ans 5)<--.
を 得 る 。 そ し て 答 え 5 が 求 ま る 。 以 上 よ り 、 採 用 し た 質 問
(ans *Y) <-- (last (1 2 3 4 5) *Y).
は 、 2 つ の ル ー ル
(last (*A *B|*X) Y) --> (last (*B|*X) *Y).
(last (*A) *Y) --> (= *A *Y).
に よ っ て 解 け る こ と が 分 か る 。
実 際 は 、 こ の 2つ の ル ー ル が あ れ ば 、(1 2 3 4 5) だ け で な く 、 す べ て の リ ス ト の 最 後 の 要 素 を 求 め る こ と が で き る 。 つ ま り 、 最 後 の 要 素 を 求 め る 一 般 的 な プ ロ グ ラ ム が 得 ら れ た こ と に な る 。
4 . う ま く プ ロ グ ラ ム を 作 る た め に
プ ロ グ ラ ム を 作 る た め に 考 慮 す べ き 点 を あ げ る 。 こ れ ら は 絶 対 に 満 た さ ね ば な ら な い と い う 強 い 条 件 で は な い が 、 そ れ を 尊 重 す る こ と に よ っ て 、 自 然 と 良 い プ ロ グ ラ ム を 作 る 可 能 性 を 高 く で き る 。
(1) 排 反 性
互 い の ル ー ル は 、 適 用 条 件 が 重 複 し な い よ う に 記 述 す る の が 基 本 で あ る 。 例 え ば リ ス ト を 処 理 す る 場 合 を 考 え る 。リ ス ト 処 理 で よ く 用 い る パ タ ー ン と し て 、空 リ ス ト( )、長 さ が 1 の リ ス ト(*A)、 長 さ が 1 以 上 の リ ス ト(*A| *X)、 長 さ が 2 以 上 の リ ス ト(*A *B|*X)な ど が あ る 。 た と え ば 、 空 リ ス ト( )と 長 さ が 1 以 上 の リ ス ト(*A| *X)を そ れ ぞ れ の ル ー ル に 用 い て 2 つ の ル ー ル を 書 け ば 、 リ ス ト の パ タ ー ン は 排 反 で あ り 、 適 用 条 件 は 重 複 し な い 。
そ の 他 に も 、
空 リ ス ト( )、
長 さ が 1の リ ス ト(*A)、
長 さ が 2以 上 の リ ス ト(*A *B|*X)
な ど の 組 み 合 わ せ が 排 反 性 の 基 準 か ら 望 ま し い と 考 え ら れ る 。
数 を 対 象 と し た 問 題 で は 、0 の 場 合 と 正 の 場 合 と に 分 け た り 、1 の 場 合 と 2 以 上 の 場 合 と に 分 け た り す れ ば よ い 。 例 え ば 階 乗 の 計 算 の 場 合 に は 、0 の 場 合 と 正 の 場 合 と に 分 け る こ と が 多 い 。0 の 階 乗 を 考 え な く て よ い 場 合 に は 、1 の 場 合 と 2 以 上 の 場 合 と に 分 け る こ と も あ る 。 フ ィ ボ ナ ッ チ 数 列 の 計 算 の 場 合 に は 、1 の 場 合 と 、2 の 場 合 と 、 そ れ 以 上 の 場 合 の 3通 り に 分 け る こ と が 多 い 。
た だ し 、実 際 の D ル ー ル の プ ロ グ ラ ム で は 、各 ル ー ル の 排 反 性 が な い こ と が あ る 。例 え ば 、 階 乗 の 計 算 の 場 合 に は 、0 の 場 合 と 正 の 場 合 と の 2 つ の ル ー ル を 書 く か わ り に 、0 の 場 合 の ル ー ル を 最 初 に 書 き 、 次 に 「 無 条 件 」 の 場 合 の ル ー ル を 書 く 。 す な わ ち 2 番 目 の ル ー ル に あ る べ き 、 正 の 整 数 と い う 条 件 を 省 略 す る 。 こ の よ う に 記 述 し た と し て も 、 実 際 の 計 算 で は 同 じ 計 算 結 果 が 得 ら れ る 。 な ぜ な ら 、0 以 上 の 整 数 が 与 え ら れ る と い う 条 件 の も と で は 、0 で な い な ら ば 正 の 整 数 し か 存 在 し な い か ら で あ る 。 そ し て 、 計 算 コ ス ト は 減 少 す る 。 こ れ は 正 の 整 数 と い う 条 件 を 検 査 す る 時 間 が 節 約 で き る か ら で あ る 。
こ の こ と は 排 反 性 が 重 要 で な い こ と を 意 味 す る も の で は な い 。 ル ー ル を 書 く 場 合 、 排 反 性 を 常 に 意 識 す べ き で あ る 。 し か し 、 場 合 に 応 じ て 適 用 順 序 な ど を 考 慮 す る な ど し て 、 効 率 的 な プ ロ グ ラ ム に す る こ と は 構 わ な い 。
(2) 汎 用 性
ル ー ル の 適 用 条 件 は 、 不 必 要 に 範 囲 を 限 定 し て は な ら な い 。 例 え ば 、 階 乗 を 求 め る プ ロ グ ラ ム で 、0の 場 合 、1の 場 合 、2の 場 合 、… と 特 定 の 条 件 の み に 適 用 で き る ル ー ル を 列 挙 す る こ と は 可 能 で あ る 。 し か し 、1 以 上 の 場 合 を す べ て ま と め て 1 つ の ル ー ル で 計 算 す る 方 法 が 好 ま し い 。 ル ー ル を 少 な く す れ ば 、 記 述 が 簡 単 で あ り 、 実 行 時 に 使 う プ ロ グ ラ ム の サ イ ズ も 小 さ く な る 。 条 件 の チ ェ ッ ク に 要 す る 計 算 時 間 も 節 約 で き る 。 ル ー ル は な る べ く 多 く の 場 合 に 適 用 で き る よ う に 記 述 す る こ と が 通 常 は 望 ま し い 。
(3) ボ デ ィ ア ト ム の 順 序 と 末 尾 再 帰
ル ー ル に お け る ボ デ ィ ア ト ム の 計 算 順 序 に は 、あ る 程 度 の 任 意 性 が あ る の が 普 通 で あ る 。 例 え ば 、= の ア ト ム な ど は 、い つ で も 計 算 で き る の で 順 序 を 変 更 し や す い 。一 方 、:= な ど の 計 算 は 、 計 算 す べ き 式 の 中 の 値 が 実 行 時 に 確 定 し て い な け れ ば な ら な い た め 、 計 算 可 能 な 位 置 は 限 ら れ た も の に な る 。
ル ー ル の ボ デ ィ に 出 現 す る ア ト ム で 、 ヘ ッ ド ア ト ム の 述 語 と 同 じ 述 語 を 持 つ ア ト ム を 再 帰 ア ト ム と 呼 ぶ 。 ル ー ル は ユ ー ザ 定 義 の ア ト ム を 処 理 す る も の だ け を 考 え て い る の で 、 再 帰 ア ト ム は 、 組 み 込 み 述 語 の ア ト ム で は な く 、 ユ ー ザ 定 義 の ア ト ム で あ る 。 再 帰 ア ト ム を
持 つ ル ー ル を 再 帰 ル ー ル と 呼 ぶ 。
ル ー ル に お け る ボ デ ィ ア ト ム の 順 序 は 、 負 荷 の 小 さ い 計 算 ほ ど 優 先 し て 行 う の が 好 ま し い 。 す な わ ち 、
① 組 み 込 み ア ト ム 、
② ユ ー ザ 定 義 ア ト ム で 、 再 帰 ア ト ム で な い も の 、
③ 再 帰 ア ト ム
の 順 に な る 。 た だ し 、 引 数 が 確 定 し な い こ と が 原 因 で 計 算 が エ ラ ー と な ら な い よ う に す る た め に 、 こ の 順 序 に 従 わ な い 場 合 も あ る 。 そ の 場 合 に お い て も 、 部 分 的 に は こ の 順 序 を 尊 重 す べ き こ と に 変 わ り は な い 。
再 帰 ル ー ル を 書 く 場 合 、 再 帰 ア ト ム は な る べ く 後 方 に 書 く べ き で あ る 。 こ れ は 上 記 の 望 ま し い 順 序 か ら 出 て く る 結 論 で あ る 。 再 帰 ア ト ム が た だ 1つ あ る ル ー ル で 、 再 帰 ア ト ム が ル ー ル の ボ デ ィ の 最 後 に 出 現 す る と き 、 そ の ル ー ル は末 尾 再 帰で あ る と 言 う 。 こ の 言 葉 を 使 っ て 言 え ば 、 再 帰 ル ー ル は 可 能 な 限 り 末 尾 再 帰 ル ー ル に す べ き で あ る 。 こ れ が 特 に 重 要 で あ る と い う 理 由 が あ る 。 末 尾 再 帰 ル ー ル は 、 他 の 再 帰 ル ー ル に 比 べ て 、 計 算 コ ス ト を 著 し く 節 約 で き 、 時 間 的 に も 空 間 的 に も 効 率 が よ い か ら で あ る 。 そ れ ら の ル ー ル で 計 算 を 行 う 場 合 の ans 節 の サ イ ズ を 比 較 す れ ば 、 こ れ は す ぐ に 理 解 で き る だ ろ う 。
(4) 変 数 名 の 工 夫
2 つ の 異 な る ル ー ル に 同 一 の 変 数 が 存 在 し て も 、 計 算 す る 場 合 に は 、 そ れ ら の 間 に は 何 の 関 係 も な い も の と し て 扱 わ れ る 。 変 数 の 有 効 範 囲 は 、1 つ の ル ー ル の 中 だ け で あ る 。 ま た 、変 数 名 に つ い て も 、同 一 性 以 外 は 何 も 意 味 が な い 。た と え ば 、*goodと*max を 使 っ て 書 い た ル ー ル を 、*bad と*min に そ れ ぞ れ 書 き 換 え て も 、計 算 上 は ま っ た く 同 じ ル ー ル と し て 機 能 す る 。 変 数 名 の 工 夫 は 、 プ ロ グ ラ ミ ン グ の 大 部 分 に お い て 、 ユ ー ザ の 書 き や す さ 、 読 み や す さ だ け の た め に あ る 。
変 数 名 の 工 夫 は 、 人 間 が プ ロ グ ラ ミ ン グ す る 上 で 、 か な り 重 要 で あ る 。 変 数 に は 、 そ れ に 適 合 し た 名 前 を つ け る と 、 プ ロ グ ラ ム を 読 み 書 き す る の に 便 利 で あ る 。 意 味 を 考 慮 し て 変 数 名 を 決 め る 場 合 に は 、 そ れ ぞ れ の 対 象 領 域 で よ く 考 え て 決 め る と し か 言 え な い が 、 も う 少 し 一 般 的 な ヒ ン ト を 挙 げ る 。第 一 に 、変 数 の 長 さ は 長 す ぎ な い よ う に す る こ と で あ る 。 も ち ろ ん 、 こ れ は 書 く 人 の 好 み に も 依 存 す る 。 第 二 に 、 変 数 が 表 す 対 象 の 型 に よ っ て 、 変 数 名 の 使 い 方 を 決 め て お く こ と で あ る 。例 え ば 、リ ス ト と そ の 要 素 の 場 合 、リ ス ト に は*X、
*Y、*Z、*W、 な ど を 使 い 、 リ ス ト の 要 素 に は 、*A、*B、*C、 な ど を 使 っ て 、 リ ス ト と 要 素 を 区 別 す る こ と が 推 奨 さ れ る 。