Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【感想】ZERO BUGS シリコンバレープログラマの教え

バグやコーディングにまつわる四方山話

『SOFT SKILLSソフトウェア開発者の人生マニュアル』と同じところで似た装丁で出ている本。バグのない良いコードを書くにはどうしたらよいのか?というテーマを中心に、コーディング周辺の話題を様々な立場のエンジニアやプログラマーが贈る、エッセイ集です。
 『達人プログラマー』や『プログラマが知るべき97のこと』などに若干似ているし被る内容もあります。時代・言語を問わず普遍的なコーディングの原理・原則回りの話になればそうなるでしょう。しかしこちらの方が啓蒙というより純粋な読み物の色が強く、エッセイとして気楽に読めます。ちなみにバグといっても現役開発者の人が読んで怖くなるような話は出てきません。(笑)

 各エッセイは2ページ程度で短く、文中に実際のコードなどは出てこず、翻訳も日本語として不自然な所がないので割とすらすら読めます。LinuxとかFreeBSDとか専門的な言語など若干昔の話題もあれば、ユニットテストエクストリーム・プログラミングなど比較的新しい話題もあり。若い頃の小さな失敗の話やスケールの大きい宇宙開発の大きな話もあります。プログラムがパンチカードに記録されていた頃の話などおいおいどれだけ大昔だよ!という話も。
 話は時系列にまったく並んでおらず、ごった煮的に様々な話が入っているのが逆に面白い。各エッセイに添えられている格言やセリフ的なものもなかなか味わいがあります。

ZERO BUGS シリコンバレープログラマの教え

ZERO BUGS シリコンバレープログラマの教え

コードの博物館

 最後の方には1章使って実際のコード断片が並んでいます。20世紀の古いものが多いですね。
何を隠そうワタクシはポインタがよく分からなくてC言語は挫折したクチだし更に機械語に近いアセンブリ言語とか何それ?というレベルなのでぱっと見よくわからないものが多かったのですが、これらは本文にあるように「コードを味わう」如く、博物館のショーケースを順に見ていくように眺めていくものなのでしょう。

  • ソ連時代の赤の国のプログラマーが書いたコード
    (当時は西側の文化が入ってこないので、コメントを該当行の上でなく下に書く独特のスタイルが続いていたとのこと)
  • 1996年に欧州宇宙機関の打ち上げた「アリアン5」ロケットが打ち上げ後に爆発して80億ドルの大損害を出したコード
    (ぱっと見ただけではわかりませんが、最後の行で浮動小数点数を符号付整数に変換しようとしてオーバーフロー、クラッシュしてしまったそうです)
  • 2014年のApple iOS7で発覚したSSLバグ
    (当時も話題になりましたがこのコードは初心者でも分かりやすいですね。SSL接続の種類の分岐のif文の後の「goto fail;」が1か所だけコピペで2行あるのが誤動作の原因になっています。これやっちゃった人は本当にかわいそう……)
    if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
        goto fail;
    if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
        goto fail;
        goto fail;
    if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
        goto fail;

などなど、様々な時代の様々なコードが並んでいます。
 全体としては読み物の色が強いですが、コンピュータとコードの歴史の博物館を静かに巡るような気分になれる本です。