問題タブ [language-design]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JavaがThrowableのジェネリックサブクラスを許可しないのはなぜですか?
Java Language Sepecification 、第 3 版によると:
この決定がなされた理由を理解したいと思います。一般的な例外の何が問題になっていますか?
(私の知る限り、ジェネリックはコンパイル時のシンタックス シュガーにすぎずObject
、.class
ファイル内で変換されるため、ジェネリック クラスを効果的に宣言することは、その中のすべてがObject
. .)
language-design - 多くの言語で大文字と小文字が区別されるのはなぜですか?
多くの言語で大文字と小文字が区別されるのはなぜですか?
単に継承の問題ですか?C は C であるため C++ は大文字と小文字を区別し、Java は C++ であるため大文字と小文字を区別します。それとも、もっと現実的な理由があるのでしょうか?
compiler-construction - あなた自身のプログラミング言語はどのように見えますか?
あなた自身の (私は完璧だと思います) プログラミング言語はどのようなものですか? 小さな例を挙げて、あなたの斬新なアイデアを説明してください!
私は構文に非常に興味があります。
javascript - JavaScriptでの「this」キーワードの動作の理論的根拠は何ですか?
言語デザインの観点からこれをお願いしています。だから私は見つけようとしています
- の振る舞いの理論的根拠は何
this
ですか? - の振る舞いはどの程度
this
間違いでしたか、または改善することができましたか?
不安な理由を明確にするためにthis
、次の例を検討してください。
所属するオブジェクトが簡単にf()
失われることに注意してください。から分離すると、グローバルオブジェクトa
になります(ブラウザの場合)。this
window
今考えてみましょう:
まったく使用せthis
ずに、メソッドがどこでどのように使用されているかに関係なく、オブジェクトコンテキストを確立して維持することができます。クロージャーが提供する力で、this
余計になり、おそらく少しでも危険になると思わずにはいられません...
私は、に反対this
したり、議論を始めようとしているわけではありません。私は単にそれをよりよく理解しようとしているだけです。「これ」が役立つことはありがたいですが、それも混乱を招く可能性があることを認識してください...確かに初心者にとって、そしておそらく専門家にとっても、十分にあいまいな場合には混乱します。
それでも、言語の他のコアな側面が忌避のための公正なゲームであるように見える時代に、それは言語の頻繁に使用され、一見尊敬されている部分のままです(すなわち、Crockfordおよびwith
またはnew
)。それでは何が欠けているのthis
でしょうか。
language-design - シンタクティック シュガーが時々悪いことと見なされるのはなぜですか?
シンタクティック シュガー (IMHO) を使用すると、一般に、非常に最小限のプリミティブ セットからコーディングするよりも、プログラムがはるかに読みやすく、理解しやすくなります。良く考え抜かれたシンタックス シュガーのマイナス面はあまり見当たりません。基本的に、構文糖衣はせいぜい不必要であり、最悪の場合は避けるべきものだと考える人がいるのはなぜですか?
編集:名前を付けたくありませんでしたが、人々が尋ねたので、たとえば、ほとんどの C++ および Java プログラマーは、率直に言って、言語の構文糖衣の完全な欠如を気にしていないようです。多くの場合、砂糖の不足をトレードオフに値するほど言語の他の部分が好きであるとは限りません。それは、彼らが本当に気にしないことです. また、Lisp プログラマーは自分たちの言語の奇妙な表記法をほとんど誇りに思っているようですが (技術的にそうではないため、構文とは呼びません)、この場合は、Lisp のメタプログラミング機能を同じくらい強力にすることができるため、より理解しやすいのです。
performance - プログラミング言語のコンパイル時間を最小限に抑える方法は?
私は自分が設計しているプログラミング言語についてもっと考えていました。コンパイル時間を最小限に抑える方法は何ですか?
language-agnostic - null の目的は何ですか?
私はコンパイラのクラスにいて、独自の言語をゼロから作成する任務を負っています。現在、私たちのジレンマは、「null」型を含めるかどうかです。null はどのような目的を提供しますか? 私たちのチームの中には、厳密には必要ではないと主張する人もいれば、提供できる追加の柔軟性のためだけにゼロを支持する人もいます.
特にnullに賛成または反対の考えはありますか? null を必要とする機能を作成したことがありますか?