-1

私は主にVOIPプロトコルに関連するアプリケーションドメインで多くのc++プロジェクトに携わってきました。ここで、L3に移動する必要があります。L2プロトコル開発プロジェクトでは、「C」がL2 / L3/L4開発者に最適な言語であることがわかりました。

今、私はデバイスファームウェア関連のアプリケーションを期待しているのだろうか、なぜプロトコルが石器時代の言語を使用して開発されているのか疑問に思っています。なぜpplはOOPS技術の恩恵を受けないのですか?C ++に切り替えるように説得しようとすると、賢明でしょうか。チームで作業している開発者のほとんどはCの専門家であり、C++に慣れていません。

4

2 に答える 2

5

C を使い続ける理由はいくつかあります。

  1. 既存の C プロジェクトがあります。それらを C++ に変換する費用は誰が負担しますか?
  2. (高品質の) C++ コンパイラは、すべてのプラットフォームで利用できるわけではありません。
  3. 心理的な理由。オブジェクトを値渡しして返すと、一時オブジェクトが左右に作成されます。これは、小規模なシステムでは適切ではありません。参照の受け渡しによってこの問題が完全に解決されることを、人々は本当に理解していません。他にも同様の問題があります。
  4. そして最後に。Cの何が問題なのですか?できます!(壊れていないものを修正しないでください)。

C++ で C と同じパフォーマンスのコードを作成することは可能ですが、これにはより深い理解、トレーニング、コード管理の規律が必要です。一般的な認識は、これらの欠陥は避けられないということです。

于 2012-07-06T05:31:51.373 に答える
3

C を単なる「石器時代の言語」と考えると、人々が C を使い続ける理由を誤解していると思います。私は C と C++ の両方が好きで、使用しています。私は、さまざまな理由とさまざまな種類の問題で、両方が好きです。

C 言語は、(ほぼ) 完全であり、非常に理解しやすいコンピューターのモデルを提示します。驚くことはほとんどありません。C++ は非常に複雑なモデルを提示し、プログラマーは厄介な驚きを避けるために多くのニュアンスを理解する必要があります。C++ コンパイラは、多くのことを自動的に行います (コンストラクタ、デストラクタ、スタックの巻き戻しなどの呼び出し)。通常はこれで問題ありませんが、バグの追跡を妨げる場合があります。一般に、C と C++ の両方を使用して自分の足を撃つことは非常に簡単ですが、C の方が単純な言語モデルであるという理由だけで、結果として得られる足の手術は C の方がはるかに簡単であることがわかります。

コンピュータの C モデルは、可搬性を保ちながら、可能な限りアセンブリに近いものです。この言語は自動的にはほとんど何もせず、あらゆる種類のクレイジーなメモリ操作を可能にします。これにより、安全でないプログラミングが可能になりますが、環境で非常に最適化されたプログラミングが可能になり、驚きはほとんどありません。C では、コード行が何を行うかを正確に伝えるのは非常に簡単です。これは、コンパイラが一時オブジェクトを作成および破棄できる C++ には当てはまりません。自動デストラクタが大量のサイクルを消費していることを明らかにするためにプロファイリングが必要な C++ コードがありました。これは、コード行に驚きがほとんどない C では決して起こりません。これは、以前ほど問題ではなくなりました。C++ コンパイラは、一時変数の多くを最適化するのに非常に優れています。まだまだ話題になるかもしれませんが、

最後に、C++ で記述されたコードはコンパイルに時間がかかることがよくあります。通常、犯人はテンプレートですが、テンプレートを削除すると、C++ コードが C に似たものになることがよくあります。そして、これが生産性にどれほど影響するかは、いくら誇張してもしすぎることはありません。デバッグ、修正、再コンパイル、テストのサイクルがコンパイル時間によって制限されると、生産性が低下します。はい、私はプリコンパイル済みヘッダーを知っており、気に入っていますが、機能はそれほど多くありません。

私が反 C++ であるという印象を受けないでください。私はその言語が好きで、使用しています。クラス、スマート ポインター、std::vector、std::string などがあると便利です。しかし、C が生きていて活躍しているのには理由があります。

別の視点、そして断固として C++ に反対する視点については、少なくともLinus Torvald のC++ に関する視点をざっと目を通しておく必要があります。彼の議論は、たとえあなたが同意しなくても、考える価値があります。

于 2012-07-06T06:23:45.417 に答える