問題タブ [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.

0 投票する
3 に答える
234 参照

concurrency - 並行システムでガベージ コレクションを行うにはどのような方法がありますか?

同時実行をサポートするインタープリターのガベージ コレクターを作成する必要がありますが、同時実行とは関係なく、ガベージ コレクションに関する情報しか見つかりません。

マルチスレッド システムでオブジェクトのガベージ コレクションを行うための特定の方法はありますか? それらのアーキテクチャと実装に関する情報はどこにありますか?

0 投票する
1 に答える
128 参照

objective-c - @private はどのように実装されていますか?

@privateObjective-C では、 、 などのインスタンス変数のアクセス制御がどのように実装されているのか興味@protectedがあります。

私は、次のような方法で個別の構造が生成されていると考えていました。

=>の線に沿った何か

しかし、私は本当にわかりません。これが実際にどのように行われたか知っている人はいますか?

0 投票する
6 に答える
5013 参照

compiler-construction - Haskell コンパイラはどのように機能しますか?

Haskell コンパイラが実際にどのように動作するかを説明している論文/ドキュメント/その他のものはどこで入手できますか? GHC のドキュメントをかなり読みましたが、頭が痛くなってやめました。ですから、それを理解するのに博士号を必要とせず、「あなたはすでに知っているはずだ」というスタイルで書かれていないものが望ましいでしょう。非常に長く、理解するのに時間がかかる場合でも問題ありません。

PS: 最も興味深いのは GHC に関するものですが、何でも構いません。

0 投票する
1 に答える
9795 参照

java - Javaインターフェイスは内部でどのように実装されていますか?(vtables?)

C++には多重継承があります。アセンブリレベルでの多重継承の実装は非常に複雑になる可能性がありますが、これが通常どのように行われるかについてはオンラインで適切な説明があります(vtables、ポインター修正、サンクなど)。

Javaには複数の実装継承はありませんが、複数のインターフェース継承があるため、クラスごとに1つのvtableを使用する単純な実装ではそれを実装できないと思います。Javaはどのようにインターフェースを内部的に実装しますか?

C ++とは異なり、JavaはJitでコンパイルされるため、コードの断片が異なれば最適化も異なり、JVMも異なると動作が異なる可能性があることを認識しています。それで、多くのJVMがこれに従ういくつかの一般的な戦略がありますか、または誰かが特定のJVMでの実装を知っていますか?

また、JVMは多くの場合、仮想化を解除してメソッド呼び出しをインライン化します。この場合、vtableまたは同等のものはまったく含まれないため、仮想/インターフェイスメソッド呼び出しを実装する実際のアセンブリシーケンスについて質問するのは意味がないかもしれませんが、ほとんどのJVMはまだいくつかを保持していると思いますすべてを非仮想化できなかった場合に使用するクラスの一般的な表現の一種。この仮定は間違っていますか?この表現はC++vtableのように見えますか?その場合、インターフェイスには個別のvtableがあり、これらはクラスvtableとどのようにリンクされていますか?もしそうなら、C ++のオブジェクトインスタンスのように、オブジェクトインスタンスは(クラス/インターフェイスvtablesへの)複数のvtableポインタを持つことができますか?同じオブジェクトへのクラスタイプとインターフェイスタイプの参照は常に同じバイナリ値を持ちますか、それともポインターの修正が必要なC ++のようにこれらが異なる可能性がありますか?

(参照:この質問はCLRについて同様の質問をします。このmsdnの記事には、今では時代遅れになっているかもしれませんが、良い説明があるようです。Javaに似たものは見つかりませんでした。)

編集:

  • 「JavaクラスArrayListがListインターフェースを実装する」という意味ではなく、「GCCコンパイラが整数加算/関数呼び出しなどをどのように実装するか」という意味で「実装」を意味します。
  • これがJVMバイトコードレベルでどのように機能するかを知っています。知りたいのは、クラスファイルのロードとバイトコードのコンパイルが完了した後にJVMによって生成されるコードとデータ構造の種類です。
0 投票する
3 に答える
10757 参照

matlab - Matlab:動的ベクトルを実装する方法

このような例を参照しています。ベクトルの要素「入力」を分析する関数があります。これらの要素に特別なプロパティがある場合、それらの値をベクター「出力」に格納します。問題は、「出力」に格納する必要がある要素の数がわからないため、そのサイズがわからないことです。私はループを持っています。内部では、インデックスを介してベクトル「入力」を回っています。このベクトルの特別な要素を考慮すると、「入力」の値をキャプチャし、次のような文を介してベクトル「出力」に格納されます。

問題は、事前に「出力」を「宣言」しないとエラーが発生することです。ループに到達する前に output = input として「出力」を「宣言」するのは好きではありません。これは、興味のない入力からの値を保存し、保存したすべての値を削除する方法を考える必要があるためです。私に関係があります。この問題について誰かが私を照らしてくれますか? ありがとうございました。

0 投票する
1 に答える
1151 参照

python - 関数に渡すときに、Python のジェネレーターを囲むかっこを省略できるのはなぜですか?

ジェネレーターを関数の引数として渡すためのさまざまな構文を使用して Python で実験していたところ、これを行っていたにもかかわらず、

これも同様に機能します:

これは Linux 上の Python 2.6.6 でテストされています。ボンネットの下で何が起こっているのですか?それは単なる構文糖ですか?結局のところ、通常、ラップされていないジェネレーターはインタープリターには解読できません。

0 投票する
6 に答える
3385 参照

python - Python:リスト内包の背後にあるメカニズム

inforループコンテキストでリスト内包表記またはキーワードを使用する場合、つまり:

また

  • 背後にあるメカニズムはどのように機能しinますか?
  • 内のどの関数/メソッドをX呼び出しますか?
  • X複数の方法に準拠できる場合、優先順位は何ですか?
  • Xリスト内包表記が速くなるように、効率的に書く方法は?
0 投票する
1 に答える
94 参照

programming-languages - インタプリタ標準ライブラリ

プログラミング言語には、少なくとも部分的に言語自体に実装された標準ライブラリが付属しているのが一般的です。

インタプリタ言語の場合、明らかな実装は、インタプリタの起動時にライブラリソースファイルを読み取ることですが、これは、両方が移動された場合でも、インタプリタがそれらのファイルの場所を確実に認識できるようにするという厄介ですが永続的な問題に遭遇します。 。それらがインタプリタ自体に埋め込まれることができればよりクリーンになるので、実行可能ファイルは1つだけです。

ライブラリのソースファイルをCリテラル文字列に変換するだけで、これを行う簡単な方法を見つけることができますが、見落としている落とし穴やメソッドの改良点があるかどうかについて興味があります。

だから私の質問は、どの既存の解釈された言語がその言語自体のライブラリソースファイルをインタプリタに添付するのかということです。

0 投票する
1 に答える
136 参照

java - Java オブジェクトはどのように構築されますか?

次のようなクラスを作成すると:

クラスを使用する必要がある場合は、クラスのインスタンスを次のように作成するだけです。

システムで実際のオブジェクトがどのように作成されるかを知りたいです。(コアレベルでは、オブジェクトの構造はどうなりますか。)

0 投票する
1 に答える
1039 参照

haskell - Haskell 実装で Unicode 識別子を許可するかどうかはどこで指定されていますか?

識別子に Unicode 文字 (非ラテン語) を使用して、Haskell で教育用コードを書きたかったのです。(これにより、ラテン文字を使用しない英語以外の自然言語の話者にとって、識別子が美しく自然に見えるようになります。) そこで、これを可能にする適切な Haskell 実装を見つけることに着手しました。

しかし、この機能は言語仕様のどこで指定されているのでしょうか? 適合する実装を探すときに、この機能をどのように参照すればよいですか? (実際に Unicode 識別子をサポートすることが知られている Haskell 実装はどれですか?)

ある Haskell 実装では Unicode 識別子を持つ私のコードを受け入れましたが、別の実装では受け入れられなかったことが判明しました。おそらく言語機能スイッチの形で、私のコードのこの要件を形式化する方法があれば、私または他の誰かが私のコードを実行しようとすると、彼の実装が欠落しているかどうかがすぐに明らかになるでしょう.必要な機能であるため、別の機能を探す必要があります。(この機能の wiki ページもあるかもしれません。「Unicode 識別子」では、既存の実装のどれがそれをサポートしているかを一覧表示し、必要な場合にどこに行けばよいかを知ることができます。)

(ところで、私はこの質問に「構文」タグを付けましたが、実際には言語の構文よりも低いレベルの字句解析のレベルの問題であると認識しています。字句解析の機能のタグはここにありますか言語の構文仕様の機能ではなく、言語のレベル?)