2008年2月1日金曜日

ローカル変数とスコープ

 ALGOL系言語のコンパイラを学生時代に 卒論として作ったが、苦労したのが変数のスコープである.ALGOL60を参考にしながらスタック管理でブロック対応したが、満足できなかった.
 Gries先生の本(Compiler construction )を読んで by reference 対応を 考察したときに 評価実態 と言う 概念を入れて 評価単位内 = スコープ として 修正した.
 理論モデル上では、再帰的呼び出しの 不動点の停止性を 見つけられずに 苦労した.
 Rubyを勉強していて ローカル変数 の 怖さを 覚える.スコープ保証がないのは便利ではないはずと思うのは私だけなのだろうか?
 言語設計哲学が 違うのが ベースにあると思えるので 仕方のないことだが.
 確かホーア(Sir Charles Antony Richard Hoare)先生だったと思うが global Variable is considered harmful と言っていたと思う

0 件のコメント: