2

組み込みCは、他の言語とともにマイクロコントローラーに使用されていることを私は知っています。しかし、コントロールがPCからのものである場合は、2つの候補(javaとc ++)があります。

Javaはシンプルで簡単で、スレッドやGUIに関しては開発者にとっても使いやすいですが、もちろんC ++の方がはるかに優れたパフォーマンスです(コンピューターの速度が向上し、パフォーマンスは優れたアルゴリズムに依存します)が、コンパイルmakefile、共有ライブラリ、クロスコンパイル他の重要な問題に取り組む必要があるときに、技術を気にするのに多くの時間を浪費します。

しかし、それでも私は、Javaがサポートしておらず、使用clone()またはコピーを強制するConst参照のようなものに直面しました。それが配列になると、それは巨大な混乱でした。

注:パターン認識には、逆運動学とおそらくニューラルネットワークを使用します。これには大量の計算が必要です。しかし、私が言ったように、私はプロジェクトのライフサイクル全体(開発の速度、パフォーマンス、使いやすさ、迅速な展開)にも関心があります

私は言語間を行き来しており、長期的な学習プロセスを計画しているので、間違った言語でそれを無駄にしたくない、または(質問せずに)言いましょう。助けてください。この質問が主観的なものと見なされないことを願っています。しかし、参照。

乾杯

4

6 に答える 6

4

なぜCを排除したのですか?

なぜJavaのパフォーマンスはC++よりも悪いと思いますか?いくつかのものはc++と同じくらい優れており、さまざまなプラットフォームでJavaプログラムを簡単に使用できます。

あなたが快適で、最も経験のある言語を選んで、それを使ってください。

于 2010-11-19T13:48:21.617 に答える
3

最初はパフォーマンスについてあまり心配しません。快適に感じる言語でコードを記述し、必要に応じてリファクタリングします。

Javaとc/c ++の間のパフォーマンスのギャップは、それがあったものにほど遠いですが、必要に応じて、いつでもJNIのようなものを使用してc /c++を呼び出すことができます...

于 2010-11-19T13:48:30.173 に答える
3

個人的にはC++に傾倒します。Javaにはガベージコレクターがあり、アプリをランダムにスリープ状態にすることができます。C ++では、自分でゴミを収集する必要があります。これにより、ゴミの発生量を減らすことができます。また、C ++ではマクロが許可されています。これはJava-nistasによって悪いこととして宣言されていますが、コードを短縮してDSLのようにする方法として使用しています。コードをDSLのようにすることが、開発作業を短縮し、バグの発生を最小限に抑える主な方法です。

JavaがC++やCよりも本質的に遅いとは思いません。IMEの遅さ(および大きさ)は、サイクルのスピンの程度ではなく、従うことを推奨する設計手法に起因します。コレクションクラスのように、それらが提供する優れたものは、通常、適切に構築されていますが、非常に便利であるため、使いすぎを防ぐことはできません。

IME、優れたパフォーマンスの秘訣は、データ構造を可能な限り少なくし(つまり、ガベージを最小限に抑え)、データ構造を可能な限り正規化することです。そうすることで、メッセージウェーブを介して一貫性を保つ必要性を最小限に抑えることができます。データを正規化しないようにする必要がある限り、通知を通じて常に一貫性を保つようにするよりも、定期的にパッチを適用する一時的な不整合を許容できる方がよいでしょう(オブジェクト指向言語ではそうするように勧められています)。注意深く監視しない限り、パフォーマンスのバグを非常に簡単に導入できます。

これらのポイントのいくつかの例を次に示します。

于 2010-11-19T15:43:00.343 に答える
2

状況によっては、JavaはC++よりも迅速にデプロイできません。これは主に次のように要約されます。テストベッド内で本番環境と同じ環境が保証されていますか?C ++に最近追加されたものはすべて、C ++言語にまだ慣れていない場合を除いて、開発者にとってJavaの方が簡単であることを示唆する理由はほとんどありません。

それはさておき、パフォーマンスの問題があります。リアルタイムシステムでない限り、まだ言語を排除する理由はありません。Javaをインテリジェントにコーディングする場合(たとえば、オブジェクトのコピーや、最もよく使用されるセクションでのガベージの作成を回避するために最善を尽くします)、コンピューティングバウンドプロセスのパフォーマンスの違いはそれほど顕著ではありません。

とにかく、あなたは実際の使用ではなく、これら2つの言語の教科書の定義に焦点を合わせすぎていると思います。どちらか一方を選択するという最優先の理由は実際にはありません。

于 2010-11-19T13:55:28.913 に答える
0

Javaはもう少し移植性がありますが、私が知る限り、このようなものの唯一の本当の要因は個人的な好みです。

于 2010-11-19T13:57:24.590 に答える
0

あなたがあなたの問題をより詳細に説明するならば、それは本当に助けになるでしょう。

あなたはIKを喜んで使用します。これは、ロボットアームの操作を示唆している可能性があります。それが言っていないのはあなたのリアルタイムの要件です。クラスAの生産ラインで行われている場合、ガベージコレクションされた言語で逃げるのは難しいでしょう。

Javaは素晴らしいです。非常に成熟したNNライブラリ(Neuroph、Encog)がいくつかあり、コーディング時間を大幅に節約できます。IKライブラリについては知りませんが、少なくとも役立つ行列操作ライブラリがあると確信しています。

Javaのガベージコレクションはどんどん良くなっています。最新のもの(G1)は他の何よりもはるかに優れていますが、それでも最高のものを得ることができるのはソフトリアルタイムです。したがって、一時停止のない実行は期待できません。

一方、ロボット工学や人工知能用のMatlabツールボックスなどの専用環境も検討することをお勧めします。それで最速のプロトタイプができると思います。

それが本番環境で行われている場合は、CまたはC++でかなり立ち往生しています。

于 2010-11-19T13:58:49.943 に答える