K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please add long comment :).

_30(Wed)

http://slashdot.jp/comments.pl?sid=412213

うーん.とりあえずコミュニケーション能力については,自分もダメだと思う.


twitter で盛り上がっている話について,ちょっと返事を書いてみる.

09:39:05 kinaba: スクリプト言語の速度の差は、基本的には実装の練度と実装ストラテジの差でしかないという感覚があるんだけどどうなんだろな。

仕様による実装コストの差,とかそんな感じかと.

alohakun: スクリプト言語の速度の差は(本質的には)言語仕様だと思ってます.速度が必要な場面でも,不要な機能に引っ張られて速度が低下してしまうってのが弱点かなと.その点 C++ にはゼロオーバーヘッドルールが入ってる

09:53:00 alohakun: プログラム変換とか部分評価というのは,同じ表現のレベルでの最適化だから,スクリプト言語に対してはあまり意味が無いと思う.どのみち低レベルなアルゴリズムを効率的に表現できないのだから.まぁ,そんなのは定数倍と言ってしまえばそれまでだけど

そんなことはない.ちなみに,低レベルなアルゴリズムとはなんだろ.

09:55:21 kinaba: @alohakun 本質的な速度差をもたらすほどの言語仕様の差が例えば Ruby と Perl と Python と PHP と JavaScript と Lua にあるかなあ…という。言語仕様的には JavaScript が Lua より遅い理由は本当に一つも思いつか ...

そう思う.ただ,JS と Lua の差は,実はよくわかってないけど,Lua のほうがなんとなく速そう.

10:03:57 alohakun: 同じレベルのアルゴリズムとデータ構造ならば,VMで実行するのとネイティブコード実行,たいして変わらないと思う.VMのオーバーヘッドなんて,今のコンピュータだと無視できる.なので,VM で実行してるスクリプト言語が遅いならば,それをそのままネイティブコードに落としても,速度は同じ

「VM での実行」とはなんぞや,という話になると思う.今時ネイティブに落とさない VM なんてないよねー,という.

10:06:47 kmizu: @kinaba しかし、動的な機能 (e.g. クラス再定義 ) をどの程度許可するかという要件は最適化のしやすさに結構影響及ぼしそうな気がするんですが、どうなんでしょ

「最適化のしやすさ」== 実装コストの違い,なので,「出来る・出来ない」という話とは違う.

10:12:32 s1061123: @alohakun どっかのペーパーでもそんなこと書いていた気がします。その時はVMとネイティブの比較でもVMの方がキャッシュに乗りやすい場合もあるとか適当な話でしたが。

そういう点はあると思う.

kinaba: @kmizu 毎回再定義フラグをチェックする実装じゃなくて、再定義が起きた瞬間に全 InstructionSequence の加算命令を普通の加算から send するヤツに書き換える実装などとするとどうなるか妄想してみたり。

妄想ではなくて,ふつーにある話だと思う.

10:49:01 kinaba: @kmizu です。 pay-as-you-go 。 Fixnum の再定義というレアケースのために全体が重くなるよりは、 Fixnum の再定義自体を物凄く重い処理にしてでも全体を軽くすると言う選択肢。 VM 全体を遅くせず自己書き換えを許せるという成立するかどうかわ ...

まぁ,ふつうそうですよね.

これでおわりか.

  1. 「実行時間のコスト」(曖昧だな,これは)
  2. 「実装コスト」
  3. 「実行時再定義コスト」
  4. 「ワーキングセット(実行時メモリ消費量)のコスト」
  5. 「VM/ネイティブ命令長によるコスト」
  6. 「処理系メンテナンスのコスト」
  7. 「移植のコスト(移植性)」
  8. 「拡張にかかるコスト(拡張性)」
  9. 「配布のコスト」
  10. 「その言語でのプログラムの記述のコスト」

あたりがトレードオフになるでしょうか.思いつくものを色々.

Ruby/Rails は最後のに凄く重きを置いてる.

学会とかだと,「実装コスト」ってあんまり高く見られない,という点があって,萎えることもあるんだけど.でも,認めてくれる人は認めてくれる.


番号とか,短い記号とかを覚えるのが壊滅的に苦手なんだけど,srfi-N とかで会話する人たちは凄いというか,なんというか.

最近,やっと IEEE 1394 を覚えられるようになった.でも,RFC の番号とかは全然覚えられない.


YARV のバイトコードについて学生さんに説明した.どれくらいわかってもらったんだろうか.


好きなだけ長いコメントをどうぞ。

お名前


back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $