または、非機能的/非メモリ管理言語での高度に機能的なスタイルですら。中間ゴミのような問題に対処するためにどのような技術がありますか?割り当てられたメモリを遅延化/サンクした後のクリーンアップ。パフォーマンス(割り当てを解除するために進行状況を追跡する必要がある場合、不変変数間でリソースを簡単に共有できないため(スマートポインター?)
2 に答える
2
線形または一意性タイプのプログラミング言語に興味があるかもしれません。これらはリソース(特にメモリ)を管理できます。最近の例:ATSとLinearML。
「リージョンベースのメモリ管理」(例:Cyclone)の試みはありましたが、まだ解除されていません。リージョンでは(以前の)メモリの再利用も可能ですが、十分ではありません(例:プログラムがあります)。これは、リージョンベースのメモリ管理で実行すると、許容できないパフォーマンスを示します)。2つのスキームが混在している可能性があると思います。
質問に戻りますが、一部のATSプログラムは、ガベージコレクションなしで実行できます。(そのようなプログラムがSMLのような「機能的」スタイルで書かれているとは言いませんが、命令型と一次機能型の組み合わせで書かれています。)
于 2011-05-20T17:23:03.573 に答える
1
私が考えることができる唯一の関連することは、Mltonが地域分析でガベージコレクションの重要な部分をどのように排除しているかということです。理論的には、管理不能で注釈のないポインタリークをエラーとして扱うコンパイラを実装することが可能であるはずです。そうすれば、完全に手動のメモリ管理設定で多くの関数型プログラミング手法を使用できるようになります。
于 2011-05-20T10:09:22.680 に答える