«前の日記(2008年03月11日) 最新 次の日記(2008年03月13日)» 編集

Matzにっき


2008年03月12日 [長年日記]

_ 取材

東京にいるからと取材を受ける。今週も取材ウィークが続くのか。

ビジネスとRubyのようなテーマで。 主にRubyアソシエーション理事長としての「帽子」を期待されてのインタビュー。 十分に期待に応えられただろうか。

_ [言語] 動的型の言語でも以下のようなプログラムの問題を検出できます - koguroの日記

先日の動的言語で検出できないエラーの例でも Gauche用のglintならちゃんと検出できる、という話。

プログラムに内在的に含まれている情報を十分解析できれば 動的言語でも相当の問題を自動的に検出できるはずである。

解析時間の関係から、おそらくは静的言語の型チェックのように コンパイラに組み込みとはいかないかもしれないが、 それでもいろいろできることはあるはずだ。

Rubyでも自動検出をやってる人がいたような気がするんだけど。

_ [Ruby] RubyにLazySweepのパッチを作った - I am Cruby!

RubyのGCのためにLazySweepパッチを作った、という話。

LazySweepとはマーク・アンド・スイープ法でGCをする場合、 マークフェーズはプログラム本体を止めないと行うことができないが(ここではインクリメンタルGCは無視)、 スイープフェーズは並列に行えることに着目し、 スイープフェーズを行わずにGCを終了してしまうことで、 GCによる停止時間を削減しようというもの。

実際にはスイープのためのコストは個別のオブジェクト割り当てに分散されるので 停止時間は改善されるが、スループットは変化しない(or 若干低下する)。

いつかやりたいことだと思っていたので、 実際に取り掛かってくださったことにはauthorNariさんにすなおに感謝したい。

しかし、あちこちで話を聞くと プロセスサイズ問題とcopy-on-write問題の方が 停止時間よりも深刻なケースが多いようなので、 優先順位としては

  • ヒープサイズ縮小
  • copy-on-write friendly

の方が高いようだ。その上で、(そう遠くない将来)このLazySweepも取り込みたいものだ。

ところで、GCの性能評価のためにはベンチマークは必須である。 どこかに良いGCベンチマークはないものか。 GCの挙動はオブジェクトの割り当てパターンに大きく依存するので いろいろなパターンのものを取り混ぜたものが望ましい。

<URL:http://lloydforge.org/projects/ruby/>のものを もらってくるかなあ。

_ [言語] PragDave: The 'Language' in Domain-Specific Language Doesn't Mean English (or French, or Japanese, or ...)

Pragmatic Dave Thomasによる「DSLってのは英語っぽいプログラムのことではありません」宣言。

一般的にはともかく、 最近のRuby界では「Rubyの文法を「悪用」して、英語っぽく書くのがDSL」 という流れがあるので、それに釘を刺すというところか。

まあ、

2.weeks.ago

くらいならともかく、

add.a.diary.entry.for("Lunch").for(August.10.at(3.pm))

はやりすぎだろう。

_ [言語] Arc: I/O

ArcのI/O関数群。

基本的にSchemeのに似てる気がする。 まあ、Arc自身がMzScheme上に実装されているので当然といえば当然だが、 これらのportを使った抽象化は、学ぶ価値があると思う。 RubyでもStringIOを使って似たようなことはできるけど、 こっちの方がもっと洗練されている。


«前の日記(2008年03月11日) 最新 次の日記(2008年03月13日)» 編集