1

今日の私のややあいまいな質問のもう 1 つ、申し訳ありません。

現在、私は、Twitter からデータを取得する「独自のロール」RESTful クライアントを備えた、まともなソフトウェアをいくつか作成しました。このデータは、Open FrameWorks (c++ で動作するフレームワーク) を使用して多数のパーティクル システムで視覚化されます。

これに対する私の計画は、私の VPS でソフトウェアを無期限に実行し、ユーザーがきれいな粒子などを探索できるようにするある種のフロント エンド GUI を構築することでした。私が使用している JSON ライブラリ、C/C++、OpenFrameworks、おかしな Xcode4 の間で、あまりにも多くの SIGBIRT および GDB エラーを生成してしまい、対処することができませんでした。私はそれらを修正するために仮想世界の端に行き、何度も何度も書き直しました。openframeworks の draw circle メソッドを SIGBIRT することさえできました。

(TL;DR はここから始まります) とにかく、私はゼロから始めて、数学を処理し、適切な粒子のセットを爆破し、長期間にわたって非常にうまく実行できる強力な言語を探しています。今、私は Haskell について考えています。何かアイデアはありますか?

よろしくお願いします!

4

2 に答える 2

5

Haskell(またはより具体的にはGHC)の数値処理速度はC ++の速度に近づいていますが、少し遅れています。ただし、それは確かにひどいことではなく、並列処理におけるHaskellの利点が重要になる可能性があります。つまり、最初にストレートHaskellで記述した場合、現在または将来、並行して実行するようにリファクタリングするのが簡単になる可能性が高くなります。これはC++には当てはまりません。

'vector'パッケージ(Hackage上)は、数値計算に適した配列に適しています。ある種のアプローチが必要な場合に備えて、可変配列をサポートします。ただし、最先端を行く準備ができていて、アルゴリズムを並列化できる場合は、「repa」パッケージを確認することをお勧めします。GPUでの極端なパフォーマンスについては、「Accelerate」を確認してください。動作しますが、まだ実験的なものとして分類されています)。

あなたが言及するクラッシュは、問題が少し複雑であることを示しているように聞こえます。Haskellが得意とするのは、...まあ、何でもの複雑さを管理することです。したがって、問題が複雑な場合、Haskellは非常に役立ちます。

Haskellの外部関数インターフェースはうまく設計されていますが、HaskellとC++の間にC接着剤を書く必要があります。だから、それはあなたの数を計算するための別のオプションです。

Webインターフェースについては、非常に活発な開発が行われており、RESTfulを実行していると宣伝している「yesod」を見てください。

于 2011-09-11T21:31:09.043 に答える
2

私の知る限り、数値処理速度は Haskell の強みではありません。これは非常に抽象的な言語であり、「金属」とはほど遠いものです。数値処理のコンテキストにおけるその強みは、そのセマンティクスの「数学性」にあります。Haskell コードは、多くの場合、数学的な証明のように読み取れ、その概念の多くは、数学のさまざまな分野から借用されています。

従来型の数値計算では、複雑さを管理するための高レベルのプログラミング構造を提供しながら、ハードウェアの近くにとどまり、マシン レベルでタイトなループを最適化できるため、C++ がおそらく最良の選択です。

OTOH、重労働用のライブラリがあり、さまざまな部分を連携させるために接着剤を書くだけでよい場合は、最も快適なものを使用してください-python、C#、Java、haskell、C ++ 、... -すべてのライブラリのバインディングがある限り、問題ありません。ライブラリがない場合は、パフォーマンスに重要な部分を C で記述し、それらをお気に入りの高級言語に取り込むことも検討できます。これは C++ では簡単ですが、python や haskell では少し難しく、かなり面倒です。 Javaでは不便です。

于 2011-09-11T14:04:47.733 に答える