午前6時になるところ

id:hagihara:20041104より、何ヶ月か前に僕が書いた記事へのトラバがあったんで、ちょっと反応してみます。
Rubyに関する記事なわけですが、スクリプト言語ってなんじゃろな、と思うわけです。Perlスクリプト言語だし、PHPスクリプト言語ですね。で、もちろんRubyもそうだし、JavaScriptもそうなのかな。で、CとかJavaは違うわけだ。
http://e-words.jp/w/E382B9E382AFE383AAE38397E38388E8A880E8AA9E.html
http://www.su-jine.com/sujine_seo_column0017.html
これらを見る限り、スクリプト言語インタプリタ言語をごっちゃにしてるような気がするのは気のせいだろうか。例えば、mod_perlを使う場合だが、設定にもよるけれどもこれは実際にはコンパイルされている。その結果がキャッシュされているわけで・・・・
そうでなくてもperl-ccなんかを使えば、コンパイルできるのだから、ということになるわけだが、そうするとコンパイルすること”も”できる優れた言語になってしまった時点で、スクリプト言語から追い出されてしまうような感覚がある。
どこだったか、「作者がスクリプト言語と呼ぶもの」がスクリプト言語であるという定義をした人がいたが、それもあまりに不正確な気がする。例えばJavaスクリプト言語と主張されても、非常に困るわけだ。
個人的に定義をするなら、「evalが実装されている言語」というものはどうだろうか。すなわち、コンパイルが出来ても出来なくても構わないが、例えコンパイルをした場合でも、動的に生成されたソースコードを解釈することが出来るものこそがスクリプト言語である、と言えないだろうか。
evalは非常に使い勝手が難しい関数ではある。バグの原因、セキュリティホールの原因として、槍玉に挙げられることも少なくない。だが、それでもPerlなどの言語はそれを実装し続けている。なぜだろうか。
そしてまた、Javaはその硬い実装がゆえにevalを実装することが出来ない。もちろん、コンパイルして中間コードを生成するというその性質ゆえ、仕方のないことではある。だがしかし、それによって失ったものはやはりpricelessではないだろうか。