10

refs、atoms、およびagents を C コードにもたらすライブラリはありますか?

C に付随する構造共有ライブラリもありますか?

4

1 に答える 1

6

私の知る限りではありません。

あったとしても、私見では、Cコードには特に適していません。

  • これらのアプローチは、メモリ管理とガベージコレクションを提供するためにJVMに大きく依存しています。特に、構造の共有は、データ構造の特定のブロックを他に誰が使用しているかを簡単に判断できないことを意味します。したがって、構造コンポーネントへの最後の参照が消えたときに、自動GCでこれをクリアする必要があります。
  • STM構造の有用性は、実際には並行状況にあります。スレッド化のサポートが普及し、プラットフォーム/ライブラリ間で一貫性が高いJVM言語よりも、Cで優れた並行コードを作成することははるかに困難です。
  • 少なくともClojureで使用される方法では、STMコンストラクトは関数型プログラミング言語(つまり、関数が純粋で、通常は高階関数を作成してコーディングし、データが不変である言語)で使用するように設計されています。たとえば、swap!原子を更新するための関数は、それ自体が高階関数です。

十分に決心していれば、Cで機能スタイルのSTMコードを記述できないと言っているわけではありませんが、それは適切ではなく、とにかくLispのようなものを再発明することになるでしょう。Greenspunのプログラミングの10番目のルールを思い出しました。

十分に複雑なCまたはFortranプログラムには、アドホックで非公式に指定された、バグの多い、CommonLispの半分の遅い実装が含まれています。

基本的に、仕事に適したツールを使用してください:-)

于 2013-01-21T04:15:50.140 に答える