これは主観的でクローズされる可能性がありますが、コンピュータプログラムの構造と解釈を読むことが本当に役立つかどうかを知りたいと思っていました。
本はJavaを使用しません。 Javaを学びたかったわけではありません。より良いプログラマーになるために読むのに役立つかどうか、そして本から何を得ることができるか、またはJavaプログラマーにより適した、この本の他の選択肢は何かについて知りたいと思っています。 ?
まあ、この本があなたに役立つかどうかはわかりませんが、約20年前にこの本を読んだとき、それは間違いなく私のプログラミングスキルを向上させました(どのプログラミング言語にも依存しません)。そして、私は特にJavaプログラマーはJavaだけに固執することで得られない新しい洞察を得るでしょう。
Joel Spolsky 2005は、JavaおよびSICPについての素晴らしい記事を書いています。
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
コンピュータプログラムの構造と解釈 は読むのに最適な本だと思います。ただし、それにはいくつかの問題があります。
私の経験における最大の問題は、この本はプログラミングの知識をまったく必要とせず、初心者を完了するために用意されているが、 /初心者を完了するために準備されている MIT で。したがって、プログラミングの知識は想定していませんが、 does はかなりの domain の知識を想定しています。電気工学、物理学、数学の分野で。注:これらは、教えられている concepts とは関係ありません。演習とを理解するために必要なだけです。例。
私よりも優れた人々は、巧妙にタイトルが付けられた論文 The Computer and Interpretation of the Computer Science Curriculum で、よりよく説明しています。ありがたいことに、彼らは単なるひねりだけではなく、代わりに自分自身の本を書きました: How to Design Programs 。 SICPを読むことを考えている場合は、最初にHtDPを読むことをお勧めします。SICPとほぼ同じ範囲をカバーしていますが、高校レベルの平均的なドメイン知識しか想定していません。 (実際、高校生に教えるように書かれています。)
HtDPを終了した後も、戻ってSICPを読むことができます。これまでの概念を見たことがあるので、ドメインの知識の一部が失われても、それほど害はありません。
注: HtDPの第2版のドラフト があります。これは、第1版の代わりに読むことをお勧めします。命令型プログラミングに関する資料は削除され、現時点ではまだ書かれていない第2巻コンポーネントの設計方法で説明されていますが、第1巻からどちらでも取得できます。エディション、SICP、またはその両方から。
私の理解から[〜#〜] sicp [〜#〜]、それは機能の領域により焦点を当てています再帰プログラミングを含むプログラミング、CSの強力な紹介-これは、新しいプログラマーには理解しにくいです。別の点として、それはMITのために準備され、指示されており、この本を有用なものとするためには、工学分野、数学、物理学におけるいくつかの優れた基礎も必要です。
私は良い本一式をアドバイスします。それぞれがソフトウェアエンジニアリングのさまざまな側面に焦点を当てています。
上記の書籍やその他の書籍の詳細については、次の参考文献をご覧ください。
それは理想的なものではないので、リストに追加してください:)
編集:上記の本を選択し、それらを読む方法の優先順位を決定する際、それは本当にあなたが主に何をしようとしているのかまたは学ぶことの目的。
私はここで外に出て、どんな言語でも-おそらくほとんどの人にとって良い読みではない-と言うつもりです。
クヌースのように、それは読んだ良い本です。ただし、あなたがホットショットであると仮定しても、MIT ugradは、適切に読むのに1年の大部分を費やし、講師とTAがそれを手伝います。
その時に読むことができる、より価値のあるソフトウェアエンジニアリングに関する本は他にありますか?当時学べた他の言語はありますか?
編集少し拡大するだけです:
ソフトウェアエンジニアリングはエンジニアリングであり、最適化がすべてです。あなたの仕事は、与えられた時間とコストの予算で知識を最大化することです。
SICPは、関数型言語によるプログラミングの概要です。関数型言語を使用する理由は、プログラミングの数学的概念の多くを、手続き型の概念よりも関数型言語で記述する方が簡単であり、形式的なロジックよりもはるかに読みやすいためです。
つまり、ある程度の姿勢があります。 「SICPを読まない限り、あなたは本当にプログラマーではない」、またはKnuth、またはLISP、C、またはx86アセンブラーでプログラミングできます。それは通常反駁するのが簡単です。すなわち。 Cantorの集合論とMaxwellの方程式に関する研究を理解しておらず、半導体の正孔移動度に精通していなければ、本物のプログラマーになることはできません。
あなたは一生「Javaプログラマー」になるつもりですか?次に、おそらくより良い本があります。一般に優れたプログラマーになりたい場合は、優れた読み物です。これが理由です。すべての優れたプログラマーがツールボックスに必要とする特定のツールがあります。 1つは、データ構造とアルゴリズムの完全な知識です(信じられない場合は、Microsoft、Google、Amazonなどでインタビューしてください)。付随するアルゴリズムは、複雑さの分析、再帰であり、ポインターの適切な理解ではありません。痛い。アルゴリズム分析、再帰的プロセス、および一般的な機能パラダイムに関して言えば、SICPよりも優れた、またはより挑戦的な本は考えられません。