タグ

ブックマーク / m-hiyama.hatenablog.com (21)

  • アンチ防衛コード派の立場は弱い - 檜山正幸のキマイラ飼育記 (はてなBlog)

    僕は、ずっと(いつからかは覚えてない)「防衛コードを書くな」と言い続けているのですが、これは受け入れられないことが多いですね。 まず言われることは「それじゃまったくセキュアなシステムにならない」とか「ユーザー(人間)は無謀な操作をするから」とか。そういう事とは関係ないのだけどね。 次に、しばしば責務の放棄と誤解されます。例えば、構文解析で期待してないトークンに出会うとイキナリ例外を投げて終了してしまうプログラムが実際にあったので問い質すと「檜山さんがエラーリカバリーするなと言ったから」と。ここらへんの事は、Erlangに絡めて少し話したことがあります。「Erlang実験室:武士道と云ふは死ぬ事と見付けたり」の「潔さと無責任は違う」のあたり。 実は、僕が推奨したいことは、「××を書くな」よりは「○○を書け」のほうなんです。○○の部分は、ホーア論理に基づくアサーションとか契約(コントラクト)で

    アンチ防衛コード派の立場は弱い - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2010/02/03
    事前条件は細かく考えるが事後条件はあまりしっかりとは考えないなあ。いかんいかん
  • JSONの可能性がグンと拡がるぞ! JSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JSON(http://www.json.org/)データはけっこうよく使うので、何度か話題にしたことがあります(例えば「もう一度、ちゃんとJSON入門」)。でも、JSONには型情報/メタ情報が付けられないのがとても不満で、JSON改なんてもんを考えたこともありました。(後でXIONに改名) JSONデータに対するスキーマ定義の仕様がかたまりつつあることを、ごく最近になって知りました。 http://json-schema.org/ JSON体はRFC 4627になっていますが、JSONスキーマの標準化のステータスは、あまりハッキリとは分かりません(僕には)。http://groups.google.com/group/json-schema?pli=1 を覗き見した感じでは、現状ワーキングドラフトという位置付けらしいです。 なかなか面白いし役に立ちそうなので紹介します。ただし、僕にとっ

    JSONの可能性がグンと拡がるぞ! JSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2009/04/14
  • マスロフ式算数がやたらに面白いんですけど - 檜山正幸のキマイラ飼育記 (はてなBlog)

    インド式算数って、速算処方箋の寄せ集めでしょ。ロシア発のマスロフ式算数は、質的に新しい演算を扱う奧が深い算数ですよ。マスロフ式算数を学んでも速算の役には立たないけど、背後にある数理的構造/現象の神秘に触れられるかもよ。 内容: マスロフ式算数の由来 maxとminの算数 足し算的演算 足し算的演算の実例 マスロフ和 マスロフ和の極限 プランク定数と脱量子化 マスロフ式算数の由来 1980年代に、ロシアの物理学者マソロフ(Victor P. Maslov)により始められた脱量子化(Maslov Dequantization)という手法があり、現在では、数学、物理学、工学の広い範囲に影響を与えてます。マソロフ脱量子化の入り口は、変形した足し算を含む計算です。この計算は、普通の算数と同じ簡単な法則に従いますが、エキゾチックな世界を記述する道具になります。 このエキゾチックな算数の構造は、高校生

    マスロフ式算数がやたらに面白いんですけど - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2008/01/22
    マスロフ和
  • いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な

    いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2008/01/10
    『二階にいるほんとのクラスに対して、代理となるオブジェクト(それがクラスオブジェクト)を作り出すことをレイフィケーションといいます。』
  • イベントモデルの概念と用語法が混乱しているので、イライライするんですが - 檜山正幸のキマイラ飼育記 (はてなBlog)

    [追記 dateTime="2007-12-07 夕刻"]あーっ、今ごろ気付いた。イライライって「イ」がひとつ多いや。タイトルを編集すると、なんか悪いことが起こったりしませんかね? うーん、いいや。typoしたままにしとこう。ちなみに、「イライライ」は回文になっているぞ。[/追記][追記 date = "2007-12-11"]http://d.hatena.ne.jp/keyword/%a5%a4%a5%e9%a5%a4%a5%e9%a5%a4 [/追記] いつか文句言ってやろうと思っていた件ですよ。長いぞ。 内容: 似てるけど少しずつ違うイベントモデル達 イベントターゲット イベントフロー EventTargetインターフェース イベントハンドラーとイベントリスナー リスナーとハンドラーについてもう少し イベント伝搬とハンドラー実行 イベントの通過または出現 イベントタイプ 「イベント

    イベントモデルの概念と用語法が混乱しているので、イライライするんですが - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - 圏論やモナドが、どうして文書処理やXMLと関係するのですか?

    …という類<たぐい>の質問に答えるのはちょっと面倒なんですけど、とりあえず1つだけ具体例を挙げておきましょう。テンプレート処理が、もろにモナドになっている、ってハナシ。今回はテキスト処理について説明。次回(いつになるかまったく不明)はXML処理の予定。 テキスト処理だけでも長ーい説明(最長記録かも)なのだけど、分割すると“勢い”がなくなるから一挙掲載。読むときはユックリ・ジックリ読んでくださいね。プログラミング課題も、実際にコーディングしないまでも、「こうやればいいな」という方針くらいは考えてください。 ※印刷のときはサイドバーが消えます。 内容: ネストしたテキスト テンプレート処理 ブロック、文字列、名前 フラット・テキストとテンプレート・テキスト 多段階のテンプレート処理 蛇足 素材を整理しよう モナドに向かって突っ走れ!! バッチリ、モナドだぜぇ 残りは脱兎のごとく 最後に言ってお

    檜山正幸のキマイラ飼育記 - 圏論やモナドが、どうして文書処理やXMLと関係するのですか?
  • 論理記号のいろいろ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    数学記号の認知速度 -- 実験心理学的計測方法と実例 --」(by 堀幸雄, 後藤英一, 佐藤雅彦; http://www.jssac.com/Editor/Suushiki/V10/No3/V10N3_113.pdf)のなかに、論理記号の一覧表がありまして(P.11)、こりゃ便利だと思うので、引用しておきます。ペアノの含意は、視力検査で使うような「C」をひっくり返したみたいな記号です。 対応する文献の抜粋: [8] Genzten, G.: Untersuchungen ¨uber das logische Schliesen, Mathematische Zeitshrift, 39, pp. 176-210, 405-431, 1935. [10] G¨odel, K.: ¨Uber formal unentscheidbare S¨atze der Principia mathe

    論理記号のいろいろ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • あまりにも素晴らしい!『量子ファイナンス工学入門』 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    量子ファイナンス工学入門 作者: 前田文彬出版社/メーカー: 日科技連出版社発売日: 2005/04/01メディア: 単行購入: 3人 クリック: 99回この商品を含むブログ (16件) を見る 余計なことは言わず、引用をします。「…」は省略部分。 (p.162) デフレ経済における政府の一回限りの株価対策は失速必至で、その後何もしなければ102日後には日経平均は元に戻るという結論が得られる。 この結論、特に102日後という値はどのようにして導かれたのでしょう。 まずは考え方から: (p.159からp.160) 5.3.4 第1の力 -- 重力 株価を変動させる4つの力のうち、第1の力は落下運動をつかさどる重力である。… … …株価の重力運動に時間の概念を加えれば、株価は縦軸に株価、横軸に時間をとった座標上で放物線を描く。 … ニュートン力学の第1法則によれば、市場に力が加えられる限り相

    あまりにも素晴らしい!『量子ファイナンス工学入門』 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • DI(依存性注入)を白紙から説明してみる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「DI(依存性注入)からどこへ行こうか その1」において: DI(依存性注入)については、雑誌や書籍で随分紹介されているので、そういうのを見てください。 こんなこと[注:DI化]して何がうれしいかって? それは、ファウラー先生とかその他エライ人とかエラクない人とかに聞いてください。 と書きましたが、DI(Dependency Injection; 依存性注入)そのものについても説明を試みてみましょう。具体的なサンプルを使うことにします。そのため、サンプルの説明が長くなってしまうのが困ったことですが、まー、単なる能書きよりはサンプルがあったほうがいいでしょ。 内容: サンプルはテンプレート処理系 レクサー(字句処理系) レクサーをインターフェース経由で使う サービス・ロケーター 依存性が消えてない! DI(依存性注入)登場 DIが、かつてIoC(制御の逆転)と呼ばれていた理由 ●サンプルはテ

    DI(依存性注入)を白紙から説明してみる - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2006/09/27
    依存性注入=責務の逆転
  • DI(依存性注入)からどこへ行こうか その1 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    このエントリーは、ウチの工作員ショー君への業務連絡とか、新たな工作員勧誘とかの目的もあるのですけど、ふつうにソフトウェア関連ネタとして読めます。ソフトウェアのコンポネント化とコンポネント群の複合方式の話題です。 随分と長いので、2回(か3回)に分けてポストします。 ※印刷のときはサイドバーが消えます。 内容: DI(依存性注入) ポートベース・コンポネント 再びDI:フィールド・インジェクション ポート(あるいは男と女)を繋ぐワイヤー(あるいは赤い糸) 要求ポートと提供ポート これがポートベースHelloWorld それから その2 関連: ポートベース・コンポネント:ケーススタディ ポートベース・コンポネント:補足 DI(依存性注入)を白紙から説明してみる DI(依存性注入) DI(依存性注入)については、雑誌や書籍で随分紹介されているので、そういうのを見てください。Web上の解説記事「

    DI(依存性注入)からどこへ行こうか その1 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2006/09/25
    ポートベースコンポーネントを用いたDI
  • はじめての圏論 その第3歩:極端な圏達 - 檜山正幸のキマイラ飼育記

    「第3歩」と書いたからと言って続くかどうかはわからない。だけど、3回書けば既に続きものだとも言えるので、第1歩をハブエントリー(目次ページ)にしておきました。第1歩からリンクをたどれます。 さーて第3歩だけど、そろそろ関手ですかね? いやっ、まーだ実例。もっともっと実例。なんで僕が実例にこだわるかというと、抽象論は好きだけど、具体性のない抽象論が嫌いだから。圏論に関する具体例は山盛りあるんだけど、どうも(良い意味での)アブストラクト・ノンセンスな論法のほうに注目が集まりがちで、そこいらに転がっている具体例が強調されてない気がする。 実際のところ、圏の定義はすごく一般的だから、その例は死ぬほどイッパイあるんだよね。だから、具体例を拾っているときりがない、ってのも確か。なんだけど、手近にあって個性的で面白い圏は紹介しておきたいんです。で、今回は“エッジが効いた”(って、実は意味ワカラン)圏達の

    はじめての圏論 その第3歩:極端な圏達 - 檜山正幸のキマイラ飼育記
    twainy
    twainy 2006/08/24
    やせた圏
  • はじめての圏論 その第2歩:行列の圏 - 檜山正幸のキマイラ飼育記

    「第2歩」と書いたからと言って続くかどうかはわからない、なにしろ僕は気まぐれだからね。 とりあえず第1歩で、手でいじれる圏の例が1つは手に入りました。圏論のような抽象的/一般的な理論を納得するには、具体的な例をたくさん知って、具体例に一般論を適用してみるのがいい方法だと思います。 そこで、関手だの自然変換だのに進む前に、もうひとついじり倒せる具体例を出しておきましょう。しりとりの圏よりは少しだけ高級で、行列(マトリックス)を考えます。僕は、高校で2×2行列の計算を無意味にやらされた記憶があるのだけど、今の教育はどうなっているかしら? ともかく、行列計算の経験は仮定します。 内容: 行列の復習 行列の圏 圏の名前付けとか記号とか ホムセットと矢印記法 図式順記法と反図式順記法 全体目次 行列の復習 行列は、数を四角形に並べたモノです。ここで、「数」は実数だとしておきます。横の並びが行で、縦の

    はじめての圏論 その第2歩:行列の圏 - 檜山正幸のキマイラ飼育記
  • はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記

    全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです

    はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
  • 極小プログラミング言語とホーア論理 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    一昨日定義した極小プログラミング言語を、TTPL(Tiny Toy Programming Language)というツマンネー名前で呼ぶことにします。 んでまー、TTPLをああいう仕様にしたのは、ホーア論理を直接的に使いたい、という理由があります。つうわけで、ホーア論理をTTPLを使って説明します。ただし、最初に言っておきますが、僕は(ホーア論理のような)プログラム証明を推奨する気はありません(どっちかいうと反対派)。それでも、理屈は知っておかないと、それから先に進めないってことはあります。 内容: ホーア式 ホーア式の正しさ プログラムの証明 こんなにめんどくさい なにが重要か ●ホーア式 ホーア論理の式(ホーア式とか、ホーア・トリプルと呼ばれる)は、プログラムの文と仕様記述を一緒にしたようなものです。p, qが論理式(条件)でSが文だとして、p{S}q という形で書きます。中括弧の使い

    極小プログラミング言語とホーア論理 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2006/07/15
    ホーア論理について
  • 幼稚園児のための量子力学とその周辺 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    メモ編のほうに書いたことなのだけど、ニヤニヤできるネタだから編(ここ)にも書いておきます、とりとめもなく。 Bob Coeckeのレクチャーノート コレ: Bob Coecke "Kindergarten Quantum Mechanics" (PDF別ウィンドウ) 量子テレポーテーションや量子絡み/もつれ(entanglement)の解説です。背後では圏論(強コンパクト閉圏)を使ってますが、予備知識はほぼゼロで、カラーのきれいな絵をふんだんに使って説明しています。Bob Coecke (ボブ・クック)曰く: Of course we do not expect you to know about category theory, nor do we want to encourage you here to do so. The whole point about these note

    幼稚園児のための量子力学とその周辺 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2006/07/12
    幼稚園児にもわかる量子力学
  • AspectによるDesign by Contract - 檜山正幸のキマイラ飼育記 (はてなBlog)

    以前(4月3日)、「AspectJによる契約駆動開発 (準備+蘊蓄編) 」、「AspectJによる契約駆動開発 (実験編)」というエントリーを書いたのですが、それに対して“通りすがり”さん(なんでもいいからハンドル付けて欲しいな)に、有益な情報を提供していただきました。ありがとうございます。 まず、消滅してしまったと思ったiContractが、iContract2として最近復活したようです。 iContract2 (http://www.icontract2.org/) "iContract2 is a revival of Reliable System’s iContract project"とのこと。 さらに(by 通りすがりさん): iContract2 のソースをちらっと見てみたけど、自前でソースをパースしている様子? いまどきなら、AOPを使うよなぁと散策したところ、ちらほら発

    AspectによるDesign by Contract - 檜山正幸のキマイラ飼育記 (はてなBlog)
    twainy
    twainy 2006/06/15
    AOPによるDbC
  • 檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)

    ジジイの手習いで、JavaScriptを勉強中でございます。その動機は「結局、ブラウザベースRIAかよ」のようなこと。非ブラウザベースのリッチクライアントへの期待を失ってしまったんですね。短期的・現実的な策としては、Ajax的な手法によるRIAなのかなぁ、という気分。ただし、「短期的」が“1年”と“5年”ではえらい違いです。今のところ僕には、「短期的」の実際の期間はわかりません。 僕のJavaScript調査の結果は、「初心者でも使えてプログラマでも困惑するJavaScript 」などに書きました。これらの続きとして、「プログラマのためのJavaScript (*)」というタイトルで書こうかと予定してます。あくまで予定、気まぐれでモノグサな僕のことだから、…… “プログラマのための”というのは、C, C++, Java, C#など“普通の”プログラミング言語にある程度慣れていることを前提に

    檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)
  • 質問に関する質問・疑問に答えた、かどうかは疑問 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    なんか質問されたみたい。 で、突然ですが質問です。id:m-hiyamaさんみたいに、下っ端の相手しなきゃいけない立場の方は、自分みたく朝から晩まで誰とも話さずプログラミングしたり黙々とを読んだりしてる「何だかよくわからないペーペーの人間」には、仕事中どう振舞ってもらいたいと望んでいらっしゃるのでしょうか?うーん。もしお暇でしたらご回答願います。 まず、僕は「下っ端の相手しなきゃいけない立場」ってわけではありません。 比較的、年齢が若い(僕と比べてほぼダブルスコア) 比較的、知識・経験が少ない(ときにゼロ) そういう人の相手をする機会が多少はあるってだけ。 んで、「仕事中どう振舞ってもらいたいと望んでいらっしゃるのでしょうか?」って、これはあまりにも漠然とした質問ですねえ -- そもそも、お題が「質問」だよね。であるなら、最初のアドバイスは「もっと明確な質問をすべし」だが、まー、それを強

    質問に関する質問・疑問に答えた、かどうかは疑問 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • モナドの定義とか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    モナド関係で、KMさんと酒井さんにコメントをいただいて、僕もコメント欄に書き込みました。話が少しややこしくなったので、このエントリーで続きを。 コメント欄のやりとりで分かったことは、“Haskellのモナド”がモナドもどきではなくて、どうも、正真正銘の圏論的モナドであるらしいことです。であれば、Haskell知らずの僕が語ってもまー大丈夫かな、と。(メモ編に書くべき内容かもしれないけど。) Listは典型的モナドに思えないかも知れない 「Listモナドは典型的モナドだ」と僕は書いたのだけど、Haskellのヒトには違和感あるかもしれないですね -- Listはたいていのプログラミング言語でサポートされている平凡なデータ構造ですから。状態遷移とか入出力のような副作用を表現するモナドのほうが“モナドらしい”のでしょう、おそらく(憶測モード)。そうであってもなお、Listがやっぱり典型例なのは事

    モナドの定義とか - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」

    気まぐれと偶然となりゆきで、ここ2,3回はモナドを話題にしました。googleで「モナド」を引いてザッと眺めると、「モナドはむずかしいー」とか「モナドで挫折した」みたいな雰囲気が感じられて、説明芸人の血が少し騒ぎましたね。「なら、予備知識ゼロでモナドの説明をしてやろうじゃねーか」と。 タイトルはだいぶ煽っちゃった…… けど、ハッタリじゃないつもり…… けど、実際はどうかな? ※印刷のときはサイドバーが消えます。 内容: とりあえず、あたりさわりなくモナドの来歴を紹介する こんな課題を考えてみよう:副作用付き計算 カウントアップする関数達 カウントアップしたい意志を戻り値で伝える それでは、いったい誰がカウントアップをするのだ 関数の引数の型をCountup型にまで拡張する そして、これがモナドだ とりあえず、あたりさわりなくモナドの来歴を紹介する 今からここで説明する「モナド(monad)

    檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」