問題タブ [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 を必要とする機能を作成したことがありますか?
c++ - なぜコンパイルに時間がかかるのですか?
私はプログラミング言語を設計していますが、私が考えていた問題の1つは、プログラミング言語のコンパイルに時間がかかる理由でした。c ++は、ファイルをコンパイルするたびにヘッダーを解析してコンパイルする必要があるため、長い時間がかかると想定されています。しかし、プリコンパイル済みヘッダーは同じくらい時間がかかりますか?この問題を抱えている言語はc++だけではないと思います。
language-design - プログラミング言語について話すとき、マジックの定義は何ですか?
「魔法」という言葉は、「言語 X には魔法が多すぎる」、「プラットフォーム Y は一般的に魔法を避ける」などの文脈でよく使われます。ただし、この用語の定義はかなり不十分であり、人々が見ればわかるものです。たとえば、Java には魔法がほとんど含まれていないと言われていますが、Java のガベージ コレクターは多くのことをプログラマーから隠しています。魔法が単純に詳細を隠す抽象化を意味する場合、アセンブリ言語で大規模なプログラムを作成する人がもういないことを考えると、魔法が悪いことと見なされるのはなぜでしょうか? 魔法がそれ以上の意味を持つとすれば、それは何を意味するのでしょうか?
actionscript-3 - 不変コレクション Actionscript 3
私は最近、AS3 でクリーンなコーディング手法を実装しようと試みています。これらの 1 つは、包含オブジェクトから配列への参照を渡さないことです。ポイントは、私が 1 つのクラスからの追加と削除を制御し、アレイの他のすべてのユーザーが読み取り専用バージョンを受け取ることです。
現時点では、読み取り専用バージョンは私が作成したArrayIteratorクラスであり、典型的なIteratorインターフェイス (hasNext、getNext) を実装しています。また、Proxyを拡張するので、Array と同じようにfor eachループで使用できます。
だから私の質問は、これは多くの言語の基本的な機能であってはならないということですか? コレクションのビューのみを読み取るために参照を渡す機能はありますか?
また、AS3 のコレクションの型安全性がVectorクラスの形で改善されたので、VectorIteratorで Vector をラップすると、不変性のために入力が失われます。AS3 で不変性とタイピングという 2 つの欲求を実装する方法はありますか?