タグ

ブックマーク / nishiohirokazu.hatenadiary.org (6)

  • 多重継承まとめ - 西尾泰和のはてなダイアリー

    JavaはInterfaceという特殊な実装を持たないものだけ多重継承できる。実装を多重継承する仕組みはない。同じシグネチャのメソッドを持っている2つのInterfaceを継承した際にエラーにならないので衝突に気付けない。 Pythonはクラスを多重継承できる。同じ名前のメソッドを持っている2つのクラスを継承した際にどのメソッドが呼ばれるかはC3線形化を使って決定される。see: A Monotonic Superclass Linearization for Dylan RubyはModuleという「なにかを継承することはできなくてインスタンス化もできないもの」だけは多重継承できる。Moduleが別のものを継承できないためメソッドの解決は素朴な探索でOK(include A include BしたらBでの実装が優先) SmalltalkにはTraitという実装の多重継承ができるしくみがあ

    多重継承まとめ - 西尾泰和のはてなダイアリー
  • 原始帰納的関数のPythonでの表現 - 西尾泰和のはてなダイアリー

    原始帰納的関数の定義がよくわからなかったので数学事典で調べてみた。数学語で書いてあるけど、Python語に翻訳してみると: def inc(x): return x + 1 def constant(*args): return CONSTANT def choice_K(*args): return args[K] という関数からスタートして(constantとchoiceは返す定数や選ぶ引数の位置によって無数に存在する) def apply_funcs(*args): return REDUCE_FUNC( MAP_FUNC_TABLE[0](*args), MAP_FUNC_TABLE[1](*args), ...) def recursive(*args): head = args[0] tail = args[1:] if head == 0: return WHEN_ZERO_

    原始帰納的関数のPythonでの表現 - 西尾泰和のはてなダイアリー
    gymno
    gymno 2009/09/16
  • Pythonとワンライナーについて - 西尾泰和のはてなダイアリー

    自己紹介で「Pythonも少し書いてます。1行くらい」って言ったら通じなかったので改めて自己紹介代わりに貼る。 西尾泰和のブログ: ワンライナーはダークサイド。改行をいれるべし http://www.nishiohirokazu.org/blog/2007/08/post_323.html 最近は「どう書くorg作ってます」の方が認知度高いのかなぁ。どっちもどっちか。 - 追記:たまにワンライナー推進派だと勘違いされることがあるみたいだけども、逆です。 西尾泰和のブログ: Pythonでワンライナーを作成する際のノウハウ集 http://www.nishiohirokazu.org/blog/2006/08/python_12.html これにくらべると、上のカレンダー出力コードは短いし、無限ループや例外処理もないのでとてもシンプルでわかりやすいです。なので「動けば何だっていいじゃないか」

    Pythonとワンライナーについて - 西尾泰和のはてなダイアリー
    gymno
    gymno 2009/09/03
    書けたのか。。。知らなかった
  • メールアドレスのパーセントの意味 - 西尾泰和のはてなダイアリー

    20代後半前後のメンバーで「最近の10代後半前後のML参加者が(名乗りや署名無しで)1行メールをMLに投げてくるのは携帯文化なのかなぁ」「自分は他の人が名乗っているのを見てなんだこの文化はと思いつつ合わせた」「『なんだこれは』といえば『ほげ@ふが%ぴよです』とかなんだこれは!って感じだなぁ、@まではまだしも%って。」「%って何?」「定義は知らない」という会話をしました。%の話を持ち出したけど定義を知らなかったのが僕なので責任を取って(?)Twitterに投げてみました。 結果、かなり興味深いことがわかったのでまとめ: A c/o BでB様方A様になるので一時的にBにいるAさんがA c/o Bになるのはとても自然ですね。様方(care of)→c/o→%→一時的な場所→状態、という流れが一番自然かなぁ。記号はググれないので調べづらい。気でやるならMLやNetNewsのアーカイブを舐めて1行

    gymno
    gymno 2009/08/10
  • カトレヤ - 西尾泰和のはてなダイアリー

    第1回の部屋がパール、第2回の部屋がルビーだったPython温泉ですが、第3回の部屋はカトレヤでした。 なんか無茶ぶりきたこれ。というわけで作りました。 http://bitbucket.org/nishio/cattleya/ 「cattleya is very very dirty superset of Python programming language.」Python2.6で実装されていて、大部分の機能はPython2.6に丸投げするので「ほぼPython2.6互換」です。新しくできるようになったこととしてはRubyみたいに文字列リテラルとかにメソッドを追加できるようになったことかな!joinメソッドが文字列のメソッドではなくリストのメソッドであることにぶーぶー文句だけたれて手を動かさない人も世の中にはいるようですけど、60行程度でリストのリテラルにjoinメソッドを足せました

    カトレヤ - 西尾泰和のはてなダイアリー
    gymno
    gymno 2009/08/10
  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
  • 1