心に響く、プログラム、コンピューターに関する優れた格言、名言
何度か紹介している下記の"Stack Overflow"は、エンジニアのためのQ&Aサイトです。
このサイトの、人気があるQAの中で、"great programming quotes(凄いプログラミングの格言)"と言うのがありましたので、その中から、特に心に響いたものを抜粋して和訳します。
» Great programming quotes - Stack Overflow
<余談>記事を投稿しようとしたら、このQAに掲載されている格言とオーバーラップしている全く別の記事を見つけてしまいました。しかも、すでに和訳されている文章がかなりあります。まぁ、ここまで作って、途中でやめるわけにも行かなかったので、このまま投稿しようと思います。今回掲載する訳文については、一応、自ら訳したオリジナルです。</余談>
格言が再帰してます。Hofstadter's Law:
It always takes longer than you expect, even when you take into account Hofstadter's Law.
( ホフスタッターの法則:作業は、いつだって予測以上に時間がかかるものだ。ホフスタッターの法則を計算に入れても。)
「凍っちゃってる仕様は、作ってもあまり意味が無い。」って話もあるけども。Walking on water and developing software from a specification are easy if both are frozen.
-- Edward V Berard
(水の上を歩くのと、仕様からのソフトウエア開発は、簡単だ。・・・両方とも凍っているならの話だが。)
何にでも余力は必要。Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
-- Brian Kernighan
(デバッグ作業は、最初にコードを書くときよりも倍難しい。したがって、自らの知恵を出来る限り振り絞って書いたコードは、その定義上、自分自身でデバック出来ない。)
コードやコメントに、証拠や個性を残すべからず。Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
-- Rick Osborne
(コーディングは常にこう、心がけるのだ。出来上がったコードを最後にメンテナンスするのが暴力的な精神病者で、そして、君の住所を知っていると。)
足したら180%。The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.
--Tom Cargill
(初めの90%のコードは、開発時間の90%を占める。残りの10%のコードは、他の90%の開発時間を占める。)
これは、下記の格言からの変形。
これでも十分、心に響く。The first 90% of the code accounts for the first 10% of the development time. The remaining 10% of the code accounts for the other 90% of the development time."
-- Jon Bentley
(初めの90%のコードは、開発時間の10%を占める。残りの10%のコードは、他の90%の開発時間を占める。)
格言と言うか、ジョークの類かも。Java is to JavaScript what Car is to Carpet.
(JavaScriptにとってのJavaは、「カーペット」にとっての「カー」。)
追加で、下記のサイトからの格言を、いくつか抜粋して訳します。
» 101 Great Computer Programming Quotes
言語に限らず何にでも当てはまる。There are only two kinds of programming languages: those people always bitch
about and those nobody uses.
-- Bjarne Stroustrup)
(この世には、2種類のプログラミング言語しかない。皆が常に不平を言う言語と、誰も使わない言語。)
The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
-- Seymour Cray
(プログラマーの困った点は、手遅れになるまで、何をしているか、けして分からないことだ。)
ぐさり。
自分(もしくは、誰か)が掘った穴を自ら埋める。これがすなわち仕事。Don't worry if it doesn't work right. If everything did, you'd be out of a job.
-- Mosher's Law of Software Engineering
(うまく行かなくても気にするな。全部うまく言ったら、君の仕事はなくなるのだから。)
理想:コードとは、仕様を書き落とした物。First, solve the problem. Then, write the code.
-- John Johnson
(まずトラブルを解決し、それからコードを書け。)
再帰は、時に人智を超える。To iterate is human, to recurse divine.
-- L. Peter Deutsch
(繰り返し処理は人の技。再帰的呼び出しは神の業。)
そして、構造化されすぎた言語は、誰も使いこなせない。There is no programming language--no matter how structured--that will prevent programmers from making bad programs.
-- Larry Flon
(下手なプログラムの作成を防げるプログラミング言語は存在しない。たとえどんなに構造化されていても。)
斧とも言う。サーバーを真っ二つに割るくらい酷くなる事も。Writing in C or C++ is like running a chain saw with all the safety guards removed.
-- Bob Gray
(C言語やC++で書くと言う事は、まるで、全ての安全装置が取り外されたチェーンソーで作り上げるようなものだ。)
優れすぎたコードは、凡人には理解できない、という話もある。Good code is its own best documentation.
-- Steve McConnell
(優れたコードは、コード自身が最良のドキュメントとなっている。)
確かに。酷いと家出とか引きこもりなど、発生するね。You can't have great software without a great team, and most software teams behave like dysfunctional families.
-- Jim McCarthy
(素晴らしいチームなしに、素晴らしいソフトウェアは生み出せない。そして、大部分の開発チームは機能不全の家族のように振舞う。)
リリースとは、「バグ」を「仕様」に変化させる工程である。If debugging is the process of removing bugs, then programming must be the process of putting them in.
-- Edsger W. Dijkstra
(デバッグ作業が、バグを取り除く過程であるならば、プログラミングとは、バグを入れ込む過程でないとおかしい。)
苦労すればするほど、元のコンセプトから外れていく。But what is it good for?
-- Engineer at the Advanced Computing Systems Division of IBM, commenting on the microchip, 1968
(で、それは何に使えるの?)
2009.5.23追記
コメントでアドバイスいただいた点を一部直しました。ありがとうございます。
この記事に関連するエントリー
- 様々なプログラミング言語のコードが見れるサイト『99 Bottles of Beer』
- 仕事:P.F.ドラッカー氏から学ぶ「涙目で仕事をしないSE」の意味
- 仕事:あったら良いな、こんな会社
- 仕事:汎用性は効率を生む、しかし、技術は非効率か?
- 仕事:客先で「分からない」と言ってはいけないのか

コメント
仕様が凍っていれば…という話に共感を覚えてしまいます。
さて、Java is to JavaScript what Car is to Carpet.なのですが、「JavaScriptにとってのJavaは、CarpetにとってのCar」…単語の一部分が共通していてもまったく違っているという意味だと思います。
あと、The trouble with programmers is that you can never tell what a programmer is doing until it's too late.の中のtellは、「わかる」という意味だと思います。手遅れになるまでプログラマが何をやっているのかわからないのが問題、というジョークですね。無論、手遅れになるまで言ってくれないプログラマというのも…ありがちで、困ります…
Posted by 電気どうぶつ at 2009年5月22日 22:02
電気どうぶつさん、こんばんは。
"Java is to ..."については、短いフレーズだったので、意味をどう汲み取るべきなのか結構悩みました。で、どうにでも取れるように訳して逃げたわけですが(笑)見透かされてしまいましたね。
tellはわかるですか。辞書引いたら確かにそう載っていました。さっそく直します。どうもでした。
Posted by nag
at 2009年5月23日 02:09
コメントする