21

C++ が 1998 ANSI/ISO C++ を導入して以来、私は C++ についていくように努めてきました。私は新しい概念を吸収し、それらを理解しようとしました。例外処理、テンプレート、名前空間について学びました。新しいキャスト メカニズムについて読み、STL ライブラリを操作しました。

これらのコンセプトはすべて、多くのエネルギーを必要としました。しかし今、新しいC++0x標準を見ていると、C++ の将来について少し心配しています。

事態はますます複雑になっています。この言語はモンスターになりつつあります。

とにかく C++ で日々のハッキングを行っていないので、この言語についていく必要があるかどうかはわかりません。私は主にインタープリター言語またはバイトコード言語を使用します。

では、なぜこの難しい、しかし非常に強力な言語をわざわざ学ばなければならないのでしょうか? ビジネスの 95% は Python などで行うことができます。残りの 5% で、昔ながらの C++ や C を問題なく扱うことができます。

どう思いますか?

4

11 に答える 11

22

誰もがC++のサブセットを使用しています。サーバー側であろうとクライアント側であろうと、C ++でのほとんどすべてのアプリケーションプログラミングでは、そのサブセットは管理可能です。私の意見では、言語のあらゆるニュアンスを完全に把握する必要があるのは、Boost、STL、Lokiなどを実装しているライブラリライターだけです。

しかし、私は絶対にそのタスクに合った言語を使用します。PythonがC++よりも読みやすく、保守しやすく、C ++が提供するものが必要ない場合は、Pythonを使用してください。

于 2009-04-19T12:14:04.983 に答える
21

Bruce Eckel {いわゆる最高のC++ 書籍の 2 冊の著者}が数週間前に C++ についてコメントしたことを聞いてください。

とはいえ、C++ を使用することはほとんどありません。私がそうするとき、それはレガシーコードを調べるか、パフォーマンスが重要なセクションを書くことであり、通常は他のコードから呼び出されるようにできるだけ小さくします (私が好むアプローチは、Python でアプリをすばやく作成し、それをプロファイルし、必要に応じてパフォーマンスを改善することです) Python の ctypes ライブラリを使用して C++ の小さな部分を呼び出すことによって)。

私は C++ 標準委員会のメンバーだったので、これらの決定が下されるのを見てきました。それらはすべて、Java で下された多くの決定よりもはるかに慎重に検討されました。

しかし、人々が正しく指摘しているように、結果として得られた言語は複雑で使用するのが苦痛であり、しばらく離れているとすぐに忘れてしまう奇妙な規則でいっぱいでした。暗記するだけでなく、本を書いている間。

さらに、このスレッドDanny Kalev の C++ に関する予測を読む必要があります。

ただし、C++ の複雑さが増しているため、言語を準公式の方言に分割する圧力が生じます。今日、この傾向はすでに見られます。おそらく今後ますます強まるでしょう。

編集

このディスカッションもご覧ください。

C++ - C++ が複雑になりすぎていると感じている人はいますか?

于 2009-04-19T13:15:18.160 に答える
10

まず、C ++ 0xの多くの機能は、言語を使いやすくすることです。より読みやすいテンプレートコンパイルエラー、より一貫性のある初期化構文、スレッド化のサポート。これがなければ、プラットフォーム固有のライブラリなどに依存する必要があります。

したがって、C ++を使用する場合、C++0xの重要な部分を学習することは管理可能なタスクであると思います。言語を使用するためにすべての新機能を学ぶ必要はないことを忘れないでください。一部の機能は、主にライブラリ実装者の支援として追加されます。たとえば、STLをより効率的に実装できるようにしますが、エンドユーザーによる言語の使用には実際には影響しません。そして、いくつかは非常にまれなケースでのみ本当に必要です。言語のそれらの部分を無視します。

C ++ 0xでの彼らの目標の1つは、使いにくくなるのを避けることです。

しかし、それとは別に、 C ++が必要です?他の言語でコーディングを行う場合、なぜわざわざC ++に追いつくのですか?

于 2009-04-19T12:27:12.160 に答える
8

言語が提供するすべての機能を使用する必要はありません。そこにあるにもかかわらず、Cではsetjmp/longjmpを使用しません。また、Javaコレクションのすべての側面を使用するわけではありません。

新しい機能によってコード配信が改善される(高速または高品質、あるいはその両方)と思われる場合は、それらを使用してください。それ以外の場合は無視してください。

就職の面接をするためだけに、それらすべてが何であるかを大まかに知ることは有用ですが、私の意見では、それらが言語に追加するものの半分は不要です。

Javaに切り替える前に、C ++テンプレートを使用することすらできませんでしたが、それらが何のためにあるのかはわかっていました。

それは常に最新かつ最高のものを学ぶことではありません。ソフトウェア(少なくともあなたの仕事では)は製品の配達に関するものです。十分に熟練している場合は、COBOLまたはFORTRANで実行できます。

于 2009-04-19T12:13:46.357 に答える
5

Bjarne と Herb Sutter を除いて、C++ のすべてを知っている人は誰もいません。あなたが言ったように、それは信じられないほど巨大な言語です。標準全体と特定のコンパイラまたはコンパイラの特定の実装の詳細を取得できると期待することは、正直言って非現実的です。

ただし、C++ を使用するためにすべてを知っている必要はありません。代わりに、あなたとあなたのプロジェクトにとって価値のある C++ のサブセットだけを学んでください。知識を増やし続けることは悪いことではありませんが、C++ コンパイラを作成しているのでなければ、すべてを知る必要はありません。あなたがそれを達成したとしても、一緒に働くすべての人がそうするわけではありません。

于 2009-04-19T15:00:41.277 に答える
5

では、なぜこの難しい、しかし非常に強力な言語をわざわざ学ばなければならないのでしょうか? ビジネスの 95% は python などで行うことができます。残りの 5% で、昔ながらの C++ や C を問題なく扱うことができます。

まあ、ほとんどの場合、あなたはあなた自身の質問に答えます。現時点では、C++ の最先端についていく必要はありません。

しかし、言語は前進し続けます。数年後には、今日では最先端の時間の無駄だと考えられている概念のいくつかが一般的に使用されるようになるでしょう。いつの日か、「普通の C++」を 5% 使用している間に、サンプル コードや共同作業しているコードで、よく知らない構造が使用されていることに気付くかもしれません。その時点で、ネットにアクセスして、新しい「現在の」C++ をブラッシュアップする必要があります。

それは問題になるでしょうか?もちろん違います。あなたはプログラマーです。時間の経過とともに変化する 95% の言語のコンテキストで、最新のプログラミング概念に遅れないようにします。ほとんどの場合、概念については既に十分に理解しており、C++ 構文を使用する必要が生じたときに、その C++ 構文に慣れるだけで済みます。

個人的には、キャリアが Java や別の次世代言語に移行したとしても、C++ についていきたいと思っています。なんで?私が最も興味を持っていること、そしてすべての複雑さと表現力が大好きだからです。しかし、おそらくそれは私の最初の専門用語だったからです。私はそれを私の「母国語」と考えています。

興味がなく、あなたの仕事や将来の仕事に関係がない場合は、気にしないでください。それの何がいけないの?何もない。

于 2009-04-19T17:48:55.303 に答える
3

良い答え。

コンピューターメーカーはバイヤーを求めて競争し、ソフトウェアはディスク容量を求めて競争し、言語はユーザーを求めて競争します。彼らはお互いの特徴を奪おうとすることによってこれを行います。

Fortranがラムダ式で出てくるのを見るまでにどれくらいかかるのだろうか:-)

于 2009-04-19T12:24:48.330 に答える
3

C++0x が C++98 よりも複雑になっている例を 1 つも見つけるのに苦労しています。本当に複雑なことが 2 つあります。

  1. 概念。
  2. メモリーモデル

しかし、最初のものは再び削除されました (ありがたいことに、実装されていない機能の標準化は C++ ではうまくいきませんでした。witness throw 仕様、extern テンプレート、auto_ptr など)。 . これは、Intel & Co がプログラムを破壊して実行速度を速めることによって、外部から誘導されたものです。

残りは、すべての C++ プログラマーが過去数十年にわたって頻繁に直面してきた問題を修正するだけです。

補足として: C# などの言語がデータベース クエリ言語 (LINQ) でパックされ、C++ が肥大化していると非難される様子を見るのは... 面白いと思います。

于 2009-07-31T14:44:01.747 に答える
1

まず、c++0x のコースに参加してみて、その費用を会社に支払ってもらいましょう :) 私たちの脳は、驚くほど大量のがらくた知識に対応できます。ののしり、プログラマーの時間を持つ代わりに、まずプログラムのユーザーから学び、他の人の意見/ノウハウに耳を傾ける必要があります。そうすれば、知識ははるかに速く伝達されます。

于 2009-04-19T12:55:13.047 に答える
0

私の提案は、c ++ 0x(&& FTW)の新しいキーワードを学ぶことですが、lib全体をわざわざ学ぼうとはしません。必要なw/eにはpythonを使用し、アプリにはC#を使用し、強力なことを行う必要がある場合はC ++(0x)を使用します。プロトタイプを作成するときは、stackoverflowとgoogleに新しいコンテナについて尋ねてください。

選択したいくつかの言語を使用する必要はありません。

于 2009-04-19T12:16:04.700 に答える