ポヌル・グラハム蚭蚈ず研究





ポヌル・グラハム、 蚭蚈ず研究 、2003幎1月



ハッカヌずアヌティスト 、第15ç« 

蚭蚈ず研究

knagaevを翻蚳しおいただきありがずうございたす



この蚘事には基本的に2002幎秋のNEPLSでの基調講挔が含たれおいたす



アメリカに来る人は、アメリカ人が「䜕をしおいるの」ずいう質問で䌚話を始めるのに驚かされるこずがよくありたす。私はこの質問が奜きではありたせんでした。 私はそれに察しおたずもな答えをほずんど聞いおいたせん。 しかし今、私はこの問題を解決したず思いたす。 今、誰かが私が䜕をしおいるのかず尋ねたら、私は圌をたっすぐ芋お、「 新しいLisp方蚀を蚭蚈しおいたす」ず蚀いたす。私はこの答えを圌らの仕事に興味がない人にお勧めしたす。 䌚話はすぐに他のトピックに倉わりたす。



プログラミング蚀語を勉匷しおいるずは思わない。 私はそのうちの1぀を蚭蚈しおいたすが、誰かが建物、怅子、たたは新しいフォントをどのように蚭蚈できたすか。 私は新しい䜕かを発芋しようずはしおいたせん。 プログラミングに適した蚀語を䜜成したいだけです。 ある皋床たでは、人生がずっず楜になりたす。



デザむンず研究の違いは、新しいものず良いもののコントラストに䌌おいたす。 アヌキテクチャ゜リュヌションは新しいものではありたせんが、高品質でなければなりたせん。 この研究の結果は正確である必芁はありたせんが、新しいものでなければなりたせん。 これらの2぀のパスは䞊に収束するず思いたす。最高のデザむンは、新しいアむデアの䜿甚に基づいお前任者を䞊回り、最高の研究は、実際には解決に倀するほど新しいものではない問題を解決したす。 そのため、最終的な分析では、1぀のこずを目指しお努力したす。異なる偎面から移動するだけです。



画像



今日は、あなたの目暙がどのように芋えるかに぀いおお話したいず思いたす。 プログラミング蚀語を研究のトピックずしおではなく、デザむンのオブゞェクトずしお考えるずき、あなたはどう違うのですか



最倧の違いは、ナヌザヌにより重点を眮くこずです。 蚭蚈は質問から始たりたす。これは誰のために、䜕のために必芁なのでしょうか 特に、優れたアヌキテクトは、゜リュヌションを䜜成しおナヌザヌに匷制的に絞るのではなく、可胜性の高いナヌザヌを調べおニヌズを評䟡するこずから始めたす。



泚意しおください、私は「圌らの願い」ではなく「圌らのニヌズ」ず蚀いたした。 デザむナヌの仕事ずは、クラむアントだけが欲しくないものをすべお焌き䞊げるような仕事を意味するずいう印象を䞎える぀もりはありたせん。



「買い手は垞に正しい」ずいうこずは、デザむンがナヌザヌにずっお有効であるずいうこずです。 誰もが退屈する小説を曞いたり、ひどく䞍快な怅子を䜜った堎合、あなたは時代遅れに働きたした。 あなたは小説や怅子が最新の理論的原理を念頭に眮いお蚭蚈されおいるずいう事実に぀いおはたったく蚱されおいたせん。



それでも、ナヌザヌに合ったものを開発するこずは、圌があなたに蚀うこずをするこずを意味したせん。 ナヌザヌはすべおの機胜を知っおいるわけではなく、倚くの堎合、本圓に欲しいものを間違えおいたす。



私の意芋では、このパラドックスの解決策は、ナヌザヌ専甚に蚭蚈する必芁がありたすが、圌が話しおいるりィッシュリストではなく、圌が必芁ずするものを蚭蚈するこずです。 これは治療に非垞に䌌おいたす。 患者のみの症状を治療するこずはできたせん。 患者が圌の症状に぀いおあなたに話すずき、あなたは圌の本圓に悪いこずを解明し、それを治療しなければなりたせん。



ナヌザヌの芁件に焊点を圓おるこずは、適切な蚭蚈の技術のほずんどが基盀ずしおいる原則の1぀であり、ほずんどの問題が焊点を圓おおいたす。



正しい゜リュヌションがナヌザヌの芁件を満たす必芁がある堎合、このナヌザヌは誰ですか 蚭蚈はナヌザヌ向けであるべきだず蚀っおも、これは品質プロゞェクトが最小公分母を目指すこずを意味するものではありたせん。 必芁なナヌザヌグルヌプを遞択できたす。 たずえば、ツヌルを開発しおいる堎合、初心者から専門家たで誰でも蚭蚈できたすが、あるグルヌプにずっおは良い゜リュヌションになるものは、別のグルヌプには受け入れられないかもしれたせん。 䞀番䞋の行は、ナヌザヌの特定のグルヌプを遞択する必芁があるずいうこずです。 ある仮想ナヌザヌに関連する堎合を陀いお、あなたはデザむンを貧匱に評䟡する暩利さえ持っおいないず思いたす。



おそらく、デザむナヌ自身がタヌゲットナヌザヌのグルヌプに含たれる堎合、優れた゜リュヌションを実珟できたす。 関係のないグルヌプのために䜕かを開発するずき、通垞、これらの人々は自分に比べお単玔であるず考えるこずがわかりたす。



これは困難な状況です。なぜなら、ナヌザヌを軜、しおいるにもかかわらず、デザむナヌは必然的に砎損するからです。 アメリカでは、埌に䜏むこずを蚈画しおいる建築家によっお開発された䜏宅建築プロゞェクトはほずんどないず思われたす。 プログラミング蚀語でも同じこずがわかりたす。 C、Lisp、Smalltalkは自分甚に䜜成されたした。 Cobol、Ada、およびJavaは、他の人が䜿甚するために䜜成されたした。



あなたがばかのために蚭蚈しおいるず思うならば、あなたがばかのためにさえ、あなたが良い䜕かを䜜成するほずんどチャンスがありたせん。



それでも、最も資栌のあるナヌザヌ向けに䜕かを蚭蚈したずしおも、それは人々のために行いたす。 研究分野の別の状況。 数孊では、人々が簡単に理解できるように抜象化を遞択したせん。 プルヌフを短くするものを遞択したす。 これはすべおの䞻芁な科孊分野に圓おはたるず思いたす。 科孊的な蚈算は人間工孊的である必芁はありたせん。



アヌトでは、すべおが異なりたす。 完党に人のために蚭蚈する。 人䜓は奇劙なデザむンですが、怅子をデザむンするずき、それはたさにあなたが䜕のために䜕をしおいるのかであり、それ以倖の䜕のためでもありたせん。 芞術のすべおの圢態は、人間の願いず圌の欠点に応えるべきです。 たずえば、他の同じコンテンツでペむントする堎合、人のいる写真は人のいない写真よりも面癜いでしょう。 そしお、これはルネサンスの偉倧なキャンバスが人々の画像で満たされおいるずいう単なる歎史的な事故ではありたせん。 そうでなければ、芞術ずしおの絵画はそれほど人気が​​ありたせん。



奜むず奜たざるずにかかわらず、プログラミング蚀語も人々を察象ずしおいたす。人間の心は人間の䜓ず同じくらい䞍噚甚で独特なものだず思いたす。 䞀郚のアむデアは人々が簡単に把握でき、䞀郚はそうではありたせん。 たずえば、個々の芁玠を操䜜する機胜は非垞に限られおいるようです。 これが、プログラミング蚀語をそもそも有甚な発明にする理由です。 倚くの芁玠を念頭に眮くこずができれば、マシンコヌドでプログラムするだけです。



たた、蚀語は、原則ずしお、既成のプログラムを䜜成するための手段ではなく、どのプログラムを開発する必芁があるのか​​ずいうこずに泚意しおください。 芞術家なら誰でも、異なる状況では異なる玠材が必芁になるかもしれないず蚀うこずができたす。



たずえば、倧理石は既補のアむデアをデザむンするための矎しく信頌性の高い玠材ですが、新しいアむデアを䜜成するのにはふさわしくありたせん。



蚌明のようなプログラムは、誀っお分岐を開始し、䞍良な分岐が削陀されるツリヌです。 そのため、蚀語の品質をチェックするこずは、完成したプログラムがどれほど矎しく芋えるかではなく、この完成したプログラムぞの道がどれほど単玔かずいうこずです。 完成したプログラムの優雅さを提䟛するオプションは、必ずしも゚レガントな開発プロセスを提䟛するわけではありたせん。 たずえば、小さなダむダモンドのように芋えるネストされた逆匕甚笊でいっぱいのマクロ定矩を䜿甚しおいく぀かのマクロを曞いたが、それらを曞くこずは詊行錯誀によっおうんざりするコヌディングに䜕時間もかかりたした、そしお正盎に蚀うず、それらが完党にあるかどうかは完党にはわかりたせん完璧です。



倚くの堎合、完成したプログラムの倖芳を䜿甚しお蚀語を評䟡したす。 2぀の異なる蚀語で曞かれた問題の解決策を怜蚎するず、これは非垞に劥圓なように芋え、プログラムのバヌゞョンの1぀が他のバヌゞョンよりもはるかに短いこずが刀明したした。 しかし、芞術の芳点からこの問題に取り組むず、おそらくこの方法でのテストぞの䟝存床は䜎くなりたす。 最終的に倧理石のようなプログラミング蚀語を手に入れたいずは思わないでしょう。



たずえば、゜フトりェア開発の倧きなブレヌクスルヌはトップレベルのむンタラクティブ環境であり、LispではREPL環境たたはread-eval-printルヌプず呌ばれたす。 そしお、そのような環境が実珟されるず、蚀語の蚭蚈に実際の効果がありたす。 たずえば、䜿甚する前に倉数を宣蚀する必芁がある蚀語ではうたく機胜したせん。 察話匏環境で単玔に匏を入力する堎合、x倀を割り圓おお䜿甚を開始したす。 最初に型xを宣蚀するこずを匷制されたくありたせん。 これらの各仮定に挑戊するこずができたすが、実装されたトップレベル環境を持぀蚀語が䟿利な蚀語ず芋なされ、必須の型宣蚀がこの環境ず互換性がない堎合、型宣蚀を必須にする蚀語はどれもプログラミングに䟿利ではありたせん。



実際には、優れたデザむンを実珟するためには、ナヌザヌの芪しい友人になっお、それらを維持する必芁がありたす。 特に初期段階では、実際のナヌザヌを䜿っおアむデアを継続的に磚く必芁がありたす。 ゞェヌンオヌスティンの小説がずおも良い理由の1぀は、圌女が家族に倧声で読んだこずです。 だからこそ、圌女は自分の匱点を決しお甘やかすこずはなく、颚景や哲孊の哲孊の矎的描写に陥るこずはありたせんでした。 哲孊は存圚しおいたしたが、物語のように織り蟌たれ、ラベルのように䞊にくっ぀いおいたせんでした。「文孊」の平均的なサンプルを開いお、自分で曞いたように友達に声を出しお読んだず想像するず、読者に䜕がかかるのかをはっきりず感じるでしょう。



゜フトりェア開発の䞖界では、このアむデアは「悪いほど良い」ずしお知られおいたす。 実際、この抂念にはいく぀かのアむデアが組み合わされおいたすが、その真理はただ議論されおいたす。 しかし、このコンセプトの䞻芁なコンポヌネントの1぀では、新しいものを開発する堎合は、できるだけ早くプロトタむプをナヌザヌの前に眮く必芁があるず述べおいたす。



逆のアプロヌチは、Hale Mary戊略「幞運を祈る」ず呌ばれたす。 プロトタむプを迅速にリリヌスしおから埐々に改善するのではなく、タッチダりン付きの1぀のロングパスずしお完党な完成品をすぐに䜜成するこずができたす。 私の知る限り、これは灜害のレシピです。 この道は、ドットコムバブルの間に無数のスタヌトアップによる自己砎壊をもたらしたした。 このアプロヌチが機胜する単䞀の事䟋は聞いたこずがありたせん。



プログラミングの䞖界以倖では、「悪いほど良い」ずいう原則がアヌトの至る所に芋られるこずに気付かない人もいるかもしれたせん。 たずえば、芖芚芞術では、この考えはルネッサンスの間に発芋されたした。 ほがすべおの描画教垫が、正確な画像を取埗するための唯䞀の正しい手法は、オブゞェクトの茪郭に沿っおゆっくりず移動するこずではないこずを教えおくれたす。䞍正確さが蓄積され、最終的に線が䞀臎しないこずがわかりたす。 それどころか、適切な堎所でいく぀かのクむックストロヌクをスケッチしおから、この最初のスケッチを埐々に改良する必芁がありたす。



芞術の倚くの分野では、プロトタむプを䜜成するために他の材料が長い間䜿甚されおきたした。 金属から切り取られたフォントの行列は、最初にブラシで玙に描かれたす。 青銅で鋳造するための圫像は、ワックスから事前に成圢されおいたす。 タペストリヌ刺繍の食りはむンクで玙に描かれおいたす。 石造りの建物は、朚補暡型の圢で瞮小されたスケヌルで怜査されたす。



15䞖玀に人気が出たずきに油圩画がずおも有望だったのは、プロトタむプから最終結果を埗る機䌚でした。 必芁に応じお、倧たかなドラフトを䜜成できたすが、添付されおいたせん。 すべおの詳现を明確にし、それに取り組むプロセスで倧幅な倉曎を加えるこずができたす。



゜フトりェアを䜿甚するず、同じこずができたす。 プロトタむプは単なるレむアりトである必芁はありたせん。 倉曎しお最終補品を入手できたす。 これが可胜な堎合は、すべおの堎合にこれを行うべきだず思いたす。 これにより、開発プロセス䞭に生じる新しい掞察を掻甚できたす。 しかし、非垞に可胜性が高く、さらに重芁なのは、プロトタむピングが前向きな姿勢に圹立぀こずです。



ポゞティブな仕事粟神はデザむンの決定的な芁因です。 泚目する人が少ないこずに驚かされたす。 私の最初の絵垫の䞀​​人が私に蚀ったあなたが絵を描いお退屈しおいるず、あなたの絵は退屈になるだろう。 たずえば、建物を描く必芁があり、各レンガを個別に描くこずにしたずしたす。 必芁に応じおそれを行うこずができたすが、途䞭で退屈を感じ、それぞれの品質を芳察するのではなく機械的にレンガを圫刻し始めるず、画像を指定した堎合よりも悪くなりたす。



プロトタむプを埐々に改善しながら䜕かを䜜成するこずは、あなたが情熱を持ち続けるため、気分に良いです。 ゜フトりェア開発では、このルヌルがありたす。コヌドは垞に機胜しおいる必芁がありたす。 1時間以内に確認できるものを曞くず、やる気を起こさせる迅速なプロモヌションの芋蟌みがありたす。 アヌト、特に油絵でも同じこずが蚀えたす。 ほずんどのアヌティストは挠然ずしたスケッチから始たり、埐々にそれを描きたす。 このような方法で䜜業する堎合、未完成に芋える䜕かのために倕方に本質的に停止するこずはありたせん。 確かに、アヌティストには「図面は決しお完成するこずはできたせん。䜜業をやめるこずしかできたせん」ずいう栌蚀さえありたす。 この考え方は、゜フトりェアを開発した人なら誰でも知っおいたす。



態床は、熟緎しおいないナヌザヌのために䜕かをするこずが難しいもう1぀の理由です。 自分が嫌いなものに興味を持ち続けるのは難しいです。 良いものを䜜成するずきは、「すごい、それは本圓に玠晎らしい」ず考えるべきであり、「䞀䜓䜕なのか」ではありたせん。 たあ、これらのバカはそれを奜きになるでしょう。」



蚭蚈は、人々の創造性ずしお理にかなっおいたす。 しかし、ここでは人々は単なるナヌザヌではありたせん。 デザむナヌも人間です。



通知、私は垞に特定の個人ずしおの「デザむナヌ」に぀いお話したす。 蚭蚈゜リュヌションが任意の品質であるこずが刀明するためには、単䞀の専門家の監督の䞋で開発する必芁がありたす。 同時に、1人の研究プロゞェクトで耇数の人が䞀緒に䜜業するこずも蚱容されるず考えられたす。 私にずっお、これはデザむンず研究の最も興味深い違いの1぀ず思われたす。



芞術における集団研究の事䟋は知られおいたすが、それらのほずんどは栞融合のようではなく、分子化合物のように芋えたす。 オペラのゞャンルでは、䞀人が台本を曞き、もう䞀人が音楜を曞くずきによく起こりたす。 ルネサンス期には、北欧の芋習いがしばしば雇われ、むタリアの巚匠の背景画の颚景を描きたした。 しかし、これは本圓の協力ではありたせん。 これらのケヌスは、ロバヌト・フロストのフレヌズをより連想させたす「良いフェンスのために-良い隣人」。 良いデザむンのパヌツを接着するこずはできたすが、各パヌツには個々のプロゞェクトの所有者が1人必芁です。



良いプロゞェクトが、䞀人がすべおを熟考するこずを芁求するずいう意味ではありたせん。 信頌できる決定を䞋す専門家のアドバむスほど䟡倀のあるものはありたせん。 しかし、議論が完了した埌、最終的な遞択は責任のたたです。



なぜ研究は䞀緒に実斜できるのに、蚭蚈はできないのですか これは興味深い質問です。 そしお、私は答えを知りたせん。 おそらく、蚭蚈ず研究が同時に行われるず、最良の研究結果が優れた蚭蚈になり、実際の生掻ではこれを共著者が行うこずはできたせん。 最も有名な科孊者の膚倧な数はおそらく䞀人で働いおいたでしょう。 しかし、ここにパタヌンがあるかどうかを蚀うのに十分なデヌタがありたせん。 たぶん、集合的な創造性がただ䞀般的ではなかった時代に、倚くの有名な科孊者が働いおいたずいう事実だけかもしれたせん。



しかし、科孊やアヌトのように、本圓の集団的創造性は、めったにありたせん。 共同蚭蚈決定は、䞍十分な蚭蚈決定ず同矩です。 これはなぜですか これを回避する方法はありたすか



私はそうは思わない傟向がありたす-良いプロゞェクトには独裁者が必芁です。 その理由の1぀は、すべおのコンポヌネントの品質が同じで、優れた蚭蚈が堅実であるべきだずいうこずです。 決定が1人の頭に収たるアむデアである堎合、ナヌザヌの頭にも収たる可胜性がありたす。



ただ新鮮- ポヌル・グラハム「Why Y Combinator」ずポヌル・グラハムハむテク瀟䌚 






本「ハッカヌずアヌティスト」

画像



翻蚳された章
www.paulgraham.com/hptoc.html

  1. オタクが人気がない理由

    圌らの心はゲヌム䞊にありたせん。

    オリゞナル 、翻蚳パヌト1 、 パヌト2
  2. ハッカヌず画家

    ハッカヌは、画家や建築家、䜜家などのメヌカヌです。

    オリゞナル 、翻蚳パヌト1 、 パヌト2 、 代替

  3. 蚀えないこず

    異端的思考をどう考えるか、そしおそれらをどうするか。

    元の 翻蚳

  4. 良い悪い態床

    アメリカ人のように、ハッカヌはルヌルを砎っお勝ちたす。

    元の翻蚳

  5. 向こうの道

    Web-based software offers the biggest opportunity since the arrival of the microcomputer.

    ,
  6. How to Make Wealth

    The best way to get rich is to create wealth. And startups are the best way to do that.

    ,

  7. Mind the Gap

    Could «unequal income distribution» be less of a problem than we think?

    ,

  8. A Plan for Spam

    Till recently most experts thought spam filtering wouldn't work. This proposal changed their minds.

    ,

  9. Taste for Makers

    How do you make great things?

    ,

  10. Programming Languages Explained

    What a programming language is and why they are a hot topic now.
  11. The Hundred-Year Language

    How will we program in a hundred years? Why not start now?

    ,

  12. Beating the Averages

    For web-based applications you can use whatever language you want. So can your competitors.

    ,

  13. Revenge of the Nerds

    In technology, «industry best practice» is a recipe for losing.

    , 1

  14. The Dream Language

    A good programming language is one that lets hackers have their way with it.

    , 1 , 2

  15. Design and Research

    Research has to be original. Design has to be good.

    ,









別の107+蚘事ポヌル・グレアム Habré。

翻蚳を手䌝いたい人-接続



Y Combinatorに興味があり、Grahamのアむデアがあなたに近い堎合は、個人的な手玙に曞いおください。いく぀かのアむデアがありたす。



あなたのスタヌトアップはY Combinatorに応募する準備ができおいたすか



All Articles