回答:
基本的には、1つのかなり単純な質問に帰着します。言語に関する権威のある詳細な知識が必要ですか、それとも使用するのに十分なことを知って満足していますか。まったく知らない部分は?
基本的に、「言語弁護士」であるように生まれているように見える人々がいます。彼らは、彼らが知らない言語にいくつかの隅や割れ目さえある限り、休むことはできません。または理解する。これらの多くは比較的単純な言語に引き寄せられます。なぜなら、このレベルの詳細でより複雑な言語を学ぶことは、多くの場合、誰にとっても不可能に近いからです。
ほとんどのプログラマーにとって、それはまったくの時間の浪費になります。彼らはそれを(合理的に)上手に使用するのに十分な言語を知っているので、とても幸せで生産的です。それを超えて、彼らは単に気にしません。言語はツールであり、そのツールを目的に十分に使用できる限り、他に知らないことがあるという事実はほとんど無関係です。
決して
言語仕様を読むべきではありません。
それは時間の無駄です。
優れたプログラマーは、ランダムなコードを入力し、Stack Overflowで質問し、IDEを使用して、クラッシュする頻度の低いコードを最終的に作成できます。
言語を理解するのに時間を無駄にしないでください。優れたオートコンプリートを備えた優れたIDEを見つけてください。たくさんの質問をしてください。必要なのはそれだけです。
Javaの場合、言語仕様は、特定のソース構造の意味に関する質問に対する明確な回答を提供することを目的としています。学習者として読むことはお勧めできません。代わりに、優れた教師がすべての落とし穴と実際の意味を示します。
経験豊富な開発者にとって、Java Puzzlersは、ダークコーナーケースの理解を深めるのに非常に役立ちます。
おそらくそれは私だけですが、この質問は意味がありません。使用するツールを理解することは、プロの特徴です。理解が深ければ深いほど、ツールを使用する能力が向上します。私にとって、それは、ディレッタントになるかプロになるかの選択です。
私が新しい言語を学んでいるときはいつも、私が最初に探すのは仕様です。
ANSI C、C ++、Java、Scheme、Python、Javascriptの仕様を読みました。C、C ++、およびJavaの詳細のほとんどは、これらの言語を頻繁に使用しないという理由だけで忘れてしまいました。仕様を読んだことで、私はより良いプログラマーになりました。なぜなら、私は言語をよりよく使う方法を知っていたからです。
一般的に、時々遭遇する特定のトリッキーな瞬間を理解することは有用です。
しかし真剣に、言語を習得するためにその詳細な仕様に慣れる必要がある場合、その言語は不幸なものかもしれません。一般的な言い回しと同様に、アプリケーションのドキュメントが必要な場合、設計が不十分です。
私は通常、標準にあまり在庫を入れません。簡単な事実は、標準では、制御フローとして例外を使用しないように指示されないということです。シングルトンを使用しないように指示することはありません。保守可能なクラスインターフェイスの設計方法については説明しません。理由がわからない場合、アプリケーションがクラッシュする理由はわかりません。あなたは世界で最も明確に定義されたプログラムを持つことができ、それはまだ恐ろしいでしょう。
私の意見では、単純な事実は、プログラミングの課題の大部分は、言語にあなたが望むことをさせることではなく、正しいことを知っていることです。基本的な言語機能を知っている限り、それらをどのように使用するかが重要になります。