«前の日記(2014-11-16) 最新 次の日記(2014-11-18)» 編集

いがいが日記


2014-11-17 [長年日記]

_ RubyConf2014 - Matz keynote

今年のRubyConfはSan Diego。さきほど恒例のmatz keynoteが終わりました。今年も内容のメモをとりました。今年は進みが速くて例年以上にメモれなかったので、詳しくはあとで公開される動画をご覧ください。:)


"Feeding the Sharks"

OSSコミュニティはサメみたいなもので、新しいことで泳ぎ続けていないと死んでしまいます。楽しいことがないといけない。 過去のRubyConfでは未来の話をしてきました。最初のRubyConfではVirtulaMachine。これは2007年のRuby1.9で笹田さんによって実現しました。ほかに、M17N, Native thread, Generational GCなんかも実現しました。

2005年はサンディエゴ Stabby lambda(->), Real multi-value, Traits。-> は当時は批判もあったけど、今ではみんな書くようになった。ほら、私は正しかった。(会場笑い)

2006年デンバーは新アイデアなし。2007年Charlotte、1.9の紹介、この年も新アイデアはない。2008年はポートランド、なし。2009年サンフランシスコもなし。RubyKaigi2009ではいくつか紹介した。(略)

2001年から2005年はエキサイトだけど確かじゃない新アイデアを、2009-2013年はImpelementationの改善で新アイデアはなかった。そろそろガソリンが必要だろう。

そう、Ruby3.0だ。

その前に、Ruby2.2は次のクリスマスに出ます。笹田さんの新しいGCとか入ります。

Ruby3.0は Concurrncy, JIT, Static typing.

Concurrency はみんなご存知のGVLをなんとか。詳細未定。(※あとでmatzさんに聞いたら、matzさんと笹田さんで検討中とのこと。)

JITはまたはLLVMかも。

Static typing、これは?ScalaとかTypeScriptとかモダンな言語にあるようにRubyにもあっていいんじゃない?メリットは?パフォーマンス、コンパイル時のチェック。

静的型付けは高速化のほかにも、better documentにもなる。Static typing は Duck typing と衝突する。DuckTypingを失ったRubyはRubyと言えるのか?私はRubyはRubyで居続けると思う。

型宣言よりも型推論(= Soft typing)。型はどこで示すか。メソッド定義時(名前と引数の型と数)、クラス定義時。一部の機能に制限をいれることもあるかも。たとえば require, define_method, method_missingとか。requireが変数を受け取ると解析できないから、定数しか指定できないとか。

コンパイラがあなたの意志(型)を読み取って、あなたにレポートを返す。ドキュメント生成やIDEの情報にする。コンパイラとあなたがより密にコミュニケーションをとるようになる。

最初は静的解析からはじめると思う。つまり、最初は外部のツールで解析するようなものを作るといいのではないか。それでの知見は言語に良い影響を与えるはず。その結果、どういう風に言語を作ればいいか分かってくる。

あ、このキーノートはアイデアだから、実現するかもしれないし、しないかもしれない。

これらのアイデアからRuby3.0が生まれるんじゃないかと思う。Happy Hacking!


«前の日記(2014-11-16) 最新 次の日記(2014-11-18)» 編集