アンドリュー・ハント,デビッド・トーマス:達人プログラマー

作成日: 2000-05-07
最終更新日:

プログラム道の伝達

ワインバーグやプローガーのように、よい文章を書いて伝達する方々がいる。 ワインバーグは「ソフトウェア文化を創る」の一連の本で、管理の大切さを説く。 しかし、管理ということばを聞いただけで、プログラマーは首をすくめる。 なぜ管理されなければならないのか。 そして、プログラマー上がりのリーダーは喜びいさんでこう息巻く。 「さあ、これで前のリーダーではできなかった思い通りの管理をするぞ」 または、意気消沈する。 「管理されるのだけでも嫌なのに、管理をするなんてまっぴらだ。」 この本は、プログラマーの立場に立っている。プログラミングに関してはもちろん、 チーム作業や会社の仕事をもプログラマーの視点から記述されている。その意味で貴重だと思う。 この本には 70 の「ヒント」が載っている。それぞれのヒントをかみしめながら仕事をしていこう。

補遺と実践

さて、この本の要約や、本文に記述し切れなかったソースコード、補遺などが次のサイトにあった。
http://www.pragmaticprogrammer.com/
現在は下記にある。
https://pragprog.com/book/tpp/the-pragmatic-programmer

このサイトから、ヒントのみを抜粋したページに行くことができる。そのページの HTML を見た。 このソースは一つ一つの table の td エントリーごとの大きさと背景の色、フォントの種類、 大きさを指定しているのであった。達人プログラマから見れば、これはおかしい。 ヒントの 11 にひっかかる。このヒントは "DRY ... Don't Repeat Yourself" である。 もちろん、このソースは自動的に生成されたものであることは間違いないだろう。 ヒントの 29 に、「コードを生成するコードを作成すること」とあるからだ。 しかし、DRY のヒントをもっとすっきりした形で実現する方法がある。 CSS (Cascaded Style Sheet) である。この訳書の 257 ページで 言及してあるではないか。

多重付記

ストループ効果

プログラミングにおけるストループ効果の解説があることを発見した。 同書の p.253 から引用する。

意味のない名前よりも始末に負えないのが誤解を招く名前です。だれかが既存のコードを指し示しながら、 「この getData というルーチンは、ディスクにデータを出力してたんです」と矛盾の指摘をしている光景を目にしたことはないでしょうか。

同書で言及しているストループ効果は下記にある。
https://pragprog.com/the-pragmatic-programmer/stroop-effect (2016-07-31) 。

ストレート・ジャケット効果

p.221 にはストレート・ジャケット効果について説明されている。 効果という名前をとっているので普遍的な現象かと思いきや、そうではないようだ。 その直後の説明文からすると、コーディング担当者に解決の余地を与えない設計は、 スキルや技芸といったプログラミング努力を奪い取ってしまう、という意味のことである。 ストレート・ジャケット(straitjacket)は拘束衣のことであり、 体を自由に動かせる範囲を極度に制限する拘束衣を自由度の低い設計にみたてたことばだろう。

私の知っている範囲では、設計の段階でコードの自由度を狭めるほど細かく規定している例はないと思う。 むしろ、設計がゆるいためにコーダーが戸惑っているのが現実ではないだろうか。

こんな話を聞いたことがある。外注業者にコーディングを頼むために、 ある元請はそそうがないように綿密な仕様書を作った。 きちんとした設計書を受け取った外注業者は驚いた:「ここまできちんとした設計書を見たのは初めてですよ。」 この驚きは、感謝もあるだろうがどこか呆れたところもあったのではないだろうか。 ひょっとしたら、このストレート・ジャケット効果を感じていたのかもしれない。 設計書にしたがってコーディングされたプログラムは正しく動き、このプログラムを適用したシステムも無事稼働した。 それでめでたしだったかというと、その外注業者は二度と採用されなかった。 単価が髙かったからである。(2019-12-20)

新装版

新装版がオーム社から出ているが、私は見ていない(2019-12-20)。

書誌情報

書 名達人プログラマー
著 者アンドリュー・ハント,デビッド・トーマス
発行日
発行元ピアソン・エデュケーション
定 価円(本体)
サイズ判 ページ
ISBN

まりんきょ学問所コンピュータの部屋コンピュータの本プログラミング > アンドリュー・ハント,デビッド・トーマス:達人プログラマー


MARUYAMA Satosi