2008年2月1日金曜日

変数スコープ と ブロック (Ruby)

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

0 件のコメント: