なぜ人々はプログラミング本を使用するのですか?[閉まっている]


94

プログラミングの方法を学ぶための最良の方法は何かと尋ねられると、人々は通常、さまざまな著者によって書かれた大量のテキストへの参照を提供します。

しかし、私は多くの人が本からプログラムを学ぶことをまったく信じていません。彼らは通常、課題に直面しており、それを克服するためのツールとしてプログラミングを使用していることがわかります。

たとえば、私がプレイしていたゲームのサーバーを起動したかったため、プログラミングに「入りました」。そのため、特定のサーバーのサポートをグーグルで調べて読み、現在は開発したスキルのみを使用して雇用されたソフトウェアエンジニアです(そして、さらに開発されました)、あまり人気のないサーバーパッケージ用のC#スクリプトをコーディングします。

だから私の質問は、人々は一般的にこれらの本から学ぶ方が簡単だと思いますか?私はそれらのいくつかを見て、それらを終了するように私を励ますにはあまりにも「ドライ」であることがわかりました。


3
。本はあなたが本を読めば、彼らはあなたが興味深いちょうど別の本です、ここでの主が、大きな利点ではありません
CND

42
あなたは最初からプログラムする方法を学ぶことについて話しているのですか、それともより高度なものですか?「24時間でC ++を学ぶ」と、より高度な理論的なものに関するまともな本との間には大きな違いがあります。Knuthの作品はオンラインでは見つかりません。
アンドレパラメス

78
良いプログラミング本に出会ったことがないようです。
ジェイウォーカー

46
これは「なぜ学校に行くのか」という質問の比metaです。
ジョドレル

8
本が主要な学習ツールになることは一度もありませんでしたが、本がたくさんあるので、いつでもお勧めします。あなたが行うことによってのみ学ぶことは明らかです。ただし、本はアイデアの源であり、すぐに利用できる参考資料として使用できます。学ぶために本を読んだり、推奨したりしません。本に含まれるアイデアを共有するために、本を読んだり推奨したりします。
ジョエルイーサートン

回答:


229

一般的に言えば、ここに私が学ぶ方法があります:

  • 本を買う
  • 網羅的に読むのではなく、すべてがどこにあるかを知っている
  • 取り組むペットプロジェクトを見つける
  • 経験から学ぶが、参考として本を使用する
  • 本が失敗する場所には、常にグーグルがあります

注:3番目のポイントが最初に来ることがあります。

編集:「なぜ?」という質問に答える

Googleは、何かをする方法を見つけることは素晴らしいことですが、あなたが知らないことを見つけることは素晴らしいことではありません。C#にデリゲートと呼ばれる概念があり、作業中の問題を解決するのに役立つことを最初に知らなかった場合、なぜ「C#デリゲート」をグーグル検索するのでしょうか。

また、S / N比が少し高くなる場合があります。頭の中で何かがどのように行われるか大まかな考えを持っているなら、あなたが読んでいる記事が正しいかどうか簡単に確認できます。しかし、手がかりがない場合は、より大きな混乱に陥ることがあります。


19
すばらしい答え、特に「なぜ」に応じた編集。最近、ASP.NETの学習を開始し、Googleを使用して学習しました。私は何年もの間.NET 2.0でC#を使用していたので、うまくいくと思いました。問題が発生するたびにグーグルを検索して答えを見つけることができましたが、すぐに自分ができることの氷山の一角にしか当たっていないことが明らかになり、ライブラリの大部分が完全に欠落していました。本は、テクノロジーとそれができるすべてのより良い概要を提供します。「24時間でxを学ぶ」の本を避け、代わりに「上級x」の本を探してください。
ギャビンコーツ

44
「知らないことを見つける」ための+1。
コバール

2
5番目のポイントへの拡張:本が失敗した場合、トピックには、 Google や他の本が常に存在します
リチャード

5
「S / N比が少し高くなることがあります。頭の中で何かがどうなっているのか大まかな考えを持っているなら、読んでいる記事が正しいかどうかを簡単に確認できます。手がかりはありません...あなたはより大きな混乱に陥ることができます。」
トムスクワイアズ

9
「本が失敗した場合、常にグーグルがあります。」スタックオーバーフローを意味します;)
ジョレン

42

本がまだ関連しているいくつかの理由:

  1. 多くのテキストを標準のLCD画面よりも紙で読む方が簡単だと思います。電子インクディスプレイの電子書籍がこれを変えるかもしれません。
  2. 本は、全体像といくつかの優れた実践を説明する傾向があります。これは、クイックスタートまたは新しいビューが必要な場合に非常に役立ちます。
  3. 特定のトピックに関する例が必要な場合、Googleは非常に優れていますが、全体像についてはそうではありません。

しかし、本は決してあなたを連れて行くことはありません、それはちょうどあなたを正しい方向に押します。


2
全体像については+1。しばらく新しい言語/環境でプログラミングをしてきた後、本は自分の探求で見逃していた全体像や物事を埋めるのに非常に役立つことがわかりました。
アダムモリス

2
Raymond Chenのブログ、またはチャンネル9のGoing Deepシリーズは、理由を学ぶのに非常に役立ちます。「理由」がそうであることがわかったら、それを行う方法はグーグルで調べることができる些細な詳細になります。通常、本の著者は、オンラインで見つけたコード断片の丸まった文字列をいじくり回そうとするのではなく、何が起こっているかの論理を理解するために背景に行くことができます。
イアン・ボイド

IMOは、本の大きな利点の1つであり、一度に複数の場所に指を刺すことができるため、セクション間をすばやく切り替えることができます。最初に調べたものを理解するために他の何か(時にはいくつかのこと)を頻繁に調べているので、コードを調べて新しいことを学ぼうとしているとき、これは非常に貴重だと思います。画面上を移動するのは同じではありません。
TMN

同意した。たとえば、Asp.Net MVCに直接ジャンプすると、その方法がわかります。しかし、あなたも間違いを犯す可能性が非常に高い、微妙なことがたくさんあります。次に、何かがうまくいかない理由を頭に残しておきます。
アンディ

28

1980年代の本でプログラミングを学んだとき、多かれ少なかれ、全体としてプログラミング言語を完全に学習するための唯一の情報源でした。さらに、コンピューター雑誌を購入することもできますが、その内容はランダムであり、興味深く役立つかもしれません。

最近では、インターネット上で必要なすべての情報を見つけることができます。完全なチュートリアルは本に十分似ていると思いますが。

学習方法は、個人的な好みや実際のニーズによって異なります。

本またはオンラインチュートリアルの場合、「完全なテキスト」の利点は、実際には必要ではないが、後で役立つ資料をカバーすることです。何かが可能であることを知り、それをどこで見つけるかを知るだけです。特に、複雑な環境やC ++のような非常に複雑な言語について学ぶ場合。Ajaxやセキュリティの問題について耳にすることなく、Ruby on Railsに関する多くの小さなブログを読むことができます。あなたが遊んでいる限り、これは問題にならないかもしれません。しかし、偶然にも、数週間以内にプロのRuby on Rails開発に取り掛かりたい場合は、すべての重要なポイントをカバーするテキストを使用することで大いに役立ちます。

他の書籍では、プログラミングスタイル、ベストプラクティス、設計パターン、または特定のアルゴリズムグループに関する詳細を扱っています。それらを使用して作業することができ、おそらくすべての設計パターンのうち、非常に小さなサブセットのみを適用することができます。それでも、それらを知り、どこでそれらを見つけるかを知ることは役に立ちます。そして、それは単に、「何らかの形で実行させる」よりも「ソリューションの構築」に関心がある方向に思考プロセスを訓練する方法です。

個人的には読書が好きなので、本が乾燥しているという感覚はありません。もちろん重要なことですが、本があなたの実際の知識レベル以上であることは重要です。C#のすべての基本を既に習得している場合、初心者向けの本を読むのはあまり意味がありません。


7
「ベストプラクティス/方法論」タイプの本は、「Yを使用してXを実行する方法」の本とは大きく異なることを述べたため、+ 1。前者は本当に貴重なものです。なぜなら、それは苦労して得た一般的な問題解決の経験を教えてくれるからです。単体テスト、リファクタリング、見積もりなどを学習したら、それを多数の言語/ドメイン/プロジェクトに適用して適応させることができます。
ペテルトレック

1
スタイル、プラクティス、およびパターンに関する言及に間違いなく感謝します。これらは本当に有益な本です。問題を解決して解決するだけで、プログラミングを学ぶことができます。スタイル、プラクティス、およびパターンを学習することにより、プログラムを適切に学習します。それでも、これらの概念を包括的に理解するのに最適な場所はテキストです。
リグ

+1は「実際には必要ではないが、後で役立つ資料を対象としています」-優秀なプログラマーは、活用する深い知識を持っています。すべての詳細を覚えていなくても、必要なときにタグを取得して学習するスレッドを知っている場合でも、非常に貴重です。
ジャレッドアップダイク

22

本(または本のように構成されたWebドキュメント)は、ほとんどの言語を学習するための私の好む方法です。

言語に飛び込んで自分のものを見つけると、重要な側面を見逃す可能性が高くなります。これは、良い本が適切なタイミングであなたに届けたものです。

たとえば、私の同僚の中には、本なしで飛び込んでJavaを学んだ人もいます。彼らは数年間Javaでプログラミングを行っていましたが、.substring()を使用して配列をStringに変換し、その後Stringを再び配列に変換することにより、byte []の配列を定期的に操作していることがわかりました。System.ArrayCopy()は、Java In A Nutshellの 155ページに紹介されています。

教師の方が一人で学ぶよりも学習が簡単であることをご理解ください。良い本は、良い先生の安い代用品です。入念に計画された順序で概念を紹介するので、十分な理解を築くことができます。


2
何かをすることを学ぶこととそれをうまくやることを学ぶこととの違いを指摘したことに対して+1。
idbrii

良い本は、その地域をすばやくカバーするのに最適な方法です。誰かがすでにあなたのために研究を行っています。良い本を見つけるのは難しいかもしれません。興味のあるテーマ(本当に良い買い手)で素晴らしい本を手に入れるチャンスが50/50あった時代がありました。今では、書店で良い本を見つける可能性は10%未満であることがわかりました。しかし、ネット上で利用可能なリソースのような良い本がたくさんあります。適切なリソースを選択すると、学習をスピードアップできます。
-BillThor

1
その時がいつだったのかわかりません。最近、古いCSの本を見てみました。標準は大幅に改善されました。たとえば、私は数年前に「ミランダでの関数型プログラミング」を使用しました。最近、「Real World Haskell」を使用しました。Haskellと同じ概念とパラダイムを基本的に使用しているにもかかわらず、古い本は今日、神秘的です。
スリム

21

私はあなたが何かをするかもしれないと思います。少なくとも私にとって、私のスキルのほとんどは、「X」を実行するプログラムを望んでいる/必要としていることから来ています。

たぶん、この方法を学ぶ人々は助けを求めていないでしょう。彼らはそれを成し遂げるのに忙しすぎています(悪いですが、途中で学習しています)。プログラマーになりたい(最初のグループと同じ)人々は、プログラマーになる方法やプログラミングの方法について多くの質問をします。必ずしも解決すべき問題はありませんが、これらはそうではありません。直接的な答えのある質問。

そして、私たちは本にパントします。「ええ、「Pythonに飛び込む」のコピーを手に入れてください。」「それはあなたがどのように学んだのですか?」「いや」「うーん...」「ちょっと忙しいけど、動けなくなったら助けてあげる」

一方、私は学習しているときに良い読み物を大事にしているので、私が解決しようとしている問題がより熟練した著者によってどのように解決されるかを見ることができます。 「初心者」のテクニック私は途中で習得していないかもしれません。

TLDR:本は良い、実行することで学ぶことは良い、本を実行することで学ぶことは???


1
+1:あなたはそれを釘付けにしたと思う。学ぶことで、私が所有する最も価値のある本は、その時に書いていたアプリケーションに固有のものでした。
ジャスティンシールド

41
単純な問題をひどく処理し、ひどく本を読むには「あまりにも良い」と感じるため、すべてを知っていると考える「独学」プログラマにならないように注意してください。
ジョリスティマーマンズ

2
私は読書に反対ではないことに注意してください、私はちょうどデジタルメディアは通常、はるかに最新で魅力的だと思います。
アレックスホープオコナー

2
@Alexデジタルメディアについて。それは本当にメディアによって扱われているトピックに依存します。メディアが言語yでxを実行する方法、またはzでコーディングする最も効率的な方法などを扱っている場合、あなたの声明に同意します。ただし、NP、P、アルゴリズム分析など、他のトピック(通常はより高度な理論的トピック)、IMHOは通常、テキストブックで最も適切に対処されます。KnuthのThe Art of Programmingをご覧ください。これはかなり古いテキストですが、プログラミングに関する最も重要な書籍の1つと考えられています。
クレドゥー

16
これは確認バイアスの例だと思います。@Alexは特定の答えを探しているようです。この答え自体が悪いと言っているわけではありませんが、想像力の広がりによって提供される最良の答えではありません。
zzzzBov

15

技術書を読むのが大好きです。すべての技術書ではなく、私が興味を持っている特定の主題に関するものだけです、とSharepointは言います。Charles Petzoldによるプログラミングウィンドウの最初の本(複数回)を思い出します。これと他の多くのため、私はメモリからWin32アプリケーションを書くことができました。APIを調べる必要はほとんどなかったので、代わりにビジネスの部分に集中できました。

本は何かをする「権威ある」方法を提供していると思います。おそらく私よりも良いことをする正しい方法を知っている人によって。私が学んでいるのは、あえて言うなら、私の問題を解決する最良の方法だと信じています。それはもちろん、著者を信頼する場合です(Amazonのレビューエリアが大好きです)。

問題を解決しようとすると、ますます「グーグル」とコピーと貼り付けに気づきますが、コピーしているもの(またはインスピレーションを受けているもの)が信頼できるものであることを確認するためにかなりの時間を費やしています私のコードを入れることができます。ウェブ上で解決策を見つけたからといって、それが必ずしも最良とは限りません。

私は、他の多くのプログラマーと同じように、単純に答えをグーグルで検索しますが、それでも私はまだ知られている著者から本を選んでいます。その内容は、それを説明するのが得意な人(教えてくれる人)からもたらされたもので、Googleの結果からすべての迷惑メールをフィルタリングする必要がなくなりました。


14

あなたの質問は、「HTMLページの代わりに印刷された本のような古い技術を使用する理由」ではなく、「1人または数人の著者によって書かれたプログラミングに関する長いテキストを読む理由」を意味しないと思います。

本は、特定の主題に関する情報の構造化されたコレクションと考えることができます。トピックを理解しやすくするために、誰かが各章を相互に構築する努力をしたという利点があります。通常、情報の境界とは何か(カバーされているものと、他の場所を探す必要があるその他の情報)も通知されます。読んで作業した後、特定のスキルを達成したことを確認できます。早送りボタンを押したままで学習したい場合、少なくとも本の構造を信頼していれば、本は退屈な部分をスキップすることなく、あらゆる側面に取り組むことを強制できます。「book」という名前のコレクションは、ほとんどの場合、参照としても役立ちます。

インターネット、ブログ、「いじる」などを使用すると、通常、非構造化情報の種類に分類されます。たくさんの知恵を手に入れますが、知識を蓄積するためにさらに検索作業を行う必要があります。「最初にこれを学ぶか、そのことのメリットがわからない」と言う人は誰もいません。グーグルアップしました」。退屈すぎたり、重要だと誰も言わなかったために、特定の部分を見逃すことがあります。インターネット上に書かれたすべてが最高品質ではないため、物事を間違えるかもしれません。無駄な検索結果を除外するのに多くの時間を費やすかもしれません。特定のデザインパターンやプログラミング構造を知らず、誰もあなたに言っていないからといって、自分で何かを達成しようとすると、何日も無駄にするかもしれません。知らないほど、

少し挑発的な言い方をすれば、橋の建設や構造解析に関する本を読んだことはなく、いじってGoogleを使って学んだだけだと言ったら、毎日渡らなければならない橋を建設する建築家を信用しない...


私の質問は正直であると解釈されるかもしれませんが、後者は私の一般的なコンセンサスでした。
アレックスホープオコナー

10

あなたがCプログラマーである場合、本や先生なしでPythonを学ぶにはどうすればいいですか?

基本的な構文を学び、すぐに飛び込むと、PythonCコードを書くことになり、PythonはCと同じくらい冗長で苦痛であるという誤った結論に至ります。


それは誇張です。Pythonのプログラミングを開始した場合、問題への回答をGoogleで検索して、特定の問題に対するPythonのソリューションを説明するPythonレシピなどを見つけることができます。
idbrii

6
@pydave:誇張であれば、SOでCコードで記述されたPythonはそれほど多くありません(例)
BlueRaja-ダニーPflughoeft

4
私はあなたの質問例を読み、あなたの答えを読み、あなたが何を意味するのか理解しています:基本的な構文を学ぶことは、言語を学ぶことと同じではありません。(私は言語の構造を学ばないことすら考えていませんでした。)PythonでCコードを書くのに十分なPythonを学んだとしても、Pythonでプログラミングすることをまだ学んでいません。
idbrii

これは、より注目に値する深刻な問題です。すべてのプログラミング言語はチューリング完全であるため、Cに似たPythonコードまたはJavaに似たRubyコードを作成することで問題を解決できます。プログラミングしている言語の時代精神に準拠することを強制する障害はありません。さらに悪いことに、ネイティブCまたはネイティブとほぼ同じくらい痛みを伴うため、コーディングの非効率性の痛みさえ感じないかもしれません。 Java、あなたが普通に受け入れるようになった痛みのレベル。
ウェッジ

これ以上同意することはできません-私はPHPのCプログラマーです。
ウォーレン

9

通常、Googleは小さなコードスニペットまたはオープンソースライブラリを見つけるのに適しています。一部のライブラリ/プログラムのドキュメントは、せいぜい信頼性がありません(存在する場合、単純または一般的な例を示しているだけです)。

プログラミングの本はあまりありませんが、OpenGLに関する本があり、その中に3Dエンジンのコードの大部分があり、簡単にコピーできますが、理論も読んでください-数ページをめくるだけでコードの説明がすぐそこにあり、読むのを待っています。最近では、おそらくネット上でいくつかのオープンソースの3Dエンジンを見つけることができますが、コードを大幅に変更する必要がある場合は、おそらく何らかのトラブルが発生しています。通常、ヘルプフォーラムは存在せず、SOの人々はそれが非常に専門的であればあなたの質問に答えてください。本当に専門的なものになると、世界中の数十人だけが、答えを出すのに十分な位置にいることを理解するために、何時間も費やすことなくあなたの質問に答えることができるでしょう。C#でリンクリストを実装する方法を尋ねると、最初の10分間でSOで5つ以上の回答が得られますが、three.jsで複雑なシェーディングアルゴリズムを実装する最善の方法を尋ねると、あなたの質問は表紙から岩のように沈んでいきます。

その上、書籍は読者が関係する理論について学びたいという観点からほとんど独占的に書かれていますが、グーグルはランダムなジャンクを生成します-コードスニペット、彼らが話していることを誰も知らない主題についてのアーカイブされた議論など。インターネット上の情報源は、SO、Moz Dev Network、MicrosoftのWebサイト、ブログなど、はるかに良くなっていますが、歴史的には、本はずっと良くなっており、インターネットの情報源がついに追いついています。


1
「グーグルで学ぶ」方法でランダムなジャンクを整理する必要がある時間を指摘するための+1
レイ

1
+1「誰が何を話しているのか誰にもわからないなど、主題に関するアーカイブされた議論」-ROFL。
5arx

7

最高の本で書くことの質は、あなたが始める前に多くの非自明な問題がレイアウトされるほどです。多くの経験を持つ著者は、予想外の副作用、長期的な影響、文書化されていない機能、典型的な使用シナリオなどについてあなたに話すことを知っているでしょう...

基本的に、あなたは多くの経験を積んだ作家の利益を得て、問題を理解し、本当に興味深い部分を指摘しています。

これはオンラインの参考資料でも見つけることができますが、多くの情報はオンラインで入力するのが難しいため、基本的すぎたり、詳細が欠けていたり、まったく間違っています。これは書籍でも発生する可能性があるため、一貫して優れたレビューを持つ古典的な書籍のみを完全に信じるようにしてください。他の書籍も役立つ場合がありますが、ソースの1つとしてのみ、相互参照または自分で試して情報を確認する必要があります。


1
+1000「まったく間違い」「最高のプログラマー」によってオンラインで書かれたサンプルコードが大量にあります。これらのサンプルコードは、コンパイラーを使用したり、何について話しているかを知りません。さらに、一貫した読みやすい方法でコンテンツを紹介し、強化する教育モデルを使用して、優れた本を執筆します。
jqa

6

本には、構造化された形式で大量の情報が付属する傾向があります。Googleには膨大な情報が含まれる傾向がありますが、必ずしも構造化されている必要はなく、必要なことを整理するのが難しい場合もあります。

私は実際に紙の本をもう読みません。私の横には電子リーダーがあり、ラップトップにKindleソフトウェアがあり、探している情報にアクセスできます。

Googleが役立つのは、プログラミング方法の構造化された概要を探しているのではなく、特定のタスクをプログラミングする方法の詳細が必要な場合です。誰かがほぼ常にそのタスクの前に、または少なくともそのようなものの前にそのタスクのコードを書いた。

プログラミングの学習と特定のタスクのプログラミングの学習には違いがあると思います。特定のタスクをグーグルで学習したことで、プログラミングの方法についてまともな概要が得られなかった場合、コードの品質に疑問が生じるでしょう。これは言語固有のものではなく、より概念的なものです。


4

書籍は、主題をより深く知りたい場合に役立ちます。確かに、いくつかのチュートリアルを行い、いくつかの(ペット)プロジェクトを書くことでC#を学びました。しかし、C#の深さは、下に行くかを見るために、いくつかの新しいことを学ぶことは依然として有用です。

また、私はプログラミングの本を取り、お風呂の中や太陽の下で読むことができます。デスクトップPCではできません。


4

他のプログラマーから学ぶのに便利な方法だからです。

本は補足です。これまでのところ、自分で作業するのは非常に高速です。本を読むだけでなく、何かを教えてくれる優れたプログラマーと一緒にプロジェクトに参加したい人はいないでしょうか?

「プログラミングについて知っておく必要のあるすべて」よりも、参照として使用する傾向があります。


3

ブックを使用すると、一連の情報を「受動的な」方法で吸収できます。あなたは可能性のサブセットを提示される可能性があるものを見る必要はありません。私がC#を学んでいたとき、この本は可能性を指摘するのに本当に役立ち、C ++に相当するものは何だろうと思いました。もちろん、マスタリングは(実際のサイズの)プロジェクトで使用するときに行われました。しかし、本は本当に違いと可能性を指摘するのに役立ちました。


3

要するに、本は高いレベルでより役立つ傾向があると思います。設計ガイダンスを提供し問題を解決する代わりに防止するのに役立ちます。


確かに本には欠点があります。Programming PythonのコピーはPython 2.0をカバーしていますが、使用するランタイムは2.6です。

しかし、本の重要な側面は、自分がつまずかないようなものを見つけることができるということだと思います。Googleは特定の問題の解決に役立ちますが、書籍は設計に役立ちます。そして、本をデザインするだけではありません。言語の設計を理解するのに役立つ優れた本を読むと、その言語の使用方法をよりよく理解できます。

他の本はあなたの知識を磨くのに役立ちます。Scott MurphyのEffective C ++本は良い例だと思います。この本はC ++の学習にはあまり適していませんが、アルゴリズム/インターフェイス/継承の設計で遭遇した(まだ)または回避されていない問題を見つけるのに役立ちます。簡単な解決策を見つけるのは簡単かもしれませんが(後で他の問題を引き起こす可能性があります)、言語をよく理解することで、そもそもこれらの問題を回避するようにソフトウェアを設計できます。

もちろん、本を紙に印刷するだけでは価値がありません。それらを作成することへの注意と努力、および厳格な教育を提供したいという欲求が、本の価値を与えます。多くの場合、副作用として、C ++ FAQ liteDive into Pythonのような電子書籍などの便利なオンラインリソースが得られます。また、完全で便利な学習ツールであるオンライン専用のチュートリアルもあります(一部のプラットフォーム/言語/ライブラリのドキュメントなど)。

ウェブ上のスニペットは質問に答えるのに良い方法ですが、あなたが尋ねるべきことをほとんど教えてくれません。


3

プログラマになりたいので、プログラミングの本を使っています。本は、私が専門的にプログラミングに精通するようになります。


3

私はプログラミングの本を長い間読んでいません。私はそれらをリファレンスガイドとして使用していますが、今ではほとんどの言語とフレームワークでインターネットが簡単だと思います。

とにかく、プログラミングの本から学ぶための最良のことはコア言語だと思います。例えば、私の最初の本当の言語はCでした。OSを書くことでそれを学びました(これはお勧めしません)。その結果、2、3年のプログラミングを行った後でも、Cに関する私の知識はかなり損なわれました。私はこの言語のコアな知識を得ることはありませんでした。これらの15行の厄介なコードをきれいな2行のコードに変えることができるとは知りませんでした。そのため、問題を解決できましたが、Cを最大限に活用していませんでした。

その後、ある時点でC ++を学習することにしました...(Cを学習し始めてから約2年後)。だから、私が持っていた唯一のC ++本、C ++ For Dummies Bookを読みました。私はそれの約3/4をまっすぐに読み、その間はほとんど「やること」をしませんでした。その結果、その15行の厄介なコードに慣れるのではなく、最初のプロジェクトに飛び込んだとき、より簡単な方法(それを調べなければならなかったとしても)。

C#/ ASP.NETを学んだときに同じことをしました。私はほとんど何もしなかったが、本の約3/4が終わるまで読んだ。そして、私が学ばなかったことについて、興味深いC#の質問についてStack Overflowを参照しました。私が最初のプロジェクトに足を踏み入れたとき、私のコードのほとんどは比較的きれいで、それ以来一度だけ「非常に」リファクタリングする必要があったと思います。

ですから、本はフレームワークや言語の能力を学ぶのに非常に役立つと言えます。しかし、それを超えて、もちろん強力な理論的で特別に設計された参考資料のための本を除いて、それらはインターネットによってほとんど役に立たなくなります。


2

読むものについてではなく、どれだけ読むかです。プロジェクトに取り組んでいる間、外出先でプログラミングの本を2冊持っているのが好きです。時々(あなたが思っているよりも頻繁に)、現在のプロジェクトに適用できるテクニックについて読みます。

現実の世界のソリューションに実装すると、情報は固まります。


2
SEのようなウェブサイトで質問に答えるとき、私は実際にそのケースを見つけます。コメントは、私が取り組んでいる、またはすぐに取り組む予定の問題の解決に関連する情報につながることがよくあります。
リー・ヘイズ

2

書籍の使用を好むのは、それらがあなたが取り組んでいる技術の状態のスナップショットを提供していると感じるからです。著者は、Y言語/ライブラリのXXバージョンで、これが問題Zを解決する方法であると述べます。5月のWebサイトチュートリアルでは、使用しているバージョンのリストが表示されないか、書籍がよく使用するサンプルコードを提供できません。

オンラインドキュメントは通常コピーペーストですが、このソリューションが問題を解決する「理由」については書籍でよく取り上げられています。

多くの場合、すべての参照へのリンクが失われる可能性があり、それらは移動したり、ダウンしたりする可能性があります。私は自分の本を投資のように保護しています。


2

本を読むことなく問題を解決できますが、その問題を解決するためにプログラムの背後で何が起こっているのかを本当に知っているでしょうか?

あなたは何が起こっているのか、何がより良い代替案であったのかを知る必要があります。そのためには、優れたプログラミング本が必要です。もちろん本を読むだけでは十分ではありません。内容を理解し、他の本を読み、問題を解決するさまざまなアプローチを考える必要があります。学習は本の有無にかかわらず続けられます。


1

C ++を学んでいたとき、頭の中の何かがクリックされるまで、ほとんどの文学はほとんど役に立たないことがわかりました。今日まで、私はそれが何だったのかわかりませんが、すべてが意味をなし始めました。書籍やウェブサイトは、はるかに意味がありました。C ++でのプログラミング方法を学ぶのに2冊の本が必要でしたが、どちらも真のC ++本ではありませんでした(主にMFCに焦点を当てたVisual C ++本でした)。

正しい本を手に入れれば、それは本当に便利です。私の友人がユニでディーテルの本を読んでいて、私はそれらが非常によく書かれていることを発見しました。彼らが私にとって正しい方法で物事を説明しないので、私は有用な「ダミーのための...」本を見つけたことがありません。最良のアドバイスは、本屋に行って本の味見をしてもらい、非常に高価な本に多額のお金を浪費しないようにすることです。

いくつかのプログラミングトピックについては、いくつかの本を読んだり、Googleで研究を行ったり、実験したりするのが便利だと思います。J2MEでチェッカーゲームに取り組んでいたときにAIアルゴリズムに取り組んでいたとき、私はこれをよくやっていました。また、カスタム構文用のコンパイラコンパイラを作成する方法を学んでいたときに、これを実行していることに気付きました。さまざまなバリエーションとビューがあります。

複数のビューを理解することで、他の方法ではわかりにくい接続を作成できる場合があります。


1

私は本とウェブのような「ジャストインタイム」ソースの両方から(プログラミング)を学ぶ傾向があります。両方とも良いかもしれませんが、全体的には本から学ぶことを好みます。理由は次のとおりです。

プロジェクトの一部を終了するためにすぐに知る必要があることだけを学ぶと、全体像を見逃すことがあります。最良の本は単なる参考書ではなく、ある意味では技術の概要と一般的な問題に対する最良の解決策に関する多くの経験豊富なアドバイスを提供することにより、見習いに近い何かを達成します。

ジャストインタイム学習は、満足するという問題に非常に簡単に苦しむ可能性があります。解決したい問題を特定すると、動作していると思われる最初のソリューションにジャンプし、次にインターウェブに走ってそれを実装する方法を見つけます。ただし、これによりトラブルが発生することがよくあります。経験のあるプログラマーと問題について会話できた場合、「Xを実行する方法はありません」とは言わず、代わりに「やらない」と表示されます。 X、代わりにYを実行してください」。そして、これはあなたが最高の本から得る傾向がある一種の知識です。実際、Javascript:The Good Partsなど、一部の本は完全にこの種のものに関するものです

JIT学習が持つ可能性のある他の問題は、学習曲線がはるかに遅いことです。JIT学習では、知る必要があることだけを学習する傾向があります。しかし、多くの場合、知識の基本コアを持つだけで、新しい言語またはフレームワークの学習を加速できます。基本につまずく代わりに、しっかりとした基盤から始めて、そこから構築します。本を読んでいる間にあなたがカバーするかもしれない多くの資料はすぐには役に立たないかもしれませんが、その背景知識はあなたの意思決定を導き、特にあなたがさらされている新しいコードを理解するのに有益です。もちろん、トレードオフがあり、読んだ後に覚えていない役に立たない事実を積み重ねる悪い本がありますが、基本と何に良い基礎を与える良い本もあります

開発者として成熟するために重要だと思う単一の技術的主題よりも高いレベルの本もあります。以下のようなブック完全なコードリファクタリングレガシーコードと効果的に作業するなど、あなただけのJIT学習を通じてそれらの本から知識をピックアップするつもりはありません。


1

私は本を​​読むために行くと思う、特に電子ブックをダウンロードする、章のすべての部分を読む、コードをコピーする!プログラミングエディターに貼り付けて、出力を確認してから、ロジックを変更してみてください。ダウンロード速度が速いため、ダウンロード可能な電子書籍について言及しました。本は本当に素晴らしいです。約20冊の本。すべて読むには愛が必要です。初心者は、インターネットから助けを借りて特定の問題を解決します。たとえば、コントロールをデータテーブルにバインドしており、データセットが何をするのかわからず、データベーステーブルのメモリ常駐コピー間の関係を作成するタスクが提供されていますが、できません。


0

新しいプログラマーにとって、プログラミングが実際に何であるか、それがどれほど深いかを理解することは非常に困難です。

誰でもプログラムを書いてコンピューターに指示することができます-ほとんど何も学ばなくても、これは難しくありません!難しいのは、サポートが可能で、チームの他のメンバーがすばやく理解し、深く理解できるプログラムを作成することです。この部分には何年も何十年もかかります。

さらに、チームの効果的な部分として働くことを学ぶことは、少し曲線です。

それでは、Web上の参照を検索しない方法で、これらの「現実の」プログラミングの問題を本がどのように解決するのに役立つのでしょうか。

私のお気に入りの本の2つは、「デザインパターン」と「リファクタリング」です。

リファクタリングは、不正なコードを認識する方法を説明した素晴らしい本です。コーディング参照を調べて学んだ場合、この本(多くのリファクタリングの本の1つ)は重要です。

設計パターンは、優れたプログラマーが理解できないほど多くを提供するわけではありませんが、コードですでに使用されている幅広いパターンに名前を付けました。これにより、プログラマーはより効果的にコミュニケーションをとることができ、一部のプログラマーは問題を攻撃する新しい方法を見つけることができました。ウェブ上でデザインパターンを見つけることはできますが、デザインパターンの名前をグーグルで検索する方が、やろうとしていることをグーグルで検索する方がはるかに簡単です。

私はインタビューでこれら2冊の本と彼らが何を達成しようとしているのかを尋ねられましたが、これは非常に有効なインタビューの質問だと思います。彼は非常に若いポジションを申請していない限り、本。


0

本から直接プログラムすることを学びました。グーグルとネットが普及する前の約20年前。彼らは素晴らしいリソースだと思います。しかし、現代のほとんどの本は、製造業者による技術記事を引用しているだけです。だから私は今オンラインで学ぶ方が良いことに同意します。次のように警告の言葉で:

私は多くの本を読んでいて、ほとんど経済的に実現可能だったので、インターネットにアクセスできました。あらゆる種類の大規模なプロジェクトを完了することはできませんでした。確かに、20チャプターを使って大規模な高度な本で大規模なプロジェクトを進めることができますが、実際のプロジェクトに関しては、私はいつも無理にレンガの壁にぶつかりました。私はあなたに伝えなければなりません、私はいくつかの重い本を読みました。

私は一生大学に入学するのに問題がありましたが、3年生になりました。私は最初の1年で、4年目に人々とマスターに会い、AI、HCI、アセンブラー、コンパイラー開発などの理論について生産的な会話をすることができました。しかし、このすべての知識があるにもかかわらず、妥当なプログラムを作成できませんでした。何が欠けていたのか...どんな本やオンラインからも手に入らないこと。

構造。初年度、私は技術的な性質を何も学びませんでした(Allreadyはすべてのことを知っていて、日々の研究、数学、デザインは私にとってかなり新しいものだったので、それらを理解しました)が、構造とチームワークを学びました。初めての夏休みに、初めての実際の仕事を終えることにこれまで以上に近づきました。

2年目に、私は多くの新しい技術を学びました(基本はまだ私が知っていたものと比較しましたが、私は知っていた理論を実際に実践していました)。これは、構造の重要性を繰り返し強調しました。私は最初の実際のプロジェクトを完了していません。私は自分をプログラマーだと考えています。

プログラミングを学ぶために本を読む必要があるとは思わない。しかし、その助け。しかし、私は本やウェブサイトがあなたが2年の大学から得たものを教えたり教えたりできないことを真剣に信じています。大学に進学せずにプロジェクトを完了することができた場合、フェアプレーですが、それは経験に関係なく、年齢を問わず強くお勧めします。

本は良く、インターネットは良く、グーグルとあなたのチューブは素晴らしいですが、私の意見では古き良き大学に勝るものはありません。そして、私はグーグルやユーチューブの量がこれまでにないことを疑っており、本の量がこれまでにないことを直接知っています。


上記の「最初の実際のプロジェクトは完了していません。今では自分をプログラマーと考えています」と書かれています。「最初の実際のプロジェクトを完了しました。今は自分をプログラマーと考えています」と表示されるはずです。スペルミスについては申し訳ありません。
ジャックスプラット

0

私は見当もつかない。私はプログラミング本に反対です。ほとんどの場合、追加情報を検索するにはインターネットで調査する必要があります。

プログラミング言語を学びたいですか?それのためのGoogle。jQueryが嫌いだったのは、見苦しかったからです。それから私はStack Overflowに来て、そこから多くのことを知っています。本の助けなしで。

  • Google for it
  • プロフェッショナルで完全なオープンソースアプリケーションを探してください。
  • そのコードを参照してTRYを実行し、何が起こっているのかを確認してください。
  • 既存のコードのスニペットから、高速でシンプルなアプリケーションを作成してみてください。
  • 自分で書き直してみてください。
  • インターネットでさらにチュートリアルを見つける
  • 経験を積む
  • もっと経験を積む
  • 新しい言語を習ったばかりです!(あなたが専門家になるとは言わなかったが、基本は数時間または数日で習得される)

参照として本を持っていることは非常に便利です-他の人の経験から得ることができます。「本」は、djangojqueryのような広範なオンラインドキュメント/チュートリアルでもかまいません。しかし、試行錯誤と読書ソースだけでは、知識に大きなギャップが残ります。jQueryの数行だけが必要な場合、メソッドは機能しますが、言語を学習していません。ただし、Cを学習したい場合は、K&Rを参照することをお勧めします。確かにほとんどの情報はどこかでオンラインになっていますが、多くのブログ投稿に散らばっています。
ジンボブ博士11

0

プログラミングは本だけから学ぶことはできないと思います(ほとんどの人が言及しているように)、たくさん練習する必要があり、インターネット上には多くのリソース(記事、ビデオ、サンプルなど)があります。

しかし、良い本はあなたの知識のギャップを埋めます。本の表紙を読んだ後、あなたはあなたが主題の知識に大きな穴がないという自信を与えます。挑戦は主題に関する良い本を見つけることですが。

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