«前の日記(2007-09-14) 最新 次の日記(2007-09-16)» 編集

Matzにっき


2007-09-15 [長年日記]

_ [Ruby] Rubyのダイエット (PDF)

akrさんのLinux Conferenceでの発表スライド。 如何に1.9で(akrさん主導で)ダイエットが行われたか、の記録。

akrさんのおかげで、1.9では以下のようなメモリ削減が行われた。

  • 3要素までのStructのインライン化
  • 11byteまでのStringのインライン化
  • インスタンス変数5つまでのObjectのインライン化
  • 空Hashのインライン化
  • ±296-1までのBignumのインライン化
  • Rangeのインライン化
  • 3要素までのHashのインライン化

私自身のダイエットもこれくらい進んでほしいものだ。

スライド前半のRubyのオブジェクト構成の説明も (Rubyの中身に興味がある人には)有益な解説だろう。

_ [Ruby] Scaling Twitter: Making Twitter 10000 Percent Faster | High Scalability

Twitterのスケーラビリティに関する情報まとめ。

Twitterの瞬間最大11,000アクセスというのはおおげさに伝えられているが、 平均毎秒600アクセスというのも興味深い情報。 これは楽天の個別サービスのアクセスよりも多い。

また、それを実現したテクニックなどについてもまとめられている。

_ [言語] Smalltalk Industry Council

「STIC is the vendor neutral Smalltalk lobby organization」なのだそうだ。 今まで無かったのが不思議なくらい。

2008年6月18-21日にSmalltalk Solution 2008というカンファレンスも開催するそうだ。

Rubyアソシエーションもちゃんと仕事しなくちゃなあ。 やりたいことは沢山だが、できることは限られている。

とりあえずロゴコンテストの応募は沢山集まってるけど。

_ [言語] Neil’s point-free blog >> Statically Checked “Duck Typing” in Scala

Scalaのstructural conformanceについて

def test(f: { def getName(): String }) { println(f.getName) }

と書けば、testメソッドはgetNameというメソッドを持つ任意のオブジェクトを (DuckTyping的に)引数にとりつつ、静的な型チェックも行える、という話。

もう一歩進んで

def test(f) { println(f.getName) }

だけで、

  • f.getNameを呼んでいるからfにはgetNameが必要
  • printlnの引数になっているからgetNameの戻り値は文字列

とかまで推論できるとかなりうれしいのだが、 いくら型推論言語でもシステム全体をそれで通すわけには行かないだろうなあ。

_ [言語] 並列パフォーマンス: マルチコア コンピュータ用にマネージ コードを最適化する -- MSDN Magazine, October 2007

C#における並列パフォーマンス実現機能。 C#から離れて純粋にAPIとして見ても興味深い。

本日のツッコミ(全4件) [ツッコミを入れる]
_ 向井 (2007-09-26 14:34)

OCaml や SML# ではそのような型推論ができます。<br># let test f = print_endline (f#getName());;<br>val test : < getName : unit -> string; .. > -> unit = <fun><br><br># fun test f = println (#name f);<br>val test = fn : ['a#{name:string} .'a -> unit]<br><br>前者がOCaml、後者がSML#です。

_ まつもと (2007-09-26 22:43)

ああ、そこまでできるのは知っています。実際、Scalaでもできるかも。<br>ただ、たとえばRubyではprintはto_sメソッドがあれば出力できるわけで、<br>getName : unit -> string<br>となる時点でstructuralでない型が入ってきてますよね。<br>それをして「システム全体をそれ(structural conformance)で通すわけには行かない」と書きました。

_ Neil Bartlett (2007-10-11 07:05)

Hi Matz, you're right that Scala can't do the second form of type inference yet, so this is only really an approximation to Ruby's duck typing. It is however a big relief from programmers coming from Java!

_ Matz (2007-10-11 10:40)

I know it's valuable, and a big step from traditional static typing.<br>I just wondered whether complete duck typing with static type analysis was possible.

お名前:
E-mail:
コメント:
[]

«前の日記(2007-09-14) 最新 次の日記(2007-09-16)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.