GCed言語のインタープリターをGCed言語で実装しているとしましょう。デザインにかなり注意を払っている限り、ガベージコレクションは無料で入手できるようです。
これは一般的にどのように行われるのですか?これを行わない正当な理由はありますか?
GCed言語のインタープリターをGCed言語で実装しているとしましょう。デザインにかなり注意を払っている限り、ガベージコレクションは無料で入手できるようです。
これは一般的にどのように行われるのですか?これを行わない正当な理由はありますか?
言語と実行時間は2つの異なるものです。それらは実際には私見に関連していません。
したがって、既存のランタイムがすでにGCを提供している場合は、別のGCでランタイムを拡張する十分な理由が必要です。OSでのメモリ割り当てが遅くて高価だった古き良き時代には、アプリは独自のヒープマネージャーをもたらし、データの小さなチャンクをより効率的に処理できるようになりました。これは、既存のランタイム(またはOS)に別のメモリ管理を追加するための1つの読み物でした。ただし、Javaや.NETなどについて話している場合は、手元にあるほとんどのタスクに対して十分に効率的である必要があります。
ただし、メモリおよびオブジェクト管理タスク(およびその他)用の適切なインターフェイス/ APIを作成して、言語(「ゲスト」)ランタイムを後で別のホストランタイムに実装できるようにすることができます。
通訳者にとっては、特に最初は、ホストGCであるIMHOを使用しても問題はありません。いつものように、彼らの目標は何かを機能させることであり、それを正しく機能させ、そしてそれを速くすることです。これは、目標が小さな言語であるドメイン固有言語(DSL)に特に当てはまります。これらの場合、完全なGCを実装するのはやり過ぎでしょう。