問題タブ [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.
c# - Xは列挙型です-これは仕様に従っていますか?
オブジェクトが Enum であるかどうかis Enum
をテストする では、オブジェクトをテストして列挙値が含まれているかどうかを確認する方法について説明しています。
これは仕様のどこかに指定されていますか? (バージョン 4.0 の 7.10.10)のエントリにis
は、次の可能な右側の値がリストされています。
- 無名関数
- メソッドグループ
- ヌル
- 参照型 ** これは列挙型でしょうか?
- null 許容型
- null 非許容値型 ** これは列挙型でしょうか?
列挙値が上記のリストの「参照型」と一致すると仮定すると、仕様には次のように記載されています。
...結果は、D [RHS の動的型] と T [LHS] が同じ型である場合、D が参照型であり、D から T への暗黙的な参照変換が存在する場合、または D が値型と D から T へのボックス化変換が存在します。
の場合、これらの条件のいずれかが厳密に真is Enum
ですか? たとえば、is class
またはのコンパイラ サポートはありませんis struct
。
仕様によるサポートis Enum
ですか、それとも実装上の決定ですか?
python - Pythonはグローバル変数とローカル変数をどこに保存しますか?
質問とほぼ同じローカル、グローバル、静的、自動、レジスタ、外部、定数、揮発性変数はどこに保存されますか?、違いは、このスレッドがPython言語がこれをどのように実装するかを尋ねていることです。
python - 同じ言語での言語の実装は、どのようにしてその言語よりも高速になりますか?
たとえば、 Java で JVMを作成した場合、この実装を構築するために使用した元の実装よりも、実際に作成した実装を高速にすることは可能ですか?その実装について?
(紛らわしい...)
PyPyを見てください。Pythonで作られたPython用のJITコンパイラです。それは問題ありませんが、使用し、依存している Python の元の実装よりも高速であると主張するにはどうすればよいでしょうか?
python - Pythonで実装された言語にトレースバック/デバッグ機能を追加するには?
「foo」という名前の別のプログラミング言語を実装するためにpythonを使用しています。foo のコードはすべて python に変換され、同じ python インタープリターで実行されるため、python に JIT 変換されます。
以下は foo のコードの一部です。
これは次のように変換されます:
「ウォッチドッグ」は、言語が信頼できないコードを実行するため、リソースの使用を監視/制限する greenlet (生成されたコードも greenlet コンテキストで実行されます) です。
例でわかるように、python コードが生成される前に、ウォッチドッグ スイッチを追加し、関数識別子に小さな変更を加えるために、解析ツリーに小さな変更が加えられます。
すべての要件を満たすには、言語にトレースバック/デバッグ機能も追加する必要があります。これにより、python ランタイムが例外をスローしたときに、ユーザーが表示するのは foo のコード トレースバック (生成された python コード トレースバックを表示するのではなく) になります。
ユーザーが次の内容で「program.foo」という名前のファイルを作成するとします。
これは次のように変換されます:
次に、「program.foo」の出力は次のようになります。
それを行う簡単な方法はありますか?Pythonバイトコードはインタープリター実装の内部にあるため、インストルメント化を伴わないソリューションを好みますが、他に何もない場合は、バイトコードをインストルメント化することもできます。
java - Javaでのシフト操作の実装
最近、Javaでシフト演算子を使用しましたが、演算子がC>>
と同じ意味を持たないことに気付きました。Javaでは、最初のビットを同じ値に保つ符号付きシフトです。Javaでは、Cシフトに相当するのは演算子です。左シフト演算子()はCと同じで、最初のビットを無視してシフトします。>>
>>
>>>
<<
私が疑問に思ったことは
- なぜこの変更を行うのですか?
- 表記が一貫していないのに、>>と<<は符号付きシフトであり、>>>と<<<は符号なしであるのはなぜですか?
- 符号付きシフト演算子の用途はありますか?
python - inspect.currentframe()は、一部の実装では機能しない可能性がありますか?
ドキュメントによると:
inspect.currentframe()
呼び出し元のスタックフレームのフレームオブジェクトを返します。
CPython実装の詳細:この関数は、インタープリターでのPythonスタックフレームのサポートに依存しています。これは、Pythonのすべての実装に存在することが保証されているわけではありません。Pythonスタックフレームサポートのない実装で実行している場合、この関数はNoneを返します。
この関数だけが「実装依存」としてマークされているのはどうしてですか?inspect.trace
この機能が機能しない場合、、などの同様の機能inspect.stack
も利用できませんか?
また、「スタックフレームサポート」とはどういう意味ですか、なぜそれがないのでしょうか?
ruby - スレッドセーフな Ruby インタープリターとはどういう意味ですか?
2000年のインタビュー(つまり、YARV以前)で、マッツは次のように述べています。
Matz: もっと速く、もっと安定させたいです。コードネーム「Rite」という Ruby 2.0 用のインタープリターを完全に書き直すことを計画しています。より小さく、組み込みやすく、スレッドセーフで、高速になります。バイトコード エンジンを使用します。現在のバージョンを維持するだけでかなり忙しいので、おそらく実装には何年もかかるでしょう。
この文脈で「スレッドセーフ」とはどういう意味ですか? グリーン スレッドを使用できるようにするインタープリターはありますか? ネイティブ スレッドを使用できるインタープリターはありますか? グローバル インタープリター ロック (YARV Ruby 用語では GVL) を持たないインタープリター?
java - Javaでの優先キューのデフォルトサイズ
JavaのPriorityQueueのデフォルトサイズがなぜなのか疑問に思います11
。私は実装を調べました、そしてそれは私にとって物事をより混乱させました。
優先キューはヒープとして実装されます。その容量は、次の機能を使用して調整されます。
11
容量の初期値がわかりません。容量は常にレベル数にすべきだと思い2
ます。何か説明はありますか?
c# - foreach は C# でどのように実装されていますか?
foreach
C# ではどのように正確に実装されていますか?
その一部を次のように想像します。
しかし、私は実際に何が起こっているのかわかりません。enumerator.Current
各サイクルの返品にはどのような方法が使用されていますか? [サイクルごとに] を返しますか、それとも無名関数または本体を実行するために何かを必要としforeach
ますか?
vector - vector の実装に複数のケースがあるのはなぜですか?
のclojureの定義は次のvector
とおりです。
なぜこれほど多くのケースがあるのでしょうか。または、非常に多い場合、なぜそれ以上ないのでしょうか?
私の推測では、実装効率と確率のバランスがとれていると思いますが、これがどのように効率化されるかはよくわかりません。