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