0

私は Python プログラマーで、Ruby と PHP も少し知っています。私は Java について何か有意義なことを行うには十分な知識がありません。また、C、C++、またはその他の低レベル言語についてもまったく知りません。「ハードウェアは安いが、コーダーは高いので速度を気にする人はいない」という議論はすべて聞いたことがありますが、ここで議論を起こすつもりはありません。低レベルのプログラミング言語 (C 言語であろうとアセンブリであろうと) のコミュニティについて 2 つのことを理解したいと思います。

  1. それでも使用することを選択した主な理由は何ですか(仕事の要件、速度、デスクトップと Web など) ?
  2. ゲームの後半になっても、時間を取って C++ (金銭的に言えば) などを学習する価値はありますか? それともメリットがありますか?

また、理由を選択するときは、動的型付けと静的型付けの利点/欠点を考慮してください。私は主に Web 用のプログラムを作成していますが、Web しか知らないという事実もあり、そのことを十分には考慮していません。

4

7 に答える 7

4

恥知らずな Fortran プログラマーです。スピードスピードスピード。ああ、私が一緒に仕事をしているすべての科学者は、Fortran にかなり流暢です。しかしその後、私は大規模なクラスターやスーパーコンピューターで計算電磁気学に取り組んでおり、Web アプリケーションが飛び出して鼻を噛んだとしても、それを認識できませんでした。

Fortran を低レベルまたは表現力の低いものとは見なしません。それは、線形代数およびより一般的な数値処理のための DSL だと思います。では、なぜ私は餌を取ってこの質問に答えたのでしょうか?

動的型付け vs 静的型付け ? 静的にしてください。コンパイル時にすべてが結び付けられているため、コンパイラは靴下を最適化して作業できます。

于 2010-03-10T17:36:28.850 に答える
3

Web プログラマーにとって、C/C++ は事実上何の利点もありません。Perl、Ruby、Python などよりも表現力が低く、より多くのコードとメモリ管理の詳細への注意が必要です。残念ながら、その「機能」のために言語を選択することは、そのプラットフォームを選択することに次ぐことがよくあります。C++ は C# ほどクリーンでエレガントではありませんが、そのほとんどは C との互換性によるものです。悲しいことに、特定のことについてはより優れた言語がありますが、ほとんどはコンパイルされておらず、広くサポートされていません。

顧客がダウンロードまたは CD で受け取る商用製品の開発を計画している場合、C/C++ は、知的財産の保護 (リバース エンジニアリングが困難) と小さなランタイム フットプリント、および古いプラットフォームを対象とする機能を提供します。 Windows XPのように。

C/C++ を学ぶのに遅すぎるということはありません。これらの言語は C/C++ で実装されているため、C/C++ はすべての高レベル言語が存在する限り存在します。いつの日か私たち全員が Python に移行し、C/C++ が廃止されるわけではありません。高レベルのコンパイルされていない言語は自己巻き上げではないため、C++ なしでは存在できません。

C++は、言語、API、ツールキット、ドライバー、IDE などの高レベルのものを実装する場合に使用するツールです。ただし、内部 GUI アプリまたはウェブアプリ。

仕事のためのツールを学ぶだけです。仕事が変わった場合、または仕事を変えたい場合は、C++ を学習して、コンピューター サイエンスの世界の反対側、つまり CPU と現在 Web アプリを作成しているものとの間の側面を確認することをお勧めします。

于 2010-03-10T17:47:43.917 に答える
2
  1. ここでの大きな 3 つの理由は、パフォーマンス、レガシー システムのサポート、組み込み開発であると思います。

  2. 非常に主観的なので、どんな答えもほとんど役に立たなくなります。

于 2010-03-10T17:39:03.087 に答える
1

Python、Ruby、PHP 自体が書かれていないのはなぜですか?

ミッション クリティカルなアプリケーションには、可能な限り最高のパフォーマンスとアルゴリズムが必要であり、メタプログラミングなどは必要ありません。C++ にはいくつかの優れたアイデアとライブラリがあり、それらは現代の言語で見つけたもので、良い場合もあれば悪い場合もあります (C++ のテンプレートと Java のジェネリックの能力を比較してください)。低レベル言語は、コンピューター、オペレーティング システム、またはネットワークの低レベルの抽象化についてより多くのことを学ばせてくれます。

静的はプログラミングを制限し、多くの場合、型を書き出させますが、コンパイラによって自動的に証明され、ツールのサポートを得ることができる方法で意図をより適切に表現することもできます。ダイナミックはハンズフリーを提供し、より多くのことをより簡単に行うことができますが、より良いテストを行う必要があります。

于 2010-03-10T17:48:21.620 に答える
1

C++私が行っている数値計算では、ストレートに書いたほうが、たとえばストレートの Python を使用するよりも高速です。確かに、私は自分の C++ ライブラリをより高水準の言語にインターフェースすることができます (私はそうしています) が、私の仕事のほとんどは低水準の数値側で行われているので、あまり多くを得ることはできません。

また、特に科学計算の多くのライブラリが にあることを考慮してくださいまたはからそれらへのリンクは、ラッパーとインターフェースをすべて自分で作成するよりFORTRANもはるかに高速です(特に、それをやり遂げたい場合)。CC++C++

低水準言語を学ぶことで何かを得られるどうかは、問題のドメインに大きく依存します。

于 2010-03-10T17:38:19.280 に答える
1

低レベル言語にはいくつかの正当な理由があります。

まず、パフォーマンスが重要なアプリケーションがたくさんあります。私が取り組んでいる主なアプリケーションは、そのままでは十分に遅く (多くのことを実行します)、Python では使用できません。

次に、それほど大きくないスタンドアロンの実行可能ファイルを必要とするアプリケーションがあります。

第 3 に、C および C++ には膨大な量のレガシー コードがあり、すぐになくなることはありません。

第 4 に、オペレーティング システムは通常、C や C++、または同様の言語で記述され、それらの言語で API を公開します。なんらかの理由で OS に慣れる必要がある場合は、OS 言語を使用する方がよいでしょう。

動的型付けは、アプリケーションを迅速に起動して実行するのに非常に優れており、Lisp のバックグラウンドにより、静的型付けは通常は時期尚早の最適化であると信じるようになりました。しかし、多くの人は、大規模なプロジェクトで正確性を確保するには静的型付けの方がはるかに優れており、大規模なプロジェクトには C と C++ が適していると考えています。

2 番目の質問ですが、あなたが将来何をしたいのかわかりません。そのため、C++ を学ぶ価値があるかどうかわかりません。専門能力開発のために、C または類似の言語を含むさまざまな言語を学習することを強くお勧めします。SOには、どの言語を学ぶべきかについての他の質問があります。

于 2010-03-10T17:44:33.607 に答える
0

ここであなたを誤解しているかもしれませんが、C++ はあらゆる種類のプロジェクトに適した言語であるという印象を受けているようです。そうではありません。クロスカントリーのロードトリップにLiebherr トラックを使用することはありません。存在するすべての一般的な言語は、状況によってはうまく機能するため、そのようになりました。Web アプリケーションの作成に C++ が使用されていた時期がありましたが、生産とパフォーマンスのトレードオフのためにすぐに Perl スクリプトに取って代わられました。あなたの最初の質問に答えて、主に人々がまだそれを使用しています。特定の状況では仕事に最適なツールだからです。

あなたがそれを学ぶべきかどうかに関しては、時間と意欲があれば、それを学ぶべきだと私は言います. どのプロジェクトでも C++ が適切なツールではない場合でも、C++ で必要な概念を適切に理解することで、すべての言語で優れた開発者になることができます。

于 2010-03-10T17:54:20.970 に答える