言語仕様を読む価値はありますか?[閉まっている]


18

もしあなたがその言語やそれに類するもののためのコンパイラ/インタプリタを書こうとしないなら、言語仕様/標準文書(例えば、Java言語仕様)を読む価値があるのだろうか?このような本を読むことは、誰もが初めて言語に触れるべきではないことを理解していますが、その詳細を学ぶには素晴らしい方法です。

他の人を悩ませたことはありますか?


4
言語仕様は、カバーからカバーへと読むことを意図したものではなく、単なる参照です。
マフムードホッサム

回答:


18

基本的には、1つのかなり単純な質問に帰着します。言語に関する権威のある詳細な知識が必要ですか、それとも使用するのに十分なことを知って満足していますか。まったく知らない部分は?

基本的に、「言語弁護士」であるように生まれているように見える人々がいます。彼らは、彼らが知らない言語にいくつかの隅や割れ目さえある限り、休むことはできません。または理解する。これらの多くは比較的単純な言語に引き寄せられます。なぜなら、このレベルの詳細でより複雑な言語を学ぶことは、多くの場合、誰にとっても不可能に近いからです。

ほとんどのプログラマーにとって、それはまったくの時間の浪費になります。彼らはそれを(合理的に)上手に使用するのに十分な言語を知っているので、とても幸せで生産的です。それを超えて、彼らは単に気にしません。言語はツールであり、そのツールを目的に十分に使用できる限り、他に知らないことがあるという事実はほとんど無関係です。


3
最後の段落の+1。それはほとんどのプログラマーが気付くべきことです-彼らはジョン・スキート(C#についてすべてを知っているが、他のことについてほとんど何も知らない-例えば彼がSQLの質問に答えるのを見たことがありません)または単なるユーザーですが、他の多くのテクノロジーになりたいですか?実践がより実用的になり、人生がより面白くなります。

2
@Developer Art:しかしJon Skeetは神です;)
アント

1
@sbi:言語(およびその複雑さ)が明らかに大きな要因であることに同意します。ただし、標準サイズは必ずしも多くを意味するわけではありません。たとえば、適切な言語をカバーするC ++標準の部分は、400ページまでしかありませんが、Java言語の仕様は500ページまでです。Javaは、一部の人が主張する「クリーンアップされた」C ++に近いとは本当に思いませんが、C ++よりも25%複雑であるとは信じられません。
ジェリーコフィン

3
@Developer Art-Jon Skeetについて少し厳しい、彼はすべて(SQLを含む!)のバッジを持っています
11

2
@dietbuddha:私は確かに無知を言い訳するつもりはありません、公平に言えば、ほとんどの人にとって、学習に時間を費やすべきということよりも、何かを学ぶべきかどうかの問題ではありません。C ++プログラマーにとって、新しいアルゴリズムの学習と、特定のパラメーターセットに対して呼び出すオーバーロードされた関数の選択に使用される正確なルールの学習のどちらがよりメリットがありますか?彼が通常呼び出される気にする多くの理由がある場合、彼はおそらくとにかく過負荷を乱用していることに留意してください!
ジェリーコフィン

12

決して

言語仕様を読むべきではありません

それは時間の無駄です。

優れたプログラマーは、ランダムなコードを入力し、Stack Overflowで質問し、IDEを使用して、クラッシュする頻度の低いコードを最終的に作成できます。

言語を理解するのに時間を無駄にしないでください。優れたオートコンプリートを備えた優れたIDEを見つけてください。たくさんの質問をしてください。必要なのはそれだけです。


3
決して?通訳/コンパイラを書いているとしても?
greyfade

1
あなたはそれを打ちました!それが動作する方法です。;)
x4u

4
@greyfade:決して。事実を信用しないでください。前提に固執する。
S.ロット

6
その微妙なところは何ですか?
アディティアP

2
正直に言って、これが皮肉かどうかはわかりませんでした。:P
greyfade

5

Javaの場合、言語仕様は、特定のソース構造の意味に関する質問に対する明確な回答を提供することを目的としています。学習者として読むことはお勧めできません。代わりに、優れた教師がすべての落とし穴と実際の意味を示します。

経験豊富な開発者にとって、Java Puzzlersは、ダークコーナーケースの理解を深めるのに非常に役立ちます。


2

一般的な答えは次のとおりです。はい、それは価値があります。

移植可能なコードを作成する場合は、必須です。

Adaやperlなど、一部の言語では避けられません。

さらに、コードを書くだけでなく、他の人からコードを読む場合は、最終的に仕様を参照する必要があります。


2

おそらくそれは私だけですが、この質問は意味がありません。使用するツールを理解することは、プロの特徴です。理解が深ければ深いほど、ツールを使用する能力が向上します。私にとって、それは、ディレッタントになるかプロになるかの選択です。

私が新しい言語を学んでいるときはいつも、私が最初に探すのは仕様です。

ANSI C、C ++、Java、Scheme、Python、Javascriptの仕様を読みました。C、C ++、およびJavaの詳細のほとんどは、これらの言語を頻繁に使用しないという理由だけで忘れてしまいました。仕様を読んだことで、私はより良いプログラマーになりました。なぜなら、私は言語をよりよく使う方法を知っていたからです。


1

一般的に、時々遭遇する特定のトリッキーな瞬間を理解することは有用です。

しかし真剣に、言語を習得するためにその詳細な仕様に慣れる必要がある場合、その言語は不幸なものかもしれません。一般的な言い回しと同様に、アプリケーションのドキュメントが必要な場合、設計が不十分です。


これがまさにECMA-262のコピーを手元に置いている理由です。
-greyfade

1

あなたがどんな瞬間に出会ったとき、私はそれが便利であると思います、しかし、私はまっすぐな読みとして保持することが難しいと思います。しかし、私が何かを理解しなかった後に使用したとき、それは常に私の知識を大いに促進しました。


1

あなたがその言語のハードコアプログラマであり、それからすべての微妙なニュアンスを絞り込めるようにする必要がある場合、はい。その場合の時間の投資には明らかな利益があります。

そうでなければ、いいえ。あなたが知識を使わないなら、それは確かにあなたに固執するつもりはありません。言語仕様は、想像できるほどつまらないものに関するものです。


1

私は通常、標準にあまり在庫を入れません。簡単な事実は、標準では、制御フローとして例外を使用しないように指示されないということです。シングルトンを使用しないように指示することはありません。保守可能なクラスインターフェイスの設計方法については説明しません。理由がわからない場合、アプリケーションがクラッシュする理由はわかりません。あなたは世界で最も明確に定義されたプログラムを持つことができ、それはまだ恐ろしいでしょう。

私の意見では、単純な事実は、プログラミングの課題の大部分は、言語にあなたが望むことをさせることではなく、正しいことを知っていることです。基本的な言語機能を知っている限り、それらをどのように使用するかが重要になります。


1

読む価値は間違いなくあります。C ++やJava、Pythonなどの一部の言語は十分に複雑であるため、言語仕様を読むことで、それらの言語とそれらが持つすべての派手な構文/セマンティックトリックについて多くを学ぶことができます。

大学までのバスに乗ってScheme R5RS言語仕様を読んでいたのは、短くてコンパクトで、利用可能なすべての構文とすべての基本機能を学んだからです。


0

doc.python.orgの「言語参照」というラベルの部分は非常に便利です。「データモデル」の章は特にそうです。


0

この言語でのプログラミングがあなたの仕事であり、仕事を真剣に受けたい場合は、特にJava言語仕様のように比較的簡単かつ迅速に理解しrecently、多くを失いましたが、言語仕様を読む必要がありますジェネリックのシンプルさです。

しかし、まだ知らない新しい言語を学び、最終的に習得する予定がある場合、時間を無駄にする前にその言語の仕様を読むことは非常に洞察力があります。多くのC ++開発者がC ++ Annotated Reference Manualを読んで理解しようとしたら、多くの人がそれを使い果たしてしまうでしょう。

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