タグ

ブックマーク / hidemon.hatenadiary.jp (3)

  • Java 7で導入されるクロージャ - hidemonのブログ

    次期Javaでは,クロージャが導入されることになっている.クロージャとは,変数と束縛された関数のこと.Lispなどの動的な言語では数十年まえから一般的な機能で,昨今のスクリプト言語では無い方が珍しいぐらいなので,今更という感はなくもないが,導入されるのは大歓迎だ. クロージャはさまざまな場面で使用できるが,最も多用されそうなのは,GUIなどのコールバックハンドラ.現在のJavaではクロージャが無いので,無名クラスを使って定義しているが,これをクロージャが置き換えるものと思われる.また,高階関数のようなものをつかうのにも便利に使えるだろう. mycomジャーナルの記事1,2,3,4,5に良くまとまっている. まだ,規格として安定したものになっているわけではないらしい. Neal Gafterのブログにクロージャの歴史が語られている.参考になる. サンプル 上述のMycomジャーナルの記事から

    Java 7で導入されるクロージャ - hidemonのブログ
  • 「クロージャの定義」 - hidemonのブログ

    Java7のクロージャの提案者の一人,Neal Gafterのブログが大変参考になるので,ちょっと野良翻訳してみよう. クロージャの定義 Java 言語にクロージャを追加しようという我々の提案に関して混乱があるようだ.そもそも,Javaにはすでに無名インナークラスという形で,クロージャがあるのではないか? すでにあるものをなぜまた追加しようというのか? 一部の人々には,我々の提案には,クロージャとは関係ないものが含まれているように思われているようだ.例えば,control invocation 構文,null型,Unreachable, 型パラメータ付きthrows,関数インターフェイス型,「非ローカル」な returnなどがそうだ.Javapolisでの講演で,なぜこれらの機能が提案に含まれているのかを,これまで不可能だったことを可能にするための実用的な観点から説明したつもりだ.しかし,

    「クロージャの定義」 - hidemonのブログ
  • Google Protocol Buffer - hidemonのブログ

    Google Protocol Buffer というものが公開された, とGoogleのブログに出ていたので, ちょっと調べてみた. プロジェクトのホームページはこちら. そもそもなんなのか? 多言語対応のシリアライザ, デシリアライザだと思えばまちがいないだろう. つまり, オブジェクトなどの構造データをバイト列に変換したり, バイト列から構造データに変換する機能である. Javaなら標準でSerializeできるし, Pythonでもpickleすればいいんだけど, これらは言語固有のフォーマットなので, たとえばJavaで書き出したものはPythonでは読み込めない. またこれらの機能は, 言語のrefrectiveな機能を使って実装されているので, そういう要素に乏しいC++では非常に実装しづらい. 最近C++まわりを勉強していないので, ひょっとしたらあるのかもしれないけど. G

    Google Protocol Buffer - hidemonのブログ
  • 1