問題タブ [compiler-construction]
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 のプロダクション コードからデバッグ ステートメントを削除する方法
コンパイラは、デバッグ目的 (ロギングなど) に使用されるステートメントを製品コードから削除できますか? デバッグ ステートメントは、おそらく注釈を使用して、何らかの方法でマークする必要があります。
プロパティを設定 (debug = true) し、デバッグ ステートメントごとに確認するのは簡単ですが、これによりパフォーマンスが低下する可能性があります。コンパイラが単純にデバッグ ステートメントを消去してくれるとよいでしょう。
compiler-construction - パーサー、インタープリター、およびコンパイラーに関する学習リソース
私はしばらくの間(表面上は学習体験のために)自分の言語を書くことで遊んでみたいと思っていたので、パーサー、インタープリター、コンパイラーの構築に比較的基礎を置く必要があります。それで:
- パーサー、インタープリター、およびコンパイラーの構築に関する優れたリソースを知っている人はいますか?
編集:私はLex、Yacc、Bisonなどのコンパイラコンパイラ/パーサコンパイラを探していません...
c++ - C ++プラグインシステムにとって何が安全ですか?
C ++のプラグインシステムは、ABIが適切に定義されておらず、各コンパイラ(またはそのバージョン)が独自のルールに従っているため、困難です。ただし、Windows上のCOMは、さまざまなコンパイラを使用するプログラマーが単純なインターフェイスを使用してホストアプリケーションのプラグインを作成できる最小限のプラグインシステムを作成できることを示しています。
実用的にして、この点ではあまり役に立たないC++標準を少し脇に置いておきましょう。C ++プラグインをサポートするWindowsおよびMac(およびオプションでLinux)用のアプリを作成したい場合、およびプラグインの作成者に適度に多くのコンパイラー(たとえば、2年未満のバージョンのVisual C ++)を提供したい場合、GCCまたはIntelのC ++コンパイラ)、C ++のどの機能を信頼できますか?
もちろん、プラグインは特定のプラットフォーム用に作成されると思います。
私の頭から離れて、ここに私が考えることができるいくつかのC ++機能があります、そして私が思うのは答えです:
- vtableレイアウト、抽象クラスを介してオブジェクトを使用するには?(はい)
- 組み込み型、ポインタ?(はい)
- 構造体、組合?(はい)
- 例外?(いいえ)
- extern "C"関数?(はい)
- 組み込みパラメーター型を持つstdcall非外部「C」関数?(はい)
- 非stdcall非extern「C」関数とユーザー定義のパラメータータイプ?(いいえ)
その分野での経験を共有していただければ幸いです。C ++プラグインシステムを備えた適度に成功したアプリを知っているなら、それもクールです。
カール
java - 非 Java ソースを Java ソースに変換するためのツール
Java 以外のソース コードを Java ソースに自動的に変換するための優れたツールはありますか?
私は完璧なものを期待しているわけではありません。
スライド式の難易度があると思います。C# は比較的簡単なはずです (すべてのライブラリを無視する限り)。(よく書かれています) C++ はそれほど悪くありません。C では少し OO を作成する必要があります。(静的型の) 関数型言語は理解しやすいかもしれません。動的オブジェクト指向言語では、非ローカル分析が必要になる場合があります。
c++ - "n * 3" と "n+(n*2)" のどちらがより高速なコードにコンパイルされますか?
"ans = n * 3" または "ans = n+(n*2)" のどちらが高速なコードにコンパイルされますか?
n が int または long のいずれかであり、最新の Win32 Intel ボックスで実行されていると仮定します。
逆参照が含まれている場合、これは異なるでしょうか。つまり、どちらが高速でしょうか?
または
それとも、最適化コンパイラがいずれにしてもこれを説明する可能性が高いため、心配する必要はありませんか?
java - .exe ファイルを生成するための Java コンパイラ オプション
Windows で実行する Java アプリケーションの「exe」ファイルを生成するには、どのコンパイラ (gcj 4.x を使用しています) オプションを使用すればよいですか?
.net - (主に) 静的言語のコンパイルに DLR を使用する
私は .NET をターゲットとするコンパイラを構築しており、以前に CIL を直接生成したことがありますが、DLR ツリーを生成することで、作業がかなり楽になります。私はいくつかの動的機能、つまりランタイム関数の作成とダックタイピングをサポートしていますが、コードの大部分は完全に静的です。
以上の説明がありましたので、以下の質問をさせていただきます。
- MSDN ブログの小さな例以外で、DLR は静的コンパイルに使用されていますか?
- もしそうなら、どのようなパフォーマンスが達成されましたか?
- そうでない場合、これを根本的に妨げているものはありますか?
- DLR を使用するか、IL を直接発行するよりも優れたコード生成メカニズムはありますか?
これについての洞察、またはブログ/コード/トークへの参照は大歓迎です。
c - C (または任意の) コンパイラの決定論的パフォーマンス
最近のプロジェクトに取り組んでいるときに、顧客の QA 担当者が訪ねてきて、以前はあまり考えていなかった質問をしてきました。
使用しているコンパイラが C コードの機能と正確に一致するマシン コードを生成し、コンパイラが完全に決定論的であることをどのように確認しますか?
この質問に対して、私は常にコンパイラーを当然のことと思っていたので、まったく答えられませんでした。コードを取り込み、マシンコードを吐き出します。コンパイラが要求していない機能を実際に追加していないことをテストするにはどうすればよいですか? または、私が期待するものとはわずかに異なる方法でコードを実装するさらに危険なことはありますか?
これはおそらくすべての人にとって問題ではないことを認識しており、実際、答えは...「あなたはバレルを超えているので、それに対処する」だけかもしれません。ただし、組み込み環境で作業する場合は、コンパイラを暗黙のうちに信頼します。自分が正しいことを自分自身と QA に証明するにはどうすればよいですか?
compiler-construction - 柔軟なコンパイラ パイプライン定義
.NET 用のコンパイラ フレームワークを開発しており、パイプラインを柔軟に定義する方法が必要です。次のオプションを検討しました。
- WWF
- カスタム XML パイプラインの説明
- コード内のカスタム パイプライン記述 (Nemerle のマクロを使用して構文を定義)
- その他のコードベースの説明
要件:
- .NET の新しいバージョン (3 以降) の機能のみに依存してはなりません。これは、クロスプラットフォームであり、マネージド カーネル上で使用されることを意図しているためです。つまり、.NET 機能が半限定的です。
- 特定のコマンド ライン オプションが特定の要素と順序に対応するように指定できるように、条件付きパイプラインの構築を許可する必要があります。
WWF は便利ですが、最初の要件を満たしていません。他のものは機能しますが、関連する作業のために最適とは言えません。
これらの目標をほとんどまたはまったく変更せずに満たすソリューションを知っている人はいますか?