問題タブ [language-implementation]
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.
linux - 実用的なファイバースケジューラを実装する方法は?
コルーチンをベースとして使用し、おもちゃのスケジューラーを実装することについての非常に基本的なことを知っています。しかし、私はそれが全体として非同期スケジューラーについて過度に単純化された見方だと思います。私の考えには、一組の穴が欠けています。
アイドル/待機中のスケジューラーをCPUが実行しないようにするにはどうすればよいですか?スリープするファイバーもあれば、オペレーティングシステムからの入力を待つファイバーもあります。
c++ - C++ の多重継承はどのように実装されていますか?
単一継承は実装が簡単です。たとえば、C では、継承は次のようにシミュレートできます。
ただし、多重継承では、コンパイラは新しく構築されたクラス内に複数の親を配置する必要があります。それはどのように行われますか?
私が見ている問題は、両親がABまたはBAに配置されるべきか、それとも他の方法で配置されるべきかということです. そして、キャストを行うと:
コンパイラは、元のポインターを変更するかどうかを検討する必要があります。バーチャルでも同様のトリッキーなことが必要です。
java - Private inner class synthesizes unexpected anonymous class
When you compile a Java class with a private inner class, it appears that an anonymous class is automatically synthesized along with it for some reason. This class is sufficient to reproduce it:
When compiled, this generates the expected SynthesizeAnonymous.class
and SynthesizeAnonymous$InnerClass.class
files, but it also generates a strange SynthesizeAnonymous$1.class
file that corresponds to an anonymous subclass of java.lang.Object
that was synthesized. If you look at the disassembly with javap
, it appears the default constructor of InnerClass
gains a hidden parameter of this anonymous type, and that null
is passed to it when the new InnerClass()
is called.
Why is this class created? It's created even if InnerClass
isn't static, but it isn't created if InnerClass
isn't private or no instance of InnerClass
is ever created. Is it some form of access control? How does that work?
parsing - どの Lisp が解析に優れていますか?
主に学習課題として、Lisp 方言で Lisp インタプリタを実装したいと考えています。私がうんざりしているのは、この分野にどれだけ多くの選択肢があるかということです. 主に、しばらく前からあるいくつかの Lisp (Scheme や Common Lisp など) について学ぶことに少し興味があります。Clojure を使用したことがあるという事実のために、これを行うために Clojure を使用したくありません。:-)
では、フレーバーの 1 つは他のフレーバーよりも解析が優れているのでしょうか? また、Scheme を Common Lisp に実装する (またはその逆) と言うのは良い考えだと思いますか? それとも、私を失望させるのに十分な違いがありますか?
それが何か違いを生むなら、クロスプラットフォームの何かが欲しい. 私は Windows PC、Mac、および Linux ボックスを持っていますが、最終的にはそれらのどれでもこれを書くことができました。
javascript - IE8 JavaScript: select.options の動作
今日、DOM select 要素の JavaScript 'options' プロパティの IE8 の実装で奇妙な動作を発見しました。
次の HTML があるとします。
そしてJavaScript:
明らかに、IE8 で select の実装を書いている賢い人は、select 要素にインデクサーを書き、それを独自の「オプション」プロパティとして JavaScript に公開しました。
私の質問は、JavaScript 言語仕様によると、これは期待される機能ですか? これは既知のバグですか? 'options' プロパティを配列ではなくオブジェクトとして扱い続ける必要がありますか?
これは、'options' プロパティが JavaScript 配列として公開されている Firefox 3.5、Chrome 1.0、または Safari 3.1 で select DOM 要素がどのように動作するかではありません...
参考までに、要素をラップするために 'options' プロパティを jQuery コンストラクターに渡したときに、これに遭遇しました。(Firefox、Chrome、および Safari を使用して発生したような) X 要素を持つ jQuery オブジェクトの予想される結果ではなく、1 つの要素 (select 要素自体) を持つ jQuery オブジェクトが返されました。
java - インターフェイスのすべてのフィールドが暗黙的に静的で最終的なのはなぜですか?
インターフェイスで定義されたすべてのフィールドが暗黙的にである理由を理解しようとしていstatic
ますfinal
。インターフェイスのオブジェクトを持つことはできないので、フィールドを保持するという考えはstatic
私には理にかなっていますが、なぜそれらはfinal
(暗黙的に)あるのですか?
static
Java設計者がインターフェイスでフィールドを作成することになった理由を誰もが知っていますfinal
か?
python - 「レジスターマシン」とは正確には何ですか?
http://code.google.com/p/unladen-swallow/wiki/ProjectPlanから引用します:
「JITを使用すると、Pythonをスタックベースのマシンからレジスタマシンに移動することもできます。これにより、他の同様の言語でのパフォーマンスが向上することが示されています(Ierusalimschy et al、2005; Shi et al、2005)。」
大学では、再帰的プロシージャを使用する言語用の単純なコンパイラを構築しました。これにより、呼び出される各プロシージャのスタックフレームが維持され、再帰的に呼び出され、パラメータと戻り値が機能するようになります。
2つのこと:
1)上記の引用で使用されている用語を考えると、私が実装したものは「スタックベースのマシン」と見なされると考えるのは正しいですか?
2)ポイント(1)の私の仮定が正しかった場合、「レジスターマシン」はどのように機能しますか?つまり、スタックベースのマシンとどう違うのですか?
ありがとう!
java - java.util.HashMapおよびHashSetの内部実装
java.util.HashMap
私はとの内部実装を理解しようとしてきましたjava.util.HashSet
。
以下は、しばらくの間私の頭に浮かんだ疑問です。
@Override public int hashcode()
HashMap / HashSetでの重要性は何ですか?このハッシュコードは内部でどこで使用されていますか?- 私は一般的に、HashMapのキーがの
String
ようになるのを見てきましたmyMap<String,Object>
。someObject
のように(文字列ではなく)値をマップできますmyMap<someObject, Object>
か?これが成功するために私が従う必要があるすべての契約は何ですか?
前もって感謝します !
編集:
- キーのハッシュコード(チェック!)は、値がハッシュテーブルにマップされる実際のものであると言っていますか?そして、
myMap.get(someKey);
Javaが内部的に呼び出しsomeKey.hashCode()
て、ハッシュテーブル内の数値を取得し、結果の値を探しますか?
回答:はい。
編集2:
- で
java.util.HashSet
、ハッシュテーブル用に生成されたキーはどこからですか?追加するのはオブジェクトからですか。mySet.add(myObject);
次にmyObject.hashCode()
、これをハッシュテーブルのどこに配置するかを決定しますか?(HashSetではキーを提供しないため)。
回答:追加されたオブジェクトがキーになります。値はダミーです!
c++ - C / C ++の制御構造の制限?
if
ネストされたステートメントの数(300の球場のどこか)に関するVC ++の制限(どのバージョンかはわかりません)について聞いたことがあります。コードの形式は次のとおりです。
こういうことには限界があり、限界が小さいことに驚きました。私はコーディングの練習についてのコメントや、なぜこの種のことを完全に避けるのかについてのコメントを探していません。
これが私が想像するもののリストですいくつかの制限があるかもしれません:
- スコープ内の関数の数(グローバル、クラス、または名前空間)。
- 1つのステートメント内の式の数(例:複合条件)。
- スイッチのケース数。
- 関数へのパラメーターの数。
- 単一階層内のクラスの数(継承または包含のいずれか)。
他にどのような制御構造/言語機能にこのような制限がありますか?言語標準は、これらの制限(おそらく実装の最小要件)について何かを述べていますか?特定のコンパイラ/実装でこのような特定の言語制限に遭遇した人はいますか?
編集:if
上記の形式のステートメントは実際に「ネスト」されていることに注意してください。これは次と同等です。