ポール・グレアム「デザインの哲学」を翻訳しました。原題は Design Philosophy で、原文はココです。 英語に強いみなさま、アドバイスをよろしくお願いいたします。なお翻訳にあたり、id:ululun様、shiro様、id:ttamo様のアドバイスをいただいております。ありがとうございます!!

デザインの哲学
Design Philosophy

Arcを良いプログラマ用の言語にデザインしたことで、私たちは非難された。この議論では、良いデザインとは「ユーザのニーズを理解していること」とし、大部分のプログラマは良いプログラマではないとする。
We've been criticized for designing Arc as a language for good programmers. Good design, the argument goes, means understanding the needs of your users, and most programmers are not good programmers.

さて2台の車を考えよう。1973年のキャデラックのCoupe de Villeと、1973年のポルシェ911だ。キャデラックは普通のドライバーの好みに合うように慎重にデザインされた。911は性能を第一に設計された。どちらのほうが良いデザインだろうか?
So let's consider two cars: the 1973 Cadillac Coupe de Ville and the 1973 Porsche 911. The Cadillac was carefully designed to appeal to the average driver. The 911 was designed for performance. Which one is better design?


1973年 キャデラックのCoupe de Ville

1973 Cadillac Coupe de Ville



1973年 ポルシェ911E

1973 Porsche 911E


わざと1973年の画像を選んだ。流行に左右されていないほうが、デザインの良し悪しを判断しやすいからだ。(昔の高校の卒業アルバムにある髪型を見て欲しい)
I chose images from 1973 deliberately. It's easier to tell good design from bad when you're not looking at current fashions. (Try looking at the haircuts in an old high school yearbook.)

良いデザインは永遠だ。そして何かを永遠なものを求めるなら、仮想的な「平均」ユーザのレベルに迎合してはいけない。目標としてあいまいすぎるし、狙いが外れやすくもあるからだ。一般ユーザーはあなたが思うほどバカではないかもしれない。
Good design is timeless, and if you want something timeless you can't pander to the limitations of some hypothetical "average" user. It's too vague a target. It's also a moving target: the average user might not be as stupid as you think.

ポルシェ911で起きたことに注目しよう。キャデラックより良いのは子供にもわかるほど明白だ。だから1980年代までには、キャデラックは麻薬の売人に向けたデザインをしたにもかかわらず、当の麻薬の売人たちでさえポルシェ911Sを欲しがった。
Look what happened with the 911. It's so obviously superior to the Cadillac that a child could tell it's better. And so, by the 1980s, even the drug dealers that the Cadillac was designed for wanted 911s instead.

同じことが言語にも起こる。すばらしい言語はC、Smalltalk、Lispのように、良いプログラマが自分で使うためにデザインしたものだ。「平均的な」プログラマ向けに設計された言語は(Cobol、Pascal、Ada)、進化の袋小路に迷い込むことが多かった。
The same thing happens in languages. The great languages have been the ones that good programmers designed for their own use-- C, Smalltalk, Lisp. The languages that were consciously designed for "average" programmers (Cobol, Pascal, Ada) have tended to be evolutionary dead ends.

デザインで信頼できる唯一の指針は性能だ。性能とは実行速度のことではない。それは文字通りに解釈しすぎだ。実行速度は重要だが、プログラミング言語とは、何よりもまずその言語で考えるためのツールだ。Arc で考えるとポルシェ 911 を運転しているように感じる、というのが私たちの望みだ。
The only reliable plan is to design for performance. Performance doesn't mean speed; that's taking the metaphor too literally. Speed counts, but a programming language is first of all a tool for thinking in. We want thinking in Arc to feel like driving a 911.

(そうなるとは言ってない。それが目標だと言っているだけだ)
(I'm not claiming it will, just that that's the target.)