「コンピュータープログラムの構造と解釈」という本は、Javaプログラマーにとって良い読み物ですか?[閉まっている]


14

これは主観的であり、閉じられる可能性がありますが、コンピュータプログラムの構造と解釈を読むことが本当に役立つかどうかを知りたいと思いました。

コンピュータプログラムの構造と解釈

この本はJavaを使用していません。Javaを学びたかったというわけではありません。優れたプログラマーになるために読むのが役立つかどうか、そしてこの本から得られるものは何か、この本のその他の選択肢はJavaプログラマーにより適していますか?


32
手始めに、自分を「Javaプログラマー」として位置づけないようにしてください。または「どんな言語のプログラマー」としても。それは行き止まりです。代わりにプログラマーになってください。そして、SICPは非常に役立つでしょう。おそらく、そこから最も有用な読書。
SKロジック

3
それは非常に厳しいです、それがあなたがそれを読む理由です。
ジョナサンヘンソン

4
第1章から始めて、ページごとに進み、すべての例を実行し、各ページと各例を理解するまで進行しないでください。回答キーはオンラインです。
ジョナサンヘンソン

2
@JonathanHensonとしたときに終わり、停止を取得
JK。

3
はい、Schemeを学ぶ必要があります。しかし、この本がSchemeを使用する理由の1つは、以前にプログラミングしたことがない場合は約1日、Schemeの場合は約10分でScheme全体を学習できることです。結局のところ、SICPは完全な初心者向けの本であり、プログラミングの知識がまったくないことを前提としています。
ヨルグWミットタグ

回答:


23

まあ、この本があなたに役立つかどうかはわかりませんが、20年ほど前にその本を読んで、プログラミングスキルが向上しました(プログラミング言語に関係なく)。そして、特にJavaプログラマーは、Javaだけにこだわるのでは得られない新しい洞察を得るでしょう。

Joel Spolsky 2005は、JavaとSICPに関する興味深い記事を書いています。

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html


+1本の推薦の質問に非常に近いものに対する可能な限り最良の答え。
ジョシュアドレーク

13

コンピュータプログラムの構造と解釈は読むのに最適な本だと思います。ただし、それにはいくつかの問題があります。

私の経験における最大の問題は、この本はプログラミングの知識をまったく必要とせず、初心者を完成させること目的としていますが、MITで勉強する初心者完成させること目的としてます。それは任意のプログラミング知識を前提としていませんがそしてそう、それはありませんかなりの前提とドメイン電気工学、物理学と数学の分野では、例えば知識を。注:これらは、教えられている概念とは関係ありません。演習を理解するために必要なだけです。

私よりも優れた人々が、「コンピュータサイエンスカリキュラムの構造と解釈」という巧妙なタイトルの論文で、ずっとよく説明しています。ありがたいことに、彼らは単なる泣き言ではなく、代わりに独自の本「How to Design Programs」を書きました。SICPを読むことを考えている場合は、HtDPを最初に読むことをお勧めします。SICPとほぼ同じ内容をカバーしていますが、高校レベルの平均的なドメイン知識のみを想定しています。(実際、それは高校生に教えられるように書かれています。)

HtDPを終了した後でも、SICPに戻って読むことができます。これは、以前にこの概念を見たことがあるため、ドメインの知識の一部が失われても有害ではなくなるためです。

注:HtDPの第2版のドラフトがあり、第 1版の代わりに読むことをお勧めします。命令型プログラミングに関する資料は削除されており、まだ書かれていない第2巻の「コンポーネントの設計方法」で説明しますが、これらは初版またはSICP、あるいはその両方から入手できます。


SICPの代替案を提案するかもしれません:コンピュータープログラミングの概念、手法、モデル
エデン

@Eden:CTMはとても良いです、私は同意します。ただし、SICP、HtDP、Concrete Abstractionsなど、プログラミングを教えるための本とは考えていません。しかし、それは間違いなく「あなたをより良いプログラマにする本」リストに属します!
ヨルグWミットタグ

5

SICPを理解していることから、再帰プログラミングを含む関数型プログラミングの分野や、CSの強力な紹介に重点を置いています。これは、新しいプログラマーには理解しにくいものです。もう1つのポイントは、MIT向けに準備および指示されており、この本を有用なものにするためには、工学分野、数学、物理学の優れた基礎も必要です。

ソフトウェア工学のさまざまな側面に焦点を当てた優れた書籍のセットをお勧めします。

  • Code Complete 2-ソフトウェアエンジニアリングのプロセスに焦点を当てています。
  • Clean Code-小規模のコーディングに焦点を当てています。クラスと関数の書き方。
  • Pragmatic Programmer-ソフトウェアを作成するチーム内での作業に焦点を当てています。

上記の本および他の本のより詳細な説明は、以下の参考文献から見つけることができます。

  1. 10の簡単な本でプログラマになる方法
  2. 初心者プログラマーに最適な本

理想的なリストではないので、リストに自由に追加してください:)

編集:上記の本を選択し、それらを読む方法の優先順位を決定する際に、それは本当にあなたがやろうとしていることを第一にしようとしていることの目的に帰着します


7
(暗黙の)コンテキストでの提案に同意しますが、実際にSICPについて嫌いな(または好きな)ことを言及している場合、あなたの答えはさらに良くなります。
ジョリスティマーマンズ

4
リンゴとオレンジの比較-あなたが言及する本はすべて、ソフトウェアエンジニアリングに関する優れた本です。SICPはコンピューターサイエンスに関するものです。コンピュータープログラミングとは概念的には何ですか。
ネイト

1
この答えは、推奨される読書リストの質問に対する答えにあまりにも似すぎています。私は、スタックExchangeサイトの目的とよくフィットを信じていないもの:meta.stackexchange.com/questions/113678/...
ジョシュアドレイク

@ネイト、比較するのはリンゴとオレンジではなく、すべてCSです。それでも、各本はいくつかの共通のトピックを共有しています。
ユスボフ

2
@MadKeithV、あなたのコメントに同意します。最初の行にSICPについての考えを述べました。
ユスボフ

4

私はここで手足に出て言うだろう-多分ほとんどの人にとってはよく読めない-どんな言語でも。

Knuthのように、読んだ良い本です。しかし、あなたがホットショットのMITの卒業生であると仮定しても、正しく読むには1年の最も良い部分が必要であり、講師とTAが助けてくれます。

その間に読むことができ、より価値のあるソフトウェアエンジニアリングに関する他の本はありますか?その時間に学べる他の言語はありますか?

編集少しだけ拡大する:
ソフトウェアエンジニアリングはエンジニアリングであり、最適化がすべてです。あなたの仕事は、与えられた時間とコストの予算について知識を最大限にすることです。
SICPは、関数型言語によるプログラミングの概要です。関数型言語を使用する理由は、手続き型の言語よりも関数型言語でプログラミングの数学的概念を記述しやすく、形式的な論理よりも読みやすいためです。

ある程度の姿勢もあります。「SICPを読まない限り、あなたは実際にはプログラマーではない」、またはKnuth、またはLisp、C、またはx86アセンブラーでプログラムできます。これは通常、反論するのは簡単です。すなわち。Cantorの集合論とMaxwellの方程式に関する研究を知っていて、半導体のホールモビリティに精通していない限り、本物のプログラマにはなれません。


私のウィッシュリストには、コードコンプリート2、クリーンコード、プラガマティックプログラマ、リファクタリングなどの他の本がありました。しかし、これらは、SICPとは異なり、Javaまたは少なくともOOP中心です。
ashishjmeshram

5
それが最初にそれらを読む理由です
マーティンベケット

7
私はこの答えを否定することを議論しましたが、コメントだけの方が良いと判断しました:特に早い段階で、ほとんどの人にとってSICPはよく読めないことに同意します。それから大いに。優れた開発者は「ほとんどの人」ではありません。それは良いフィルター本です。
ジョリスティマーマンズ

4
私は同意しません(ある程度)-SICPを身に着けているバランスの取れた開発者は、常にUnix環境などについて学ぶことができます。プラットフォームの経験がなく、SICP以外の開発者を雇い、再訓練します。 SICPを取得しません。
ジョリスティマーマンズ

1
@MadKeithV-はい、同じ理由で、コーディング経験のない数学/物理学の博士号を採用しています。しかし、プログラマーとして、特に初心者としてフルタイムで作業している場合は、KnuthやSICPよりも(値/時間)優れているか、Turingの論文を読むよりも単純な本があります。
マーティンベケット

1

残りの人生で「JAVAプログラマー」になることを計画していますか?それから、おそらくもっと読むべき本があるでしょう。一般的に優れたプログラマになりたい場合は、優れた読み物です。その理由は次のとおりです。ツールボックスには、優れたプログラマーが必要とする特定のツールがあります。1つは、データ構造とアルゴリズムに関する完全な知識です(信じられない場合は、Microsoft、Google、Amazonなどでインタビューを行ってください)。付随するアルゴリズムは、複雑さの分析、再帰、およびポインターの適切な理解ではありません傷つける。アルゴリズム分析、再帰的プロセス、および一般的な機能的パラダイムに関しては、SICPよりも優れた本や挑戦的な本は考えられません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.