私はビル・ゲイツからのこの引用をつまずきました:「もしあなたがすべてを読むことができるならば、あなたは私に履歴書を必ず送るべきです。」彼はThe Art of Programmingの本について話していました。ですから、私はかなり興味があり、正直に読んでみたいと思いますI'm really not that highly
intellectual being
。それはまったくわかりません。、しかし、私は学びたいと思っています。私は現在、基本的なアルゴリズムについての第1巻を読んでいます。だから、私のような初心者/遅い人に優しい本はありますか?だから私は自分自身を構築することができ、将来的にはKnuthの本を安心して読むことができることを願っています。
自分自身をnot a highly intellectual being
次のように定義すると、期待を低く設定することになります。トラブルに見合う価値のある何かをしたいのなら、あなたはその考え方を壊さなければなりません。何かを成し遂げることができることは、あなたの心に間違いないはずです。また、それを達成することは、あなたがそれを簡単に達成することを意味しません。
追求する価値のあるものは難しいものです...それは決まり文句ではありません。ソフトウェア、エンジニアリング、一般的な生活の中で、何かを達成したい場合は、難しいこと、人々が避けていること、物事の最も一般的な分母に決着しないことを求めなければなりません。
まず、CSの背景が明確ではありません。クヌースの本にはある程度の成熟が必要です。CSの学位を持っている人はほとんどいません。アルゴリズムの最初のコースを終了したばかりのCSの学生が、実際にクヌースの本を1冊でも読めるとは思わないでしょう。それを得るために必要な成熟度はそこにありません。それは学生の精神的能力とは何の関係もありません。
アルゴリズムの基本を冷静かつ明確にし、かなりの量のプログラミング(仕事および/または学力)をベルトの下に置く必要があります-少なくともプログラミングには40クレジットが必要です。また、CS数学を確固たるものにする必要があります。
離散数学(および場合によっては計算理論)を十分に理解していなければ、先に進むことはできません。
Knuthの問題に取り組むためにその知識が必要になるわけではありませんが、そのタイプの資料を理解するには成熟度が必要です。
まず、1冊の本と1冊の本(前述のCLRSの本)を選び、最初から最後まで作業します。可能な場合、アルゴリズムを実装するプログラムを実行します。JavaやC#を使用しないでください。C++も使用しないでください。ベアボーンCに移動し、ベアボーンの金属スクラップから物を構築する感覚を得ます。
また、離散数学と計算理論のコースをまだ受講していない場合は、Knuthの「Concrete Mathematics」に関する本を入手してください。あなたもその本を読むのが良いでしょう。
その後、クヌースの百科事典、1冊の本、一度に1つの章に取り組みます。最初の章をよく理解せずに別の章に移動しないでください。
最初にボリュームI(基本的なアルゴリズム)、次にボリュームIII(検索と並べ替え)を実行することをお勧めします。それらはあなたの当面の目標でなければなりません。次に、後で(ずっと後で)ボリュームIV(組み合わせアルゴリズム)、次にボリュームII(半数値アルゴリズム)に取り組みます。
最初に取得しなくても気にしないでください。私は長年(10年後)ボリュームIとIIIを乗り越えようとしてきました。
そして、あなたもそれにあまり重きを置かないでください。誰かまたはあなた自身に何かを証明するためにそれをしないでください。あなたがそうすることに知的に興味があるので、それをしてください。CLRSの本(またはそこにあるすばらしい卒業生レベルの本)を使用するだけで、アルゴリズムに習熟することができます。
実用的になり、休憩を取りましょう。クヌースの本を読むことは、あなたがCS素材であることを即座に証明することではなく、長期的な個人的な野心として扱ってください;)
他にもっと重要なことがあります(キャリア的に)、自分を殺すために;)