Lisp Scheme Part35
■ このスレッドは過去ログ倉庫に格納されています
0494はちみつ餃子 ◆8X2XSCHEME
2013/01/31(木) 16:06:11.22結果的にコンパイラが最適化の工夫をする余地が大きくなっている。 (コンパイル時にわかる情報が多い。)
例えば >>480 でも指摘されているように、破壊されない変数が多くて、しかも破壊されない変数がどれか判定できるならば、
実行時の関数呼出しの際に変数をいちいち見なくてもコンパイル時に定数を埋込むようにできる。
メモリアクセスがひとつ省略されるわけだから当然速度は上がる。
R6RS の仕様ならば実行途中でしょーもない unbound variable なんてエラーで止まるなんてこともない。
(そういうエラーは理屈の上ではコンパイル時に発見できるので。 とは言え処理系によっては実行時まで発見されないようなものもあるけど。)
一方で、 Lisp は「動的」「柔軟」なところが利点だと考えている人もいて、静的な方向に力を入れるのは Lisp 的じゃないという反発はある。
この記事でそういう事情に触れている。
http://blog.practical-scheme.net/shiro/20121227b-lisp-hare-tortoise
> Schemeの最近の仕様は静的側に寄っていて、
> 往年のなんでもいじれるLispが好きな 人々には不評なんだけど、
> コンパイラ作者にとってはそれなりに納得のゆく選択であることが多い。
■ このスレッドは過去ログ倉庫に格納されています