私は、ある時点で言語を設計/構築しようとしているのですが、そのメリット、デメリット、 NETフレームワーク/ CLR?メリット、デメリット、そして難しい言語を書くために言語を書くこと。
6
A
答えて
21
最も難しい部分は、効果的なプログラミング言語を設計することです。多くの人が仕事全体に専念しています。ここでは、言語設計と一般的な解析の質問について多くの質問がありましたので、CLRを対象とした側面について具体的に取り上げます。バイナリ形式で
利点
- 生成バイトコード
System.Reflection.Emit
名前空間および.NET 4.0で驚くばかりの新しいSystem.Linq.Expressions
能力を使用して非常に簡単です。この設定は、CLRを目標とする私の個人的な要望の主な動機の1つです。 - あなたのコードは、CLRのJITとメモリマネージャに組み込まれている多くの最適化の恩恵を受けるでしょう。
- 一般に、CLRをターゲットに設定して独自のネイティブコードを作成する場合は、短い時間で言語用のコンパイラを構築できます。
デメリット
- それが唯一の.NETフレームワークが稼働プラットフォーム上で実行されます。 P/Invokeコールを避ける場合、Monoプロジェクトの助けを借りて、これは問題ではありません。
- 言語の意味構造を、CIL命令で表現可能な形式とCLIオブジェクトモデルにする必要があります。手続き型、強く型付けされた、オプションでオブジェクト指向言語の場合、これはむしろ単純です。機能型または動的型言語の場合、これはかなり難しいことですが、それらの機能が必要な場合はDLRから助けを得ることができます。
- 一般に、機械固有の機能には簡単にアクセスできないため、高性能/ベクトル化された科学計算を対象とする言語では、現在の実装でのパフォーマンス上の問題が発生する可能性があります。 Monoはこの問題に積極的に取り組んでいますが、Monoや.NET Frameworkでは、これを「確立された技術」として位置付けていません。
難し(言語およびコンパイラのフロントエンドを数えない)
- 最も「面白い」の側面は、CLRの制約の下であなたの言語のセマンティック構築物を発現するあなたの方法をレイアウトされます。
- ここであまりにも多くのことを言う必要はありません。他のターゲットと比較して、CLRをターゲットにするのは簡単です。
概要
CLIは、新しい言語の実装で働く人々のための素晴らしい選択肢です。これは、共通のコンパイラのバックエンドを意識し、言語そのものの意味に焦点を当てることを可能にします。私はそうではないかもしれない誰かが新しい言語を作成することをお勧めしますが、あなたが決めた場合、CLIはあなたの旅の良い友達になります。
+0
うわーは良い答えです! – RCIX
関連する問題
- 1. C言語の文をVHDLに書く
- 2. ATI GPUコードを書くための言語とコンパイラは?
- 3. Tesseractの言語ファイルを書く
- 4. プログラミング言語のインタプリタを書く
- 5. Android用のアプリを書くための簡単な言語は?
- 6. テーマと言語リソース辞書
- 7. 辞書とドット言語
- 8. OpenGL Shader言語を使ってシンプルなシェーダを書く
- 9. いくつかのスクリプト言語を使ってCプラグインを書く
- 10. C言語でpcreに適切なパターンを書くには
- 11. 言語を変更するためのPHPでコードを書く方法
- 12. OS言語とは異なるデフォルト言語を使用しているときにローカライズが正しくない
- 13. 印刷用の軽量文書記述言語を探してください
- 14. C言語でhdfsにファイルを書く(libhdfs)
- 15. 非常に簡単なインタプリタをC言語で書く#
- 16. Python風の字下げ文法で言語を書くには?
- 17. 言語検出を行うための辞書は複数の言語でどこにありますか?
- 18. javascriptの言語の辞書
- 19. 次の言語のための文脈自由文法を書く
- 20. notepad ++のプラグインを別の言語で書く
- 21. ハードウェアから低レベルの言語を書く
- 22. 基本的なtracerouteスクリプトをC言語で書く
- 23. Plpgsql言語を使用して再帰的なテールを書くにはどうしたらいいですか?
- 24. その言語の言語用のコンパイラはどうやって書いていますか?
- 25. PHPで書かれた言語パーサーライブラリ
- 26. 言語の厳密なスーパーセットで書かれたプログラムは多言語としてカウントされますか?
- 27. C++スクリプト言語を書くときにクラスの型を扱う方法
- 28. Ruby + Regexを使って、内部の自然言語のDSLを書くには?
- 29. C言語の言語(llvm用)のための良いASTデザイン
- 30. read-eval-printループ(REPL)をいくつかの言語のため
これは非常に難しい注文です! – womp