LoginSignup
9
2

More than 3 years have passed since last update.

日本で一般に広まっているプログラマ三大美徳の「短気」の解釈は変ではないか?

Posted at

Perlの生みの親Larry Wall氏が唱えたプログラマ三大美徳(怠惰、短期、傲慢)を基本的に私は好きなのですが、
「怠惰」と「傲慢」はともかく「短気」については何かしっくり来ていませんでした。

日本では「短気」の解釈として「将来を見越して拡張性とメンテナンス性の高いコードを書きましょうね」と言うのが広まっています。
実際、「プログラマ三大美徳」でGoogle検索した時に上位に来る記事の解釈はこれが多いです。

一般に広まっている解釈の元ネタ

これらの元ネタを辿って見ると、
日経XTechの小飼弾氏の記事に当たります。
小飼弾氏と言うとPerl界の大御所なのは言うまでもありませんし、Larry wall氏本人との親交も深い方ですので、信頼性の高い記事と評価されて盛んに引用されたのでしょう。

この記事の中で小飼弾氏はIMPATIENCEを引用しつつ以下のように訳しています。

IMPATIENCE
The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least that pretend to. Hence, the second great virtue of a programmer.
訳すとこんな感じしょうか。

短気
コンピューターが怠慢な時に感じる怒り。この怒りの持ち主は、今ある問題に対応するプログラムにとどまらず、今後起こりうる問題を想定したプログラムを書く。少なくともそうしようとする。よって、プログラマーの第二の美徳である。

その上で、プログラムの拡張性の重要性を記事の後半部分で例を交えて語っています。

ちょっと訳に違和感がある

ただ、ちょっとこの訳は変な気がします。
This makes you write programs that don't just react to your needs, but actually anticipate them.
の部分を今ある問題に対応するプログラムにとどまらず、今後起こりうる問題を想定したプログラムを書く。
と訳されていますが、素直に構文解釈するとanticipateの主語はprogramsになりますし、
themが指しているyour neeeds を将来の問題と訳すのは少々無理やりな気がします。

また、拡張性がないことをcomputer is being lazyと言って怒るのもよく分かりません。

「短気を備えたプログラマは、単にユーザーの要求に反応するだけではなくそれ(ユーザーのやりたいこと)を予見するようなプログラムを書く」
と言うような解釈の方が正しいのではないでしょうか。
要するに、やりたいことを先回りしてくれるプログラムを書くということで、
コードとしての拡張性の話と言うより、UI/UX系の話に見えます。

当たり前のことも分かってくれないcomputerに対して怠慢と怒るなら筋は通りますし。

Programming Perl 第4版の記述

実はこの三大美徳の定義、ラクダ本の後の版では全面的に切り替わっています。

Impatience
Impatience is that nasty feeling you get when the computer is doing what it wants instead of what you want. Or, more correctly, when the programmer on the other side of the software chose the wrong default settings, made a poor GUI, or doesn’t give you access to this data. You’ve experienced it enough to not inflict the same pain on other programmers, turning your frustration with your wasted time into a benefit for other people.

訳すと、
「短気」とはコンピュータがあなた(ユーザー)のやりたいことではなく、コンピュータがやりたいことを実行した時に不快に感じることだ。(この不快に感じる時はというのは)より正確に言えば、ソフトウェアを開発したプログラマが誤ったデフォルト設定をしたり、酷いなGUIを作ったり、必要な情報へのアクセス手段を用意していなかった時である。
あなたは同じ苦しみを他のプログラマに負わせる気がなくなるほどそのような経験をしたはずだし、そのフラストレーションと無駄にした時間を他の人々の利益に変換するべきだ。

と言うようなところでしょうか。(間違いがあったらご指摘お願いします)

具体例が追加されたことで、以前computer is being lazyと大雑把な書き方をされていたものが、プログラムの使い勝手が悪いことであると明確化されています。
要するに「不適切なUI/UXに不快感を感じ、同じようなプログラムを作らないようにすること」が「短気」と言うわけです。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2