タグ

ブックマーク / kazu-yamamoto.hatenablog.jp (5)

  • コンパイルは(テストではなく)証明である - あどけない話

    「プログラムのテストはバグの存在を示すことにかけてはとても効率的な方法ですが、バグの不在を示すことにかけては絶望的なほどに不適切です。プログラムの信頼性を顕著に向上させる唯一の方法は、その正当性に対して説得力のある証明を与えることです」 -- Edsger W. Dijkstra 静的型付き言語では、コンパイル時に型が検査される。この型検査に関連して型推論という機能を持つ言語がある。型推論は、大きく分けて2つの意味で使われているようだ。 命令型言語の多くに見られる型推論:型検査の過程で、省略された型を補うこと 関数型言語の多くに見られる型推論:未知の型を変数として方程式を立て、方程式を解いて未知の型を求めること。型推論自体が型検査の役割を果たす この記事では、後者の型推論を話題にする。 静的型付き関数型言語の利点として、よく「コンパイルはテストである」という説明がなされる。プログラムは式で

    コンパイルは(テストではなく)証明である - あどけない話
    tarchan
    tarchan 2013/03/13
    >エドガー・W・ダイクストラ: 謙虚なるプログラマ (The Humble Programmer) http://www.unixuser.org/~euske/doc/dijkstra-ja/thehumbleprogrammer.html
  • /dev/random の秘密 - あどけない話

    たとえば SSH や PGP の鍵対を生成するときには、当の乱数が必要になる。疑似乱数ではダメだ。Unix 上で乱数を生成してくれるデバイスとしては、/dev/ramdom がある。/dev/ramdom には、真性乱数が蓄えられていて、read システムコールで必要なバイト数だけ読み込むことができる。 /dev/ramdom が真性乱数を生成する方法は、実に単純だ。ハードウェア割り込みの間隔を測るのである。今の間隔が直前の間隔よりも短ければ 1 を、長ければ 0 を真性乱数として蓄える(0 と 1 の割り当ては逆かもしれない)。つまり割り込みが、時刻 t1、t2、t3 に起こったとすると、t2 - t1 と t3 - t2 を比較するということだ。 /dev/ramdom は、ブロックデバイスなので、必要な量の真性乱数がなければ、read システムコールはブロックする。このブロックをで

    /dev/random の秘密 - あどけない話
  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
  • 文章の書き方 - あどけない話

    2006年に IIJ の新人研修で「文章の書き方」という講義を担当しました。そのときの資料を何人もの人に個別に差し上げていたのですが、それも面倒になってきました。新人研修の担当者に問い合わせたところ、公開しても問題ないとのことでしたので、資料を公開します。 「文章の書き方」の資料

    文章の書き方 - あどけない話
  • POPとIMAP - あどけない話

    ようやく IMAP も普及したようで、POP から IMAP に乗り換える人が増えています。僕の周りのインターネット技術者も、ぼちぼち乗り換え始めました。(gmail が IMAP をサポートしたことが大きな要因でしょうか?) 彼らは優秀なのにも関わらず、こんな間違った表現を使います。 POP はメールをメールリーダに取ってくるもので、IMAP はサーバ側のメールを読むものだ POP だとよかったけど、IMAP は常にネットワークにつながっていないと辛い POP だとよかったけど、IMAP はフォルダ内のメールの数が多くなると辛い その度に、「そうじゃない」と言ってきたのですが、もうそう説明するのにも疲れてきました。そこで、正しいことを書いて、この説明はもう二度としないことにしようと思います。(DRY: Don't Repeat Yourself ですね。) 間違いの根源は、おそらく二つで

    POPとIMAP - あどけない話
  • 1