独学は、役に立つ本を読むことから始まります。
私の観点からは、そのうちの1つは、Peter Seibelの著書Coders at Work:Reflections on the Craft of Program(Peter Seibel、Coders at work:Reflections on Craft of Programming、2009)です。エリア-ドナルド・クナット、ケン・トンプソン、ブラッド・フィッツパトリックなど。
この本には、正しいプログラマーになるための詳細なレシピは含まれていません。 この本は、コンピューターサイエンスとプログラミングの歴史をパーソナライズしたものです。
なぜこれが重要だと思いましたか? これは本からの引用です:
すべての段階で、人々は私たちの歴史の素晴らしさを実感していないという事実に直面しています。 多くのプログラマーにとっては、1970年代に人々が何かを知り、理解し、その方法を知っていたことは奇妙に思えます。 (ドナルドクヌート、523ページ)そして、最も重要なこと-インタビュイーは、開発プロセス(およびプログラミングの他の側面)のビジョンを非常に明確かつ明確に述べているので、私は、私の観点から、最も興味深い引用を少し選択することにしました。
コードの美しさと読みやすさについて
コードの美しさは、何かが非常に正確に-簡潔かつ本質的に-明確に定式化された格言や、一筆書きで作られたオリジナルと非常によく似たインスタントの似顔絵のようなものであるときです。 (ジェイミー・ザウィンスキー、p.37)
概して、「美しさ」と「メンテナンスのしやすさ」の概念は同等です。 または少なくとも密接に関連しています。 (ジェイミー・ザウィンスキー、53ページ)
コード自体はほとんどナンセンスであり、書き換えることができます。 何も変わらなくても、何らかの理由で破損します。 (ケン・トンプソン、p。400)
コンピューターにはバイナリコードが必要で、テキストファイルが必要です。 (バーニー・コーセル、p.472)
Knutによると、このプログラムは主に文学作品です。 プログラムは読み取り可能でなければなりません。 (ジョシュア・ブロック、p.161)
プログラムの複雑さ、コード品質、バグについて
Turing AwardのTony Hoar氏は見事に次のように述べています。「システムを設計するには2つの方法があります。 1つは、欠陥をまったくないように単純化することであり、2つ目は、 明白な欠陥を持たないように複雑にすることです。」 (Joshua Bloch、p。184)
プログラムが複雑になるほど、優れたプログラマーがそれを行うことが重要になります。 (Peter Deutsch、p。365)
ジョーのデバッグ法は、「すべてのエラーは、最後のプログラム変更の場所から、ある方向または別の方向に3人のオペレーターを超えないこと」です。 (ジョー・アームストロング、p.209)
Netscapeでこのようなジョークがありました。 3月31日までに最高品質の製品をリリースする予定です。」 (ジェイミー・ザウィンスキー、p.44)
エラーの検出を楽しむには、プログラムを自分で書いたことを忘れるだけです。 (Donald Knuth、p.516)
キープログラマースキルについて
優れたプログラマーと悪いプログラマーとの違い:優れたプログラマーは抽象化のレベルから別のレベルに簡単に移行します。変更を行う際にこれらのレベルを混在させず、変更が必要なレベルを正確に決定できます。 (ジェイミー・ザウィンスキー、p.39)
科学者のように考える; 一度に1つだけ変更してください。 忍耐と物事の根本的な本質を理解したいという欲求。 これは、動作したくないものをデバッグまたは設計するときに特に役立ちます。 (ブラッド・フィッツパトリック、p.90)
書く能力。 ダイクストラは次のように言っているようです:「英語が苦手なら( 母国語での意味-約 )、あなたは良いプログラマーになることはないでしょう。」 (Joe Armstrong、p。214)
本当に優れたプログラマーは多くのプログラミングを行います。 私は例外を見ていません。 2〜3日間プログラムしないと、かゆみを感じます。 (ジョーアームストロング、205ページ)
トレーニングについて
自分の無知を恐れないことが非常に重要です。 何かの仕組みがわからない場合は、理解している人に聞いてください。 多くは恐れています。 何が悪いの? 結局のところ、あなたは何かを知らないのです。あなたが愚かであるからではなく、まだ知らないだけです。 (Jamie Zawinski、p。48)
他の人のコードを読んでください。 (Brad Fitzpatrick、p。74)あなたと同じように書くプログラマを読んではいけません。 (ドナルド・クヌート、525ページ)
もっとプログラム。 理論クラスは知識を提供しますが、プログラミングは技術であり、習得する唯一の方法は実践です。 (バーニー・コーセル、p.459)
常に以前よりも少し難しいこと、あなたにとっては強すぎることをしてください。 (ブラッド・フィッツパトリック、p。75)
関連科学について
プログラミングは数学よりも文学に近い。 まるであなたが物語を書いているかのように、限られた辞書、つまりコンピューターを持った非常に愚かな男にその意味を伝えようとします。 説明する必要のあるアイデアがあり、説明する手段が限られています。 あなたはどの言葉を選びますか、紹介と結論はどのように見えますか? そのようなもの。 (ジェイミー・ザウィンスキー、52ページ)
すべてのプログラマーが数学を必要とするわけではありませんが、プログラマーが日々遭遇する概念を整理します。 (Guy Steel、p.300)