歌舞伎座.tech#9でPonyについて発表しました

歌舞伎座.tech#9「異種プログラミング言語格闘勉強会」 - connpass で発表しました。
オープンな勉強会で発表したのは初めてだったので胃に穴が空きそうでしたが、なんとか乗り越えられました・・死にそう・・・(◞‸◟)
ponyの知名度がちょっとでも上がれば幸いです。

www.slideshare.net

erlangのメッセージパッシングは全てデータコピーが発生すると表現したところがありましたが、誤りでした。 http://www.ponylang.org/papers/fast-cheap.pdfのイントロから引用したのですが、もう少し調べたほうが良かったですね。(論文に書いてあるからといって安心してはいけない的な教訓・・)*1

erlangでは特定のバイト数以上のBynaryは特別扱いされて参照が渡されるとの指摘をいただきました。 https://twitter.com/voluntas/status/711485494454919169 Erlang -- Constructing and Matching Binaries

これを踏まえると大きめなデータ構造をローコストで渡せるのような表現のほうが適切になりそうです。(多分・・)isoやtrnの存在によって、mutableにデータ構造を組み立てて他のアクターにパスみたいなパターンが書きたくなると思うので、ponyで書く際は有用な性質のはずだと思います。

erlang/OTPは実績も既にあって、設計的にも優れている部分がたくさんあるのでPonyが乗り越えられるかどうか不明ですが、後発ですし公式もerlangをかなり見て作っているようなので(少なくとも特定分野では活躍できる?みたいな)期待しても良さそうという淡い気持ちがあります。

自分の発表をタイムシフトで見返して、JVMだからデータ共有できるとかもかなり無理やりやらないと(ActorRef越しじゃさわれないから、他の場所に置いたり、いろいろわけわからないことしたりしないと)できないから何か危ないこといってるなーみたいなところがあったりして発表するの難しいなと思いました・・。( Futureと組み合わせた時にsender()がみたいな話はあるので、そういうの含めればセーフ?・・・)あとGC関連もcausal consistentなメッセージングシステムを前提にしている部分もかなりあって、それ抜きに分散GCが〜とか言い出すのはアリだったんだろうか・・みたいな時間と発表内容との兼ね合いみたいなところも難しいですね・・。

みたいな色々学びがあったので良かったです。ponyはまだ生まれたばかりの言語なので色々足りない部分がまだまだあります。がんがん埋めていくか、akkaかerlangを使いましょう。erlangは神。(ただ、ponyの型システムなどponyを学ぶ意味自体はあると思うので気になったらぜひ!)

*1:論文が間違っているというか自分が変に拡大解釈してしまったみたいな感じだと思います