タグ

ブックマーク / blog.yugui.jp (7)

  • Javaと中二病 - 世界線航跡蔵

    java.lang.だのjava.io.みたいな古いAPIは「これからオブジェクト指向な新しい世界が始まる」と気負いすぎている割にマーカーインターフェースとか痛々しいことをやっていたりする。その辺は『 Effective Java 』で、中の人自身が「あちゃー。いたた」と反省を述べている。というわけで、このJavaAPI設計における良書でもあるわけだ。 この痛々しいAPIを「 中二病 的インターフェース」と呼ぶならば、その後に台頭した"えんたーぷらいず"な重厚長大APIはさしずめ「 高二病 的インターフェース」だろうか。 昨今のSeasarの活動で成し遂げられ、また羽生さんが「これからようやくJavaが始まる」と言っているのはこのような多重に痛々しい過去を受け入れ、乗り越えてJavaが成人するということなのかもしれない。でも、乗り越えそこなうと「 大二病 」への道なので気をつけよう。

    Javaと中二病 - 世界線航跡蔵
  • シンボルとは何か 概論 - 世界線航跡蔵

    Rubyにはシンボルというものがある :thorugh とか :conditions とか、コロンで始まる表記で、RailsAPIによく出てくるアレだ。 でも、シンボルって何だろう。この問いに答えられる人は少ないのではないか。シンボルリテラルの表記法は分かる。Symbolクラスのインスタンスであることも分かる。何だか、文字列に似ているのも知っている。で、それは何? この記事シリーズは、シンボルとは何かという問いに私なりの回答を提示する。 視点 Rubyにおけるシンボルを、私は3つの視点から説明する。 意味論から言えば、「プログラムにおける名前」という概念に対応するオブジェクトである。 他のオブジェクトとの相互作用で言えば、「intern化された文字列」に近い 実装から言えば、Rubyの名前管理用ハッシュ表のエントリである。 シリーズ目次 その1(前編) 文字列の同一性と同値性 その1(後

    シンボルとは何か 概論 - 世界線航跡蔵
  • Rubyのcatch, throwの作法 - 世界線航跡蔵

    rubyのcatch throwは安心して利用できるのか? 」が面白かった。今まで使い込んだことがないから深く考えてなかった。いわれてみると、確かにブロック付きメソッドが勝手にthrowを握りつぶすと問題があるな。 でも、どこだったか忘れたけれども標準ライブラリか何かで「このシンボルをthrowします」「catchします」ってドキュメント化されてるのを見た記憶がある。そのドキュメントの意味は上の記事を読んで初めて気づいたわけだけれども。 それに、ドキュメント化しないままに勝手に握りつぶしたり翻訳したりすると問題があるのは例外も同じだしな。Rubyと限らず、C#のdelegateやJavaの匿名クラスをコールバックに用いている場面でその中から例外が発生したのを握りつぶしても同じだしな。 だとすると、結論は「catch, throwは問題がある」ではなくて、「例外やRubyのKernel#

    Rubyのcatch, throwの作法 - 世界線航跡蔵
  • Rubyの呼び出し可能オブジェクトの比較 (2) - というよりコンテキストの話 - 世界線航跡蔵

    前回 は各オブジェクトの基的な特徴を見ただけで終わってしまった。今回はこれらをコンテキストという観点から見てみたい。 前回のまとめ 呼び出し外側のscopeblock中身戻り値 __send____send__不可能(そもそもコンテキストを保存していない)可能保持しないメソッドの戻り値 Method[],call参照不可能可能メソッド体とselfメソッドの戻り値 UnboundMethod不能参照不可能-体メソッドの戻り値 Proc[],call,yield参照可能不可能closureProcの最後の値 Continuation[],call-不可能「続き」戻らない Proc#callにおいてブロック付きの呼び出しが不可能であることは前回は記述しなかった。 sshiさんにご指摘いただいた 。 Procを作成するときに指定するブロック仮引数の記述は、メソッド定義の際の仮引数の記述にとて

    Rubyの呼び出し可能オブジェクトの比較 (2) - というよりコンテキストの話 - 世界線航跡蔵
  • Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵

    Rubyにはコード片を表すオブジェクトが複数ある。 Method , UnboundMethod , Proc である。 Continuation は少し違うけど、実行コンテキストを記憶しているオブジェクトという意味では近いものがあるか。『 Ruby Way 』にはこういういろいろがあることについて「驚くほどのことではありません」と書いてあるけれども私は驚いた。で、これらが微妙に違うのだ。困ったもんだ。いや、便利なのかもしれないが。 それで今回はこれらの概要を眺めてみたいと思う。 普通のメソッド defでメソッドを定義するのが一番普通だやな。 class C def greeting(arg) puts "C#greeting reveived #{arg}" end def iterator yield 'iterator 1st' yield 'iterator 2nd' yield

    Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵
  • Seasar Conference 2006 Autumn (1) - 世界線航跡蔵

    Seasar Conference に行ってきた。会場は法政大学ボアソナードタワー26F。 飯田橋駅構内でまた道に迷った。春に一度来た場所なのに。 会場は見晴らしがよい。 会場に着くとメイドさんが歩いていた。 予告 通り無料ドリンクサービスをやっているらしい。 50分×4コマのそれぞれにつき、5つのセッションを平行して催すのでどれにしようか迷ったけれども、どうにか絞り込んだ。 会場の様子 Seasar 2.4 ひがやすをさんから、前日にリリースされたSeasar 2.4と、これまで詳細が明らかではなかった"Chura"について。最近のweb開発には"agile"と"enterprise"の2つの大きな流れがあるけれども、seasarはその流れの中でどう進んでいくのがが説明された。 まずagileはRailsに代表されるもので、ひがさんはこれらをスピード感を出すために独自仕様も辞さずに突き進

    Seasar Conference 2006 Autumn (1) - 世界線航跡蔵
  • 「Rubyの作者松本氏がありもしない錯誤をでっちあげて批判している件」について - 世界線航跡蔵

    fromdusktildawnさんの分裂勘違い君劇場「 Rubyの作者松氏がありもしない錯誤をでっちあげて批判している件 」を読んだ。 こうして議論が膨らんで、何が何でもRubyとか、何が何でもCLOSとか、そういう誤読を防止する仕組みができあがっていくことは喜ばしい。それ以上に、これを機会にRubyに関心を持つ人がでてきたり、JavaScriptを再発見したりする人がでてくるようなことがあったならば、喜ばしい。「騒げ騒げ、もっと騒げ」 のだけれども、取り合えず言うべきことは言っておこう。 getter/settterネタ これは実はちょっと心外。「実務上、メタプログラミングは便利だよ」と言いたくてその一例たるattr_accessorの説明の直後に ですから,このようなメソッドを自分で作ることもできます ... 少しでも似たようなコードの反復があるならばメタプログラミングによって実装や

    「Rubyの作者松本氏がありもしない錯誤をでっちあげて批判している件」について - 世界線航跡蔵
  • 1