コンピュータープログラミングの技術-読むか読むか [閉まっている]


63

プログラミングに関する本はたくさんありますが、コードコンプリートはほとんどの人の「必読のプログラミング本」のリストの一番上にあるようですが、Donald KnuthによるThe Art of Computer Programmingはどうですか?私は忙しい人で、仕事と若い家族の間にはたくさんの自由時間がありません。そのため、私はそれをどのように使うかについて慎重でなければなりません。

私は不思議に思っています-ここで誰かが「TAOCP」を読んでいますか?もしそうなら、読む時間を作る価値がありますか、他の本やペットプロジェクトのようなより多くのサイドプログラミングやオープンソースへの貢献は、専門能力開発の観点から私の時間のより良い使用でしょうか?

免責事項-「Knuth is my homeboy」Tシャツを着ている人は、誤解しないでください-読みたいのですが、優先リストの一番上にあるべきなのか、他の何かが最初に来る必要がある場合。


私はそれを読みたいが、それは地獄のように高価なので、私は大学を終えて、ソムのお金を稼ぎ始めたときにそれを手に入れるでしょう。また、大きな本棚が必要です。
ギャブリン

3ページ目にして、耳をすませました。6か月後にAmazonでセットを販売しました。
kirk.burleson

回答:


72

TAOCPは、私たちが毎日使用するデータ構造とアルゴリズムがどのように機能するのか、なぜ機能するのかを理解するための非常に貴重なリファレンスですが、カバーツーカバーで読むことは時間の大きな投資になります。

ある家族の男として、あなたの子供と一緒に時間を過ごしてください。


34
子供向けの+1-コンピューターは待機に適していることで有名です。彼らは子供が年をとるのを待つことができます。

3
子供向けの+1。この本はあなたの人生のいつでも読むことができますが、4歳の子供とは1年間しか遊ぶことができません。そして、あなたの5歳の子供もたった1年で

3
素晴らしい答え。私たちのプログラマーを向上させるものはたくさんありますが、時間をどこに投資するかについて賢くする必要があり、優れたプログラマーである以上に人生にあることを忘れないでください。
ジョンホプキンス

5
まだ子供がいないので、死ぬ前に読み終えたいです。子供がいませんか?
沈没

1
@sankあなたはプログラマのように考えています... :)
アンジェリン・

23

TAOCPへのすべての言及を質問の「百科事典」に置き換えてください。答えは明白だと思います。多くの点で、それがTAOCPであるからです。

スティーブ・ジョブズがクヌースに会ったことについての物語があります(おそらくは外伝的)。ジョブズが彼に最初に言ったのは、「クヌース博士にお会いできてうれしいです。すべての作品を読みました!」。Knuthの回答は「あなたはたわごとだ」:http : //www.folklore.org/StoryView.py? project=Macintosh&story =Close_Encounters_of_the_Steve_Kind.txt


1
百科事典には膨大な量の事柄がありますが、ほとんどの場合、幅広い関心を持つ人々にとってあまり興味深いものでも関連性のあるものでもありません。TAOCPのコンテンツは、少なくともソフトウェア開発者にある程度関連しています。
デビッドソーンリー

4
再:ジョブズの物語:それ外交的な物語です。Knuthは、Randall MunroeのGoogleテクニカルトークでも同じように語っています。
greyfade

4
それにもかかわらず、「物語」は私を微笑ませました。:)
MetalMikester

クヌース博士のユーモアを証明できます。彼の公開アドレスにメールを送りました。彼が反応したことに驚いた。彼の応答は、私のメールのマークアップされたハードコピーでした。TAOCPの残りのセクションを読むように丁寧に言われました。私の電子メールの署名は、ミズーリ州から来たものです(見せてください)。彼は愚かなMO政治家について発言しました。彼は「冗談を言って、シュワルツェネッガー知事のせいにしないでください」と言って締めくくりました。
dbasnett

21

いいえ、優先リストの一番上にあるべきではありません。私はフルセットを持っていますが、全部読んだわけではありません。(これまで)特定の問題に関する優れたリファレンスとして使用しました(たとえば、ランダム性の理解やランダムジェネレーターのテストでは非常に貴重でした)。CSのトピックが出てきて、本当にうまく処理できないときはいつでも、TAOCPの関連する部分を理解の良いステップとしてつかむ傾向があります。

あなたがそれを読むことに決めたなら、あなたへのより多くの力、そして私は間違いなく小さな塊でそれを取ることをお勧めします。スキップして、最も興味深いものを最初に見ることを恐れないでください。


1
頭に釘を打ちます。
kirk.burleson

9

TOACPは、ある時点で不可欠な資料です。毎日何をするかに応じて、それはあなたの最も緊急のものではないかもしれません。

それはそれらの本の1つ(まあ、本のコレクション)であり、キャリアの早い段階で読むのが良いのです。なぜなら、それはあなたが通常は後まで到達できないであろう良い洞察を本当に与えるからです。コーディングだけでなくキャリアのツールボックスを選択します。これは、あなたが本当にアルゴリズムを研究し、できれば言語設計を少し理解し、ツール、言語、システムがどのようなものであり、それぞれができることのエコシステムにどのように適合するかについて非常に幅広い理解を持ちたいポイントです特定のプロジェクトに参加する。

言い換えれば、それは大局的な学習であるため、もしあなたが私のように強迫観念しているなら、今読んでいないなら、はしごを登って大画面の男になりたいと切望するまで延期しても構いません。


6

最近このまさにその仕事を引き受けたので、彼の書く方法はとても楽しく、問題は(難易度に応じて)非常に適切にラベル付けされていると言えます。最初のボリュームを取得し、第1章と第2章を読んで、それがどのように気に入っているかを確認してください。


6

TAOCPは素晴らしい作品ですが、それを読むことは、ソフトウェア開発の実践者にとってはひどい時間の投資になるでしょう。それを行うと、少なすぎることについて多くを学ぶために、あなたの専門的な自己改善予算の数年(それがどれくらいかかるか)を犠牲にするでしょう。

アルゴリズムに関する1つまたはいくつかの「究極ではない」本を読むことをお勧めします。この分野での私のお気に入りは、Steven S. SkienaによるThe Algorithm Design Manualです。

次に、Knuthに移動する必要があると感じた場合は、さらに移動します。

同時に、1冊または数冊のTAOCPを購入し、Knuthがカバーする領域を理解するために目を通し、日常的にそこから情報が実際に必要になる場合に備えてライブラリに保管してください。作業。私の教訓は、あなたはそうしないだろうということであり、それが私が読むことを勧めないもう一つの理由です。しかし、十分に頻繁にそれを参照していることに気付くなら、あなたはそれをカバーしてカバーするためにあなたの時間を読む価値があることを知っているでしょう。


6

Knuthの独創的な作品は、プログラマーが読んだり読んだりすることを意図している最も一般的なリファレンスです。いつか。


2
それは、プログラマーのためのホーキングの「時間の簡単な歴史」のようなものです。
ジョンホプキンス

1
ABHITを読みました。ホーキング放射は私には奇妙に思えます。ブラックホールが縮小するのは、さらに多くのものが落ち込むからですか?私は質量の保存と、各半分の仮想ペアが決して壊すことのできないものを手に入れましたが、そのアイデアはまだ奇妙です。
Steve314

@ Steve314:さらにひどいのは、非常に小さなブラックホールが激しく爆発することです。理論的に。
スティーブンA.ロウ

2
ABHOTは短く、一般向けです。TAOCPはそのようなものではありません。
ショーンマクミラン

3

家族/子供のコメントで+10。顧客への赤目飛行に耐えながら、私はほとんどの読書をしようとします。

しかし...はい、非常に読む価値があります。直線的に読む理由はなく、代わりにいくつかの興味深いトピックをざっと選んで選択します。


3

私はすべての開発者がどこかの時点で本を入手するための投資を行うべきだと感じている人々の陣営にしっかりといます(そして、今では文庫本転載されているように見えるので簡単になっています)が、同じトークンでまた、誰かが座ってそれらをすべてカバーからカバーまで読むだろうと信じるのは難しいです。

彼らへの最善のアプローチは、座って読んでいる自由な時間に通勤しているのでなければ、彼らを十分に読んで、どこにあるものを見つけるかを知ってから、いつでも章全体を読むことです特定の問題の参考書としてそれらを使用している自分を見つけてください。GoogleとStack Overflowでは、リファレンスブックにアクセスするのはそれほど一般的ではありませんが、場合によっては、インターネット上で探して余分な時間を送らなければならないという洞察をブックが提供することがあります。


1
章全体を読みますか?それは約半分のボリュームであり、小さなボリュームではありません。あなたはより小さなテキストの単位を意味するかもしれないと思います。
デビッドソーン

3

初めに、Knuthはコンパイラの記述方法について何かを書きたかったことを忘れないでください。

たとえば、ウィキペディアを使用してネット上で多くの情報を取得できますが、ある種の研究者ではない場合は、要約を読むだけで満足を得られます。

あなたはまだ最初の本を手に入れることができますので、あなたが退屈しているときにそれを読むことができます...


2

本を読むだけでなく、本の中でその問題を解決することがおそらく重要です。それには多くの時間が必要です。

彼は4巻と5冊の小冊子(これらが何であれ)が好きなので、本を修了することはおそらくコンピューターサイエンスの基礎の大学コースよりも優れており、これまでにない最高のプログラマーになります。

あなたは私のような若い家族を持っているので、あなたは私にかなりうねりのアイデアを与えました。一度に1冊ずつ本を買って、子供たちに教えていきます。


1
「そのため、本を修了することはおそらく大学のコースよりも優れているでしょう」-私がCS学位を取得したとき、ボリューム1-3はいくつかのコースで教科書として使用され、ボリュームの半分だけでコース全体を費やしましたたとえば、「ボリューム3の並べ替えと検索」は2つの別々のコースとして教えられました。
tcrosley

2
軽微な点ですが、現在、発行されているのは3巻のみで、4巻が進行中です。束は、第4巻になるものの事前印刷です。www-cs-faculty.stanford.edu/~uno/taocp.html
rjzii

1

好奇心が強い場合は、それを行いますが、消化するのにかなり時間がかかるため、時間をかける必要があります。

あなたが読むことができる通勤はありますか?それは完璧でしょう。


編集:Volume 4の小さな部分のこのプレビューは興味深いものです:http : //www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz

(注:圧縮されたポストスクリプト)


1
残念ながら(この場合-それ以外の場合は非常に幸運です)私は在宅勤務していますので、それは選択肢ではありません。
ザンジャミンダーソン

1

ほとんどの人が座って表紙を読みたいと思うものではありません。それは信じられないほど貴重な参考文献であり、それを拾い上げ、興味深いセクションを選び、それを読んで、いくつかの演習を行うことは確かに良いことです。しかし、上記の百科事典の比較はかなり適切です...それは大きく、広範囲で、詳細です。そして、「運動」のいくつかは、解決するのに何年もかかるかもしれない研究問題です。

低レベルアルゴリズムの知識が必要な場合は、Robert Sedgewickの書籍(「Cのアルゴリズム」、「Javaのアルゴリズム」など)から始める方が良いかもしれません。


1

世界を変えたいなら、それを読んでください。新しいハックを学びたいなら、それを読まないでください。


1

クヌースのTAOCPは傑作です。しかし、他の傑作(「イリアード」、「戦争と平和」、プルーストの「失われた時間を求めて」など)のように、それはすべての人やいつでもありません。

本は非常によく書かれており、非常によく研究されています。問題は大きく、アルゴリズムの説明はよくできています。

この本の大きな問題は、Knuthが架空のコンピューターの架空のアセンブリ言語のコードを示しているという事実です。なぜ彼がそれをしたのかは理解していますが、実はそれは最悪です。

この本を聖書として使うことをお勧めします。必要なときに探してください。答えが見つかります。それは私に複数回起こりました!


3
IBM360またはPDP8用の実際のアセンブラを使用していた場合、役立ちますか?
マーティンベケット

1
この50年間、架空のアセンブリ言語で耐えることはできなかったでしょう。それは誰もが等しく不利な立場に置かれます!
luser droog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.