JavaRush /Java Blog /Random-JA /Kay Horstmann とより優れた Java プログラマーになる方法についての 1500 の言葉

Kay Horstmann とより優れた Java プログラマーになる方法についての 1500 の言葉

Random-JA グループに公開済み
おそらく、ケイ・S・ホーストマン という名前をすでに聞いたことがあるでしょう。彼は Java の世界ではかなり著名な人物であり、私たちが愛する言語に関する多くの本の著者です。その中には、古典的なコース「Core Java」(2 巻の書籍「Java. Professional's Library」でロシア語で出版されています) と「せっかちのための Java」のエッセンスを簡潔にまとめたシリーズ (ロシア語で出版されている「Java SE」 ) があります。 8.入門コース」「Java SE 8.基礎コース」)。彼は「Javaチャンピオン」という誇り高き称号を持っています。このリンクでは、興味深い情報を掲載した彼の昔ながらの Web サイトを見つけることができます。
Kay Horstmann とより優れた Java プログラマーになる方法についての 1500 の言葉 - 1
InformITリソースの記事の翻訳を紹介します。この記事では、ケイがプログラマを始めたばかりかプログラマを続けている人向けに、プログラマとしてより良くなる方法についていくつかのヒントを述べています。ある日、InformIT の編集ディレクターである Jennifer Bortel が、より優れた Java プログラマーになる方法について一言書いてほしいと私に頼みました。彼女は、『Core Java for the Impatient』の著者である私がそれについて何か知っているかもしれないと提案しました。「これ以上簡単なことはありません。本を買えばいいだけです」と最初は思いました。しかし、この答えはうまくいきませんでした。1500 単語に収める必要があり、この時点では 62 単語しかありません* (もちろん、記事を翻訳するとき、単語数を維持しようとはしませんでした)おおよその翻訳)。最近、開発者の友人からメールを受け取りました。面接で次のコードがスレッド セーフではない理由を尋ねられました。
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
私の友人は、この例のコードはスレッド セーフであると判断しました。私も彼に同意し、static2 番目のメソッドにキーワードが 1 つ欠落しており、キーワードが挿入されると、クラス オブジェクトの組み込みロックによってアクセスが制御されることに注目しました。また、スレッドカウンターが必要な場合は、 を使用した方がよいため、これは面接での質問としては適切ではないとも言いましたAtomicInteger。しかし、真夜中に目が覚めて、この言葉がstatic何らかの理由で省略されたらどうなるだろうかと考えました。おそらく、誰かの卑劣な面接官が、候補者を誤解させるような方法でこの例を意図的に構成したのでしょうか? そこで私は質問をした開発者に返事を書き、先ほどの私はおそらく間違っていたと言いました。インタビュー質問と呼ばれる並行世界では、この質問に対する答えは「2 番目のメソッドにはオブジェクト ロックが含まれています。」です。この答えの後、その男性は、私がこの種の面接の問題への対処方法を教える YouTube チャンネルを運営しているかどうか尋ねました。ああ、私はそんなことしません。私はコンピューター サイエンスを教えたり、本を書いたりしていますが、私の主な目標は、より優れた「面接の問題解決者」を育てることではなく、生徒をより優れたプログラマーに育てることです。昔、ピーター ノーヴィグ(人工知能分野のアメリカの科学者、Google 研究ディレクター、略称トランス) が自分のブログに素晴らしい記事を書きました。彼は、24 時間または 21 日間で Java を学べると約束する本はまったくばかげていると主張しました。彼の意見に同意するのは難しい。どの分野でも専門家になるには 10 年、あるいはおそらく 10,000 時間かかる。そして、専門家は初心者とは異なる方法で情報を処理することはよく知られています。古典的な実験では、経験豊富なチェスプレイヤーと初心者のチェスプレイヤーに、特定の駒が配置されたチェス盤を数秒間見せた後、それを隠して、駒をそのまま配置するように求められました。初心者はこのタスクにうまく対処できませんでしたが、専門家は問題ありませんでした。ただし、重要な条件が 1 つある場合に限ります。それは、駒の配置が実際のゲームに対応している必要があるということです。駒がランダムに配置された場合、ボードを再構築する点では、専門家でも初心者と同じです。
Kay Horstmann とより優れた Java プログラマーになる方法についての 1500 の言葉 - 2
だからこそ、私は手紙の質問にそのとおりに答えました。私の経歴はインタビューではなく実際のプログラミングにあったので、不足しているキーワードを直感的に追加して「間違った」結論を出してしまったのです。何が起こったのか、そして私が追加しなければ例のようなコードを決して書かない理由を説明した後でも採用されると思いたいのですが。おそらく、そのような答えが彼らを満足させないなら、私自身も彼らと一緒に働きたくないと思うでしょう。
さて、認定試験や面接の勉強をしたからといって、より良いプログラマーになれるとは思いません。また、プログラミングに関する本を大量に買って最初から最後まで読むのもうまくいかないと確信しています (ただし、これらの本の著者である私は、それを認めたくないのですが)。実際、より優れたプログラマーになるための本当に良い方法は、できるだけ多くのソフトウェアを作成することです。私は時々、大学でコンピューター サイエンスの入門コースを教えています。これは私が今まで教えた中で最も難しいコースです。大学院課程よりもさらに難しいです。私が若い教授として働き始めたとき、私は学生に熱心に講義をし、ループforwhileループの違いなどのプログラミングの問題を忠実に取り上げましたdo。次に、学生に 3 週間のプロジェクトを 4 つ割り当てました。そしてこの科目は、太古の昔からすべての大学でこのように教えられてきました。私の最初の試みの後、二学期コースの講師は、私の元生徒のほとんどが、一学期のプログラミングの後、単純なループですらよく理解していないと不満を言いました。そしてそのような結果は太古の昔から起こっています。「FizzBu​​zz またはプログラマーがプログラミングできない理由」という記事を覚えていますか? 外国語を学ぶとき、ほとんどの課題は演習と実践であり、理論ではありません。知識を潜在意識に「押し込む」ことが非常に重要です。ターニングポイントは、各サイクル、または (フランス語の場合) それぞれの不規則動詞について積極的に考える必要がなくなったときに起こります。この瞬間が来たなら、あなたは次のレベルに進む準備ができています。そして、この考えには何ら革命的なものはありません。
Kay Horstmann とより優れた Java プログラマーになる方法についての 1500 の言葉 - 3
すべての鍵となるのは即時のフィードバックです。心理学者の中には、即座のフィードバックを備えたコンピューターベースの学習で、さらに多くのことができると信じている人もいます。 たとえば、別の古典的な実験では、意欲的なパイロット訓練生が計器盤を何度も見て飛行機の動きを説明する訓練セッションを受けました。同時に、彼らはそれが正しく行われたかどうかを示す即時フィードバックを受け取りました。2時間の訓練の後、彼らは経験豊富なパイロットを上回りました。もちろん、これはすぐに実際の飛行に派遣できることを意味するものではありませんでしたが、彼らはもはや計器盤上の多様で多数のダイヤルに緊張することはありませんでした。 したがって、Java を学び始めたばかりの場合は、練習問題をたくさんやって練習するのが最善の方法です。コードの正しさを自動的にチェックする Web サイトやオンライン コースが多数あります。むちゃくちゃな内容ではなく、実際の挑戦を提供するものを選択してください。結局のところ、潜在意識が実際に実際に書くコードを上手にできるようにしたいのです。このため、私は、鳴いたり吠えたりするメソッドを備えた動物クラスなど、不自然な状況を使用するプログラミング例にはあまり興味がありません。しばらくすると、プログラミングの基礎をマスターできるようになります。次のレベルに進むには、いくつかのプロジェクトを作成します。数年前、InformIT ポータルは経験豊富なプログラマーに「プログラマーが新しい言語を学ぶための最良の方法は何ですか?」という質問をしました。彼らの答えを要約すると、次のように結論付けることができます。「現在のプロジェクトではこの言語を使用してください」。それで、あなたが常に実装したいと思っていたことを考えて、先に進んでください。 20 年前、Java がまだ非常に若かった頃、私の友人であり、共著者でもあったGary Cornellから電話があり、こう言われました。「ケイ、Java に関する本を書くつもりだ」。私の答えは、彼も私もこの Java について実際には何も知らないということでした。それに対して彼はこう言い返しました。私たちはすでに本の契約を結んでいます。」何もすることはありません。私たちが急がなければならなかったのは、誰かが「24 時間で Java ダミーになることを教えよう」という本がもうすぐ出版されると発表したからです...そのような名前だったと思います (ケイは「For Dummies」シリーズの本をからかっている) - 「ダミー用」という単語「Dummy」は「ダミー」と訳せます - 訳者注)。新しい言語を学ぶために、私はプロジェクトから始めました。退職計画のためのユーザー インターフェイスを作成するプログラムを作成し、次に天気予報サイトに接続して天気予報を表示するプログラムを作成しました。その後 - 高速道路上の車の動きをシミュレートするプログラム。当時、これらのプログラムは本当に素晴らしかったです。java.awtjava.netとスレッド ( threads)。そして、ドキュメントに書かれていることだけではなく、これを実際に機能させる方法を学ばなければなりませんでした。当時、これらはまったく異なるものでした。これが、Core Java [1] がヒットした理由です。それはダミー向けではありませんでした。
Kay Horstmann とより優れた Java プログラマーになる方法についての 1500 の言葉 - 4
当時、Java を学ぶことははるかに困難でした。Stack Overflowのようなサイトはありませんでした( JavaRush もありませんでした - 編集者注)。この時点で、プログラミングの「スキル」を向上させるための次のアドバイスを作成します。そのため、自分自身のプロジェクトに取り組んでいると、必ずどこかで行き詰まることがあります。この場合、専門のフォーラムにアクセスして答えを見つけてください。信じてください、これは素晴らしいアイデアです。まず、これまでに何度も尋ねられた質問をします。しかしすぐに知識が増え、質問はよりユニークなものになるでしょう。これは素晴らしい学習方法です!もちろん、これはコードの一部をコピー&ペーストして、「これをどうすればいいですか?」と尋ねることではありません。問題の真相に到達し、行き詰まる前に問題を解決するためにどのような試みを行ったかを説明する必要があります。ちなみに、ほとんどの場合、文章で質問を組み立てているときに、自分で答えを見つけます。質問を送信する前から、「ここで何が問題なのか、それは簡単だ」と自分に言い聞かせるだけで済みます。 。しかし、たとえそれが起こらなかったとしても...信じてください、思慮深い質問は思慮深い答えを引き寄せる傾向があります。他の人の思慮深い質問に答えることで、社会的な好意を返すことを忘れないでください。質問することと、思慮深い質問に答えることの両方が、より優れたプログラマーにつながります。「それで、本はどうですか?- あなたが尋ねる。「 GoogleStack Overflowのおかげで、それらは本当に完全かつ取り返しのつかないほど時代遅れになってしまったのでしょうか?」新しいテクノロジーに取り組むたびに、私は自分が勇気のある人間であり、すべての困難を一人で克服できると信じています。しかし、1 時間の無意味な苦痛が 1 時間の正気の時間に取って代わられ、私は本を買いました。最近では技術書が驚くほどお買い得になっています。電子書籍に 40 ドルを支払って、すぐに答えられた質問が 1 つだけだったとしても、すでにお金を取り戻したことになります。ライター仲間を失望させたくないのですが、私は技術書を最初から最後まで読んだことがありません。自分の問題とその解決策が書かれていると思われるところから始めて、解決方法が理解できるまで読みます。そのため、私は現在、このように読める本を書こうとしているところです。このアプローチから「For the Impatient」シリーズが生まれました。そして、この時点でやめるべきです。編集上の制限である 1500 ワードを超えました。より良いプログラマーになるためには、知識にはさまざまなレベルがあることを認識することから始めてください。
  1. まず、基本的な言語構造を潜在意識に「取り込み」ます。つまり、多数の演習を解くことで知識が自動的に得られます。

  2. できるだけ早く、興味のある実際のプロジェクトに取り組み始めてください。

  3. その後、質問したり回答したりできるコミュニティに参加してください。

  4. これができるようになると、面接でも知識や経験を活かして話せるようになります。そして、その人為的なパズルを解けるかどうかは、あまり重要ではありません。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION