タグ

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

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

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

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
    matsuza
    matsuza 2009/02/01
  • Round 1A-C-Large - 西尾泰和のはてなダイアリー

    Google Code Jam Round 1AのC-Largeの問題「3 + sqrt(5) の20億乗の整数部を1000で割ったあまりを求めよ」(sqrtは平方根)という問題の解き方を教えてもらったので、自分の理解を確認するのもかねて解説を書いてみる。あと、数学的な記号の使い方に抵抗がある人も多いみたいだからプログラミング言語的な表現にこだわって書いてみる。 - まず背景知識として 式1: a[0] == A0 式2: a[1] == A1 式3: a[i + 2] == s * a[i + 1] + t * a[i]という条件が成り立つ数列aの一般項を求める方法について解説する。つまり、a[10000]の値は下のような9998回のループで求まるが、それをせずにいきなり求める方法について解説する。 a[0] = A0 a[1] = A1 for i in range(9998): a[

    Round 1A-C-Large - 西尾泰和のはてなダイアリー
    matsuza
    matsuza 2008/08/03
  • 1