偉大なプログラマは、複雑な問題への単純な解決策を見つける

2009年6月30日プラシャント
報告Filed under: その他

私は引用符、次のソースを見つけることができる、長い時間の後、

ジュニアプログラマは、単純な問題にシンプルなソリューションを作成します。 上級プログラマは、複雑な問題への複雑なソリューションを作成します。 偉大なプログラマは、複雑な問題への単純な解決策を見つける。

このエッセイから美しいソフトウェアチャールズコネルによって呼び出されます。

私のもう一つのお気に入りの1つの禅のPythonのです-

美しい醜いよりはましだ。
明示的、暗黙的よりも優れています。
シンプルな複雑なよりはましだ。
複雑な複雑よりも優れています。
フラットが良いネストより。
疎密よりも優れています。
読みやすさをカウントします。
特殊なケースは十分に規則を破るに特別ではありません。
ただし、実用性の純度を打つ。
エラーを黙って渡すことは決してしてください。
限り、明示的に沈黙させた。
あいまいさの面では、誘惑を推測することを拒否します。
が存在する必要が1つ、好ましくは1つだけ、それを行うにも明白な方法です。
場合を除き、オランダ語だがそのように最初に明らかにされないことがあります。
今はないよりはましだ。
は決して多い*右*今よりも優れています。
実装の場合は説明するために、それは悪いアイデアのハードです。
実装の場合は説明するために簡単ですが、それは良い考えかもしれない。
名前空間の1つが鳴る素晴らしいアイデア - のそれらの詳細を聞かせて!
-------------------------
しては古典的なタオプログラミングのです

-

リンク先のサイト上でのクレジットは

ジェフリージェイムズ訳

デュークフライシュマンヒラード転写された

Anupam TrivediはSajitha丹比、およびMeghshyamジャガンナートで送信

再度のHTML化されたとKragenシトラー編集

-

予約1 - サイレントボイド

したがって、マスタープログラマーspeakの過去形:

"いつにトラップフレームからのエラーコードを強奪することを学んだと
あなたがすることが時間を残しています。"

1.1

何か神秘的な、サイレント無効に生まれたが形成される。 一人で待つ
不動は、一度も、まだ一定の動きです。 これは、ソースです
すべてのプログラムです。 私は、私はそれタオの呼び出しは、その名前を知らない
プログラミング。

場合は、タオ素晴らしいですが、その後は、オペレーティングシステムに最適です。 場合は、オペレーティング
システムの場合、コンパイラは素晴らしいです素晴らしいです。 場合は、コンパイラは、素晴らしいです
次に、アプリケーションが最適です。 ユーザー満足ですが、存在する
世界の調和。

タオプログラミングの流れを離れて、朝の風に乗って返します。

1.2

タオマシン言語を出産しました。 マシン言語を出産
アセンブラ。

アセンブラのコンパイラを出産しました。 今では万アール
言語。

それぞれの言語は、その目的がありますが、謙虚に。 それぞれの言語表現
陰陽のソフトウェア。 各言語タオ内に配置しています。

COBOLででもしないプログラムの場合は、それを避けることができます。

1.3

冒頭では、タオされました。 タオ空間と時間を出産しました。
したがって、空間と時間の陰陽のプログラミングしています。

プログラマは、常に時間の不足しているタオを理解できない
自分たちのプログラムおよびスペース。 プログラマは、常にタオを理解する
十分な時間と空間を自分たちの目標を達成する必要があります。

どのようにされる可能性がそうでない場合は?

1.4

賢明なプログラマタオと言われる、それに従います。 平均
プログラマタオと検索についてはそれを言われる。 愚かなプログラマー
タオと言われると見て笑う。

それが笑いにされていないないタオだろう。

最高の音が一番聞いています。
が将来撤退する方法です。
偉大な才能人生の後半に自分自身を示しています。
であっても、完璧なプログラムはまだバグがあります。

-------------------------

予約2 - 古代マスターズ

したがって、マスタープログラマーspeakの過去形:

"プログラミングなしで3日後には、人生の意味になります。"

2.1

古い神秘され、深遠なのプログラマ。 我々は理解できない
自分の考えなので、すべて私たちの外観を記述するだけです。

認識し、キツネは、水の交差のように。 アラートは、上の一般的なように
戦場。 種類は、ホステスの彼女の客を迎えるように。 簡単なような
木材のuncarvedをブロックします。 不透明な、暗い洞窟の中にブラックプールのような。

誰が彼らの心の秘密を教えてできますか?

その答えはタオにのみ存在します。

2.2

グランドマスターチューリングはかつて、彼のマシンは夢見ていた。 彼が目を覚ました彼は
叫んだ:

"かどうか、私は、マシン、または午前夢見チューリング午前知らない
マシンは、私チューリング午前夢を見て!"

2.3

非常に大規模なコンピュータ会社のプログラマーは、ソフトウェアに行きました
会見し、上司への報告に戻り、と言っ:"どのような
他の会社のプログラマーの仕事? 彼らはひどく行儀とされた
外見に関心がない。 髪を長くされ、ボサボサとその
服しわされ、古い。 彼らと私たちのホスピタリティスイートの墜落は、
私のプレゼンテーションの中に失礼な音。"

マネージャーは言いました:"私が必要だが会議に送信されることはありません。 あれらの
プログラマは、物理的な世界を超えて住んでいます。 彼らの生活、不合理な考え
偶然の一致。 来ると限界を知ることなしにしてください。
介護がなければ、彼らのプログラムにのみ住んでいます。 なぜ彼らは気にする必要があります
社会慣習と?

"彼らは、タオの中で生きている。"

2.4

初心者がマスターに尋ねた:"ここでは、プログラマーであることのないデザイン、
書類やテストの彼のプログラム。 しかし、すべての人々、彼は彼のいずれかを検討知っている
世界で最高のプログラマー。 これはなぜですか?"

マスターのコメント:"これは、プログラマは、タオを習得しています。 彼は逝っている
設計のための必要を超えて、彼怒るしない場合は、システム
クラッシュが、気にせずに、宇宙を受け入れます。 彼は超えている
ドキュメントに必要な、彼はもはや気にもし誰かに自分のコードを見ている。
彼はテストの必要性を超えて、それぞれ自分のプログラムの最適です
自体は、穏やかな中にエレガントな、その目的は自明。 本当に
彼はタオの謎に入っている。"

-------------------------

予約3 - デザイン

したがって、マスタープログラマーspeakの過去形:

"プログラムがテストされている、それは遅すぎるのデザインを作るに
に変更します。"

3.1

ある一人のコンピュータトレードショーに行った男だった。 毎日、彼
入力すると、男性はドアのところにガードと語った:

"私は偉大な泥棒、万引きの私の偉業のために有名です。 存在する
了承、このトレードショーのunplunderedエスケープしてはならない。"

があるので数百万のがこのスピーチは大きく、ガード邪魔
内部のコンピュータ機器ドルだったので、慎重に男を見た。 しかし
男性だけでブースからブースへとさまよい、静かに自分自身に鼻歌を歌う。

男性は左に、ガード彼の脇を取り、検索自分の服が、
発見される何もなかった。

トレードショーの次の日には、男性は帰国し、ガードchided
言:"私は広大な戦利品は昨日、エスケープされたが、今日もされる
良い。"だから、ガード、彼が無駄にこれまで以上に密接に見ていた。

トレードショーの最後の日には、ガード彼の好奇心を抑制する可能性が
もはや。 彼と私は当惑を禁じえない"サー狼たちの絆"、"私が住んですることはできません
平和。 してください私を啓発する。 を盗んでいるのは何ですか?"

男は微笑んだ。 "私のアイデアを盗む午前"と述べた。

3.2

が一人、非構造化プログラムの書き込みは、マスタープログラマーだった。
初心者プログラマに彼の真似を求めても、書き込みを開始
非構造化プログラム。 ときは、初心者を評価するためにマスタ請うた
進捗状況は、マスタ非構造化プログラムを書くため、彼を批判
、"どのようなマスターに適していると言って、適切ではありません
初心者。 現在の構造を超越する前に、タオを理解する必要があります。"

3.3

ある一人軍閥の裁判所に配属されたプログラマーだった
呉。 軍閥のプログラマー質問:"どの設計が容易になります:
会計パッケージまたはオペレーティングシステムの?"

"オペレーティングシステムは、"プログラマーと答えた。

軍閥の不信の声を口にした。 "確かに、会計
パッケージには、オペレーティングシステムの複雑さの横に、"些細な彼
行った。

"あまりよくない"と、プログラマは、"時の会計パッケージのデザインは、
プログラマの人が持つとの間の仲介者として動作する別の
アイデア:どのように、どのように、そのレポートを表示する必要があります、動作しなければならないとどのようにする必要があります
税の法律に準拠します。 対照的に、オペレーティングシステムの限定されていません
外見による。 ときに、オペレーティングシステムの設計、プログラマ
マシンやアイデアとの間の単純な調和を目指しています。 これはなぜです
オペレーティングシステムを設計する方が簡単です。"

呉の武将うなずいて笑った。 "それがすべてともが、良い
は、デバッグしやすいですか?"

プログラマーの応答がないした。

3.4

マネージャは、マスタープログラマーに行って、彼の要件を示し
新しいアプリケーションのためのドキュメントです。 マネージャは、マスターに尋ねた:"どのくらいの
場合、私はそれに5つのプログラマーを割り当てるには、このシステムの設計に連れて行くのだろうか?"

"これは1年はかかるだろう"とマスター速やかに述べた。

"しかし、我々をすぐにも早くこのシステムが必要です! どのくらいの期間
場合、私はそれに十プログラマーを代入する?"

マスタプログラマの機嫌を損ねる。 "そのような場合では、2年はかかる"と述べた。

"そして、どうすれば私はそれに100のプログラマーを割り当てる?"

マスタプログラマは肩をすくめた。 "それから設計することはありません
完成した"と述べた。

-------------------------

図書4 - 符号化

したがって、マスタープログラマーspeakの過去形:

"よく書かれたプログラムは独自の天国です。不完全に記述されたプログラムです。
独自の地獄"。

4.1

プログラムをライトする必要がありますし、アジャイル、そのサブルーチンのように接続して
真珠の文字列です。 精神とは、プログラムの意図を保持する必要があります
〜の至るところに。 どちらも大きすぎる、または多すぎるほとんど存在する必要があります、どちらも
不必要なループも無駄な変数、構造体のどちらも不足も
圧倒的な剛性。

プログラムの最小驚き'の`法に従ってください。 これは何法ですか?
これは単に、そのプログラムは、常にユーザーの方法で対応する必要があります
少なくとも彼にびっくり。

プログラムに関係なく、どのように、単一のユニットとして行動しなければならない複雑になります。 プログラム
ロジックによって以内に監督されるべきではなく侵しよりも。

場合は、プログラムがこれらの要件に失敗すると、その状態になります
無秩序と混乱。 この問題を解決する唯一の方法は、リライトすることです
プログラムです。

4.2

初心者がマスターに尋ねた:"私は、いつか実行され、プログラムがある
時には中止します。 私は、まだ私はプログラミングのルールに従っている
全く困惑する。 これは何の理由ですか?"

マスターは答えた:"君のタオを理解しないと、混乱している。
のみをばかに彼の仲間の人間からの合理的な動作を見込んでいる。 どうして
マシンは、人間を構築してからそれを期待? コンピュータシミュレーション
決定のみタオ最適です。

"プログラミングのルールは、一時的なもののみタオ永遠です。 従って
する前に、悟りを受信するタオを考える必要があります。"

"しかし、どのように私は、悟りを受けている知っているのだろうか?"の質問
初心者。

"あなたのプログラムは正しく実行され、"マスターと答えた。

4.3

マスターは彼の初心者のためのタオの性質を説明していた。 "
タオのすべてのソフトウェアに具現されて - 関係なく、どのように取るに足りないの"と
マスター。

"タオの手には、開かれた電卓?"は、初心者の要請した。

"これは、"されている回答だった。

"タオのビデオゲームのですか?"は、初心者を続けた。

"これも、ビデオゲームでは、"マスターと述べた。

"そして、タオDOSでのパソコン用ですか?"

マスター咳、わずかに彼のポジションを移した。 "教訓を超えている
今日は、"と彼は述べた。

4.4

王子Wangのプログラマはソフトウェアのコーディングされた。 彼の指に踊った
キーボード。 このプログラムはエラーメッセージを表示せずにコンパイルし、プログラム
穏やかな風のように走った。

"すばらしい!"プリンス"あなたのテクニック非の打ち所が叫んだ!"

"テクニック"プログラマーの彼のターミナルから、"転換とは何
次のタオです - すべてのテクニックを超えて! 私が最初に私はプログラムを開始
私の前に1つの質量の問題全体を参照している。 3年後、私は
もはやこの集団を見た。 その代わり、私のサブルーチンを使用します。 しかし、今私は何も参照してください。
私の全されて混沌と無効に存在します。 私の感覚がアイドル状態です。 私の精神は、
計画なしに動作するように無料で、独自の本能に従います。 要するに、私のプログラム
自分自身を書き込みます。 trueの場合、時には難しい問題です。 私はそれらを参照してください
今後、私は遅く、私は黙って見る。 それから私は、単一のコード行を変更する
との難しさがアイドル状態の煙のパフのように消える。 次にコンパイル
プログラムです。 私はじっと座っているとの仕事の楽しさを埋めるよう私ている。 私は近い私
一瞬目をしてからログオフします。"

王子王"は、すべて私のプログラマーとして賢明だったか"と言った。

-------------------------

予約5 - メンテナンス

したがって、マスタープログラマーspeakの過去形:

"しかし、プログラムは3つの行の長さいつかする必要があります
を維持した。"

5.1

よくドアの使用は、ヒンジには石油が必要です。
迅速に流れているストリームの停滞成長していません。
どちらもサウンドも思いの真空を通過することができます。
ソフトウェア腐る場合には使用されません。

これらの大きな謎です。

5.2

マネージャはどのくらいの時間、彼は最後までかかるだろうプログラマ質問
これで彼は働いていたプログラムです。 "明日、"終了予定
プログラマは速やかに答えた。

"私は非現実的なされていると思う"とマネージャーは、"正直に言えば、という方法を
時間がかかるのだろうか?"

プログラマは、しばらく考えた。 "私には、希望いくつかの機能があります。
追加する。 これは、少なくとも2週間、"ようやくというかかります。

"それさえも多すぎる期待するのは、"、"私はされるマネージャの主張
するだけであれば、プログラムが完了すると教えて満足して。"

プログラマはこのことに合意した。

数年後に、マネージャーは引退した。 引退するための方法で
昼食会で、彼は眠っていた端末では、プログラマを発見した。 彼はされていた
一晩中プログラミング。

5.3

初心者プログラマは1回、単純な金融パッケージコードに割り当てられていた。

初心者しのぎを削って何日で働いたときに、主人の見直し
彼のプログラムは、彼はそれはスクリーンエディタの設定が含ま発見
一般的なグラフィックスルーチンは、人工知能のインターフェイスが、
何かのわずかな言及金融ありません。

ときに、マスタは、このについての質問は、初心者に憤慨した。 "てはいけない
ので、せっかちな、"彼は、"私は、金融もので、最終的に置くだろう"と述べた。

5.4

良い農家を怠ると植えられている作物ですか?
いい先生かも、最も謙虚な学生を見落とす?
いい父親に単一の子餓死することができますか?
優秀なプログラマーかが自分のコードを維持することを拒否?

-------------------------

図書6 - 管理

したがって、マスタープログラマーspeakの過去形:

"プログラマーや経営者の多くいくつかのことてみよう - そのすべてになります
生産的である。"

6.1

ときに管理者無限の会議を開き、プログラマがゲームを記述します。 いつ
会計四半期の利益の話は、開発予算は約する
削減される。 時の上級科学者青空トーク、雲についてロールバックするアール
〜で。

本当に、これは、タオのプログラミングではありません。

ときに管理者のコミットメントを行うと、ゲームのプログラムは無視されます。 いつ
会計士長いような計画を立て、調和と秩序に関するものにされます
復元されます。 時の上級科学者たちの手で問題を解決する、
問題をすぐに解決されます。

本当に、このタオプログラミングの一つです。

6.2

なぜプログラマは非生産的ですか?
ので、自分の時間を会議で無駄になります。

なぜ、プログラマは反抗的な?
これは、管理すぎを妨げます。

なぜ、プログラマは1つ1つの辞任ですか?
ので、燃え尽きている。

経営不振のため、彼らはもはや価値が職を勤め。

6.3

マネージャの詳細については、しかし、解雇されるためだったのですが彼のためにプログラマの仕事
その人気となり、よく売れたの新しいプログラムを発明した。 結果として、
マネージャーの仕事に保持。

マネージャは、プログラマのボーナスを与えることを試みましたが、プログラマ
と言って、"私はプログラムのため、私はそれだと思った書き込みは拒否
私は報酬を期待興味深いコンセプト、つまり"。

この、"これは、プログラマと話した話を聞いてマネージャーかかわらず、彼を保持する
小さな自尊心の位置だけの適切な義務を理解する
従業員。 私たちの管理の高い地位に彼を促進しよう
コンサルタント!"

しかし、プログラマは1回以上、拒否すると、"私は存在するというこのように述べた
私ができるプログラムです。 もし私が推進され、私は何が無駄かと
みんなの時間。 私は今行っていい? 私は、プログラムは、私が働いている。"

6.4

マネージャーは、プログラマに行って、彼らに言った:"として、あなたの仕事に関して
時間:あなたの9時前に来て、残しているつもりです
午後5で"この時、すべての彼らの怒りとなり、いくつかの
その場で辞任した。

そのため、マネージャーは言いました:"その場合、あなた自身の設定することがすべての権利、
などあなたのスケジュールでプロジェクトを完了として、長い労働時間"。
プログラマは、今、満足の正午に来て、おしっこする研究を始めた
朝の時間です。

-------------------------

予約7 - 企業の知恵

したがって、マスタープログラマーspeakの過去形:

"あなたは企業経営者のためのプログラムを示すことができますが、することはできません
彼のコンピュータを使いこなせること。"

7.1

初心者がマスターに尋ねた:"で、東にある大きな木が構造
男性はコール`本社'。 これは図形のうちに肥大化され
副社長と会計士。 このメモは、それぞれの多数の問題
`移動し、そのためだ! または`移動し、ここへ! 、誰が何を意味を知っている。 すべての
今年、新しい名前の枝には入れているすべての無駄だった。 どのようにすることができます
このような不自然なエンティティはできますか?"

マスターは答えた:"あなたは、この巨大な構造を感知している
それは合理的な目的を持って邪魔。 あなたから遊園地を取ることができません
その無限の曲折を経? あなたはプログラミングの安らかなやすさをお楽しみください
その避難所の枝の下にある? なぜあなたに悩まされ、その
無用?"

7.2

で、東にある他のすべての魚よりも大きくされているサメです。 それ
その羽雲が空を充填のようなものを鳥に変更されます。 この
全国的な鳥の動きは、企業からのメッセージをもたらす
本部があります。 それはプログラマーの中にしましたこのメッセージは、
カモメは、ビーチには、マークを作るような。 その後、鳥にマウント
風と、その奥に青空、帰国している。

鳥を不思議そうに、初心者プログラマの視線のため彼はそれを理解して
〜でない。 平均的なプログラマー怖がる鳥の到来を彼は懸念
そのメッセージを。 マスタプログラマは自分の端末では、仕事を続けて
彼は、鳥の来ているとなっ知りません。

7.3

象牙の塔の魔術師の彼の最新の発明をもたらした
マスターのプログラマーを確認します。 魔術師に大きな黒いボックスの輪
マスターのオフィスにいる間は、マスター沈黙の中で待っていた。

"これは、統合、配布、汎用のワークステーション"が始まって
マジシャン、"人間工学に基づいた独自のオペレーティングシステムの設計
システムは、第6世代言語、芸術、ユーザーの複数の状態
インターフェイス。 それを構築する私のアシスタントが数百人の男年を要した。
素晴らしいことですか?"

マスター少し彼を驚かせた。 "確かに、"驚くべきそれは彼
行った。

"企業の本部を指揮している"魔術師"が続き、
誰も、新しいプログラムのためのプラットフォームとしては、このワークステーションを使用します。 同意しない
これに?"

"確かに、"マスターは答えた、"私はそれに運ば必要があります
すぐにデータが中心!"そして、マジシャン彼の塔によく返される
喜んで。

数日後には、初心者がマスターの事務所に迷い込んだ
プログラマと述べ、"私は新しいプログラムのリストを見つけることができません。 する
それをどこにすることがありますか?"

"はい"、"リストは、プラットフォームの上にスタックされているマスター答えた。
データセンター"。

7.4

恐れることなくプログラムをプログラムからマスタプログラマに移動します。 いいえ
管理に変更する彼の害をすることができます。 彼は、解雇されない場合でも、
プロジェクトはキャンセルされます。 これはなぜですか? 彼はタオでいっぱいです。

-------------------------

図書8 - ハードウェアとソフトウェア

したがって、マスタープログラマーspeakの過去形:

"風がなければ、草は移動しません。 ソフトウェアがなければ、ハードウェアが
役に立たない。"

8.1

初心者がマスターに尋ねた:"私は、1台のコンピュータ会社の多くは知覚
他のすべてよりも大きい。 巨人の間のような競争の上に塔
矮星。 その部門のいずれかが事業全体を構成することができます。 のはなぜです
このように?"

マスターは、"なぜそのような愚かな質問をすると答えた? その会社
これは大規模が大きいです。 もしハードウェアだけで行った、誰も購入希望
それ。 それが唯一のソフトウェアを開発した、誰もそれを使用します。 場合にのみ維持
システムは、人々はサーバントのように扱うだろう。 しかし、これはすべての組み合わせ
これらの事柄は、人々は神の一つと思います! しようとしていないこと
努め、その努力もせずに打ち勝つ"。

8.2

マスタプログラマは、初心者プログラマの一日を可決した。 マスタ注意
手では、初心者の先入観のコンピュータゲームを開催した。 "すみません"
彼は、"私はそれを調べることがあります?"

初心者の注目をボルトで固定し、マスターするためにデバイスを渡した。 "私は
は、デバイスの再生の3つのレベル:簡単、Medium、およびていると主張して参照してください
ハードディスクは、"マスターと述べた。 "しかし、このような各デバイスを別のレベルを持っています
ゲームここでは、デバイスは、人間も征服する征服しないように求める
人間が。"

"祈り、素晴らしいマスタ"、"どのように一本を見つける場合は、初心者の懇願
神秘的な設定は?"

マスタは、地面には、デバイスを落として足元に砕いた。 および
突然、初心者の悟りを開いた。

8.3

ある一人のマイクロプロセッサに働いているプログラマでした。 "を見てどのように
裕福な私はここにいる、"彼は訪問しているメインフレームのプログラマーに言った。
"私は自分のオペレーティングシステムが、ストレージデバイスのファイルです。 私が持っていない
誰とでも共有する私のリソース。 ソフトウェアの自己と一致している
簡単に使用します。 なぜあなたはあなたの現在の仕事を辞めるか、ここで私と一緒?"

メインフレームのプログラマーして彼の友人に、自分のシステムの説明に始まり、
"メインフレームの古代サルビアの中で瞑想のように座ってと言っ
データセンターの。 そのディスクドライブのエンドツーうそ末までには素晴らしい海のような
機械。 このソフトウェアは、ダイヤモンドとしては複雑な多面的
太古のジャングルのよう。 システムを介してのプログラムは、それぞれ固有の移動
迅速に流れる川のように。 だから私はここで私は嬉しいです。"

マイコンのプログラマーは、この話を聞いて、沈黙した。 しかし、2つ
プログラマーたちが日の最後までお友達と残った。

8.4

ハードウェアChangtseへの道をソフトウェアに会った。 ソフトウェアは言いました:"あなたは
陰と私はヤンです。 僕たちが一緒に有名なとなり得るの旅行
巨額の"そしてので、設定など一緒に征服を考えて
世界。

現在は、ファームウェア、人ボロボロのぼろを着て、苦しむが満たさ
に沿ってイバラの杖に支えられて。 ファームウェアをかれらに言った:"タオにある
陰陽を超えて。 それは、まだ水のプールのように静かです。 それはない
名声を求めていないので、誰もその存在を知っている。 それを求めていない
幸運は、それ自体には完了です。 それは空間を超えて存在する
時間。"

ソフトウェアおよびハードウェア、恥じて、自宅に戻った。

-------------------------

予約9 - エピローグ

したがって、マスタープログラマーspeakの過去形:

"これは時間を取って残している。"

-------------------------

もしこれらが好き、また悪化を読むようなことが優れている

コメント

    ブログのコメントディスカスによって供給さ