2001-07-02 [長年日記]
λ. 新・闘わないプログラマ No.185 | 指し示す
配列におけるポインタ生成規則って、その考え方自体はなかなか面白いと思うし、C言語のような位置付けの言語としては便利だと思うわけで、もしこの規則が無かったら(配列もANSI Cの構造体のような感じだったら)、「&」演算子を多用しないといけないし、結構ごちゃごちゃするかな、などと思ったりもするわけです。
とあるけど、それを実際にやってるのがPascalですな。でも、それほどゴチャゴチャすることは無いと思う。むしろ、これでゴチャゴチャするとしたら、そのプログラムの方が問題のような気がする。
var a: array[0..9] of integer; p: ^array[0..9] of integer; q: ^integer; begin p := @a; q := @(a[0]); a[0] := 100; p^[0] := 100; q^ := 100; end
λ. 似た言語であるCとPascalのこの姿勢の違いは面白いと思う。ちなみにPascalは、ポインタに関しても結構ストイックで、ポインタに対する加減算は出来ないし、大小の比較も出来なかったりする。(Delphiでは「Inc(p, i);」とか出来たりするけど。)
λ. 記号処理プログラミングのミニプロ
Rubyで、Lispの簡単な処理系を書いてみようと思う。一度、オブジェクト指向言語で簡単な処理系を書いてみたかったのだ。全然自信無いんだけどね。まあ、だめそうだったら、inferior-script-fuとかいって、1024個めくらいの車輪に逃げよう。
λ. コンパイラ構成論
ところで、コンパイラ構成論の講義が今年の秋学期には「事情により」開講されないそうだ。超ショック。でも、まあ、脱線ばかりしてないで総合政策の道へ戻れという天の采配なの…かも?