[前][次][番号順一覧][スレッド一覧][生データ]

langsmith:272

From: Shiro Kawai <shiro lava.net>
Date: Sun, 28 Aug 2005 01:58:56 -1000 (HST)
Subject: [langsmith:272] Re: perlのuse

セマンティクスに関する議論です。

その場にいなかったので外しているかもしれませんが、
一般に、コンパイルと実行のフェーズが分かれる可能性
がある場合、外部プログラムのロードがどちらの時点で
行われるかが明示されていた方が有難いことがあります。

そのプログラムをロードすることによってコンパイルの
セマンティクスに影響が出る場合、コンパイル時点で
ファイルをロードしたいでしょう。一方、実行時の情報に
よってロードするファイルを切替えたいとか、ロードする
かしないかを選択したいとかいう場合は実行時にロード
せざるを得ません。後者の場合、外部プログラムのロードは
コンパイルのセマンティクスに影響を与えられない、という
ことになります。

(Lispのマクロはコンパイルのセマンティクスに影響を与える
典型的な例ですが、それ以外にも例えばプリミティブオペレータが
再定義されたかどうかでコンパイル結果を変えるとか、関数を
インライン展開するとか、未定義の変数の使用に警告を出すとか、
色々あります。最適化とかロバストなエラーチェックを指向すると、
なるべくコンパイル時点で多くの情報を得たくなります)

Perlのuseの場合、プログラム本体実行前に確実にその
モジュールが読まれていることが保証されるわけですよね。
したがってコンパイル時ロードとみなして問題ないと思います。
Rubyのrequireは実行時に作用しますね。


もうひとつ、Perlのuseはファイルのロードだけでなく名前空間
にも作用しますが、Rubyの場合名前空間は別の機構で管理して
いるのでここでは関係ないかと思います。

(ちなみにGaucheのuseはPerlと同じ、require+importで
コンパイル時の作用。loadが実行時の作用です)

--shiro






--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       270 2005-08-28 19:59 [ko1 atdot.net       ] perlのuse                               
       271 2005-08-28 20:43 ┣[matz ruby-lang.org  ]                                       
       273 2005-08-28 21:06 ┃┣[hyuki hyuki.com     ]                                     
       275 2005-08-28 22:00 ┃┃┗[matz ruby-lang.org  ]                                   
       280 2005-08-29 02:18 ┃┃ ┗[ko1 atdot.net       ]                                 
       288 2005-08-29 12:00 ┃┃  ┗[ko1 atdot.net       ]                               
       289 2005-08-30 00:28 ┃┃   ┗[matz ruby-lang.org  ]                             
       274 2005-08-28 21:41 ┃┣[matz ruby-lang.org  ]                                     
       283 2005-08-29 02:29 ┃┃┗[ko1 atdot.net       ]                                   
       286 2005-08-29 06:52 ┃┃ ┗[matz ruby-lang.org  ]                                 
       282 2005-08-29 02:25 ┃┗[ko1 atdot.net       ]                                     
       287 2005-08-29 06:55 ┃ ┗[matz ruby-lang.org  ]                                   
->     272 2005-08-28 20:58 ┗[shiro lava.net      ]                                       
       276 2005-08-28 22:23  ┣[dankogai dan.co.jp  ]                                     
       277 2005-08-28 23:03  ┃┣[matz ruby-lang.org  ]                                   
       278 2005-08-28 23:20  ┃┣[shyouhei ice.uec.ac.]                                   
       279 2005-08-29 01:53  ┃┃┗[dankogai dan.co.jp  ]                                 
       281 2005-08-29 02:21  ┃┗[ko1 atdot.net       ]                                   
       284 2005-08-29 02:39  ┗[ko1 atdot.net       ]                                     
       285 2005-08-29 04:57   ┗[shiro lava.net      ]