web-dev-qa-db-ja.com

コンピュータプログラミングの芸術-読むべきかどうか

そこにはプログラミングに関する本がたくさんあり、Code Completeはほとんどの人の「必読のプログラミング本」のリストのトップにあるようですが、The Art of Computer Programmingについてはどうですか?ドナルド・クヌース?私は忙しい人で、仕事と若い家族の間に自由な時間はあまりないので、私はそれをどのように使うかについて気を配らなければなりません。

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

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

65
Zann Anderson

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

別の家族の人として、あなたの子供と一緒に時間を過ごします。

72
Adam Crossland

TAOCPへのすべての参照を質問の「百科事典」に置き換えてください。その答えは明白なはずです。多くの点で、それがTAOCPです。

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

23
Jason Baker

いいえ、優先リストの一番上にしてはいけません。私は完全なセットを持っています、そして私はすべてを読んでいません。私はこれを(これまでのところ)特定の問題の良い参考資料として使用しました(たとえば、ランダム性の理解やランダムジェネレーターのテストで非常に役立ちました)。 CSトピックが浮かび上がってきて、私が本当に十分に対応できない場合は、TAOCPの関連する部分を理解するための良いステップとして理解する傾向があります。

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

22
Michael Kohne

TOACPは重要な読み物です-ある時点で。あなたが毎日何をしているのかによって、それはあなたの最も緊急なものではないかもしれません。

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

言い換えれば、それは全体像の学習であるため、私が今読むように執着している場合は、そうでない場合は、はしごを上に移動して全体像の男になることを切望するまで延期してもかまいません。

9
HedgeMage

最近、まさにこの仕事に取り掛かったので、彼の書いた方法はとても楽しく、問題は非常に適切に(難易度に応じて)分類されています。第1巻を入手して、第1章と第2章を読んで、気に入ってください。

6
sova

TAOCPは素晴らしい作品ですが、それを読むことは、実践中のソフトウェア開発者にとってひどい時間の投資になるでしょう。それを行うと、専門知識の自己改善予算の2、3年分(つまり、どれだけの時間がかかるか)を犠牲にして、少なすぎることについて多くを学んでしまいます。

アルゴリズムに関する1つかそれ以下の「究極の」本を読むことをお勧めします。この分野での私のお気に入りは スティーブンS.スキーナによるアルゴリズム設計マニュアル です。

次に、Knuthにさらに移動する必要がある、または移動したい場合は、.

同時に、TAOCPを1つまたは複数のボリュームで購入し、Knuthがカバーする領域を理解するためによく読み、実際に日々の情報が必要になる場合に備えて、ライブラリに保管することができます。作業。私の教育を受けた推測は、あなたがそうしないだろうということであり、それが私が読むことを勧めない別の理由です。しかし、頻繁にそれを参照していることに気づくとしたら、それを一読することはあなたの時間に十分に値することがわかるでしょう。

6
kdubinets

Knuthの独創的な作品は、プログラマがintendを読んだり読んだりするための最も人気のあるリファレンスです。いつか。

6
Steven A. Lowe

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

しかし...はい、読む価値があります。直線的に読む必要はありません。代わりに、読み飛ばして、興味のあるトピックをいくつか選択してください。

3
Jé Queue

最初に、Knuthがコンパイラーの書き方について何か書きたかったことを忘れないでください。

例えば、ウィキペディアでネット上でたくさんの情報を得ることができますが、あなたが研究者でないのなら、要約を読むだけで満足するでしょう。

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

3
jokoon

私は、すべての開発者がいつか本を手に入れるための投資をするべきだと感じている人々の集まりに固執しています(そして、彼らがそうであるように見えるようになったため、今では簡単になっています ペーパーバックに再版 )。同じように、誰かが座ってすべてを一から一に読んでくれると信じるのも難しいです。

彼らへの最善のアプローチ-座って読む時間がある場所に通勤する通勤者がいない場合-十分に読んで、どこに物を見つけるかを知り、いつでも完全な章を読むことです。与えられた問題の参考書としてそれらを使用している自分を見つけてください。 GoogleとStack Overflowを使用すると、参考書を入手することはそれほど一般的ではありませんが、場合によっては、本がインターネットで探している余分な時間を送る必要があるという洞察を提供することがあります。

3
rjzii

あなたはそれを単に読むよりも、本の中でその問題を実行することの方がおそらくより重要です。それには多くの時間が必要になります。

彼は4巻と5束(それらが何であれ)に似ているので、完了コンピュータサイエンスの基礎に関する大学のコースよりも本が優れていて、これまでで最高のプログラマーになるでしょう。

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

2
Peter Turner

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

1
veryfoolish

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

通勤できる通勤場所はありますか?.


編集:ボリューム4の小さな部分のこのプレビューは興味深いかもしれません: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz

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

1
user1249

これは、ほとんどの人がくつろぎながら表紙全体を読みたいと思うものではありません。これは非常に貴重なリファレンスであり、それを取り上げ、興味深いセクションを選び、それを読み、いくつかの演習を行うことは確かに良いことです。しかし、上記の百科事典の比較はかなり適切です...それは大きく、広範囲で、詳細です。そして、「演習」のいくつかは、解決するのに何年もかかるかもしれない研究問題です。

低レベルのアルゴリズムについてより詳しい知識が必要な場合は、Robert Sedgewickの本(たとえば、「Cのアルゴリズム」、「Javaのアルゴリズム」など)から始めるとよいでしょう。

1
mindcrime

クヌースのTAOCPは傑作です。しかし、他の傑作( "Illiad"、 "War and Peace"、Proustの "In Lost Time of Lost Time"など)と同じように、誰もがいつでも利用できるわけではありません。

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

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

この本を聖書として使うことをお勧めします。必要なときに探してください。あなたが答えを見つけるでしょう。それは私に二度以上起こりました!

1
Eduardo