インターネットから http 経由でいくつかの csv ファイルをダウンロードし、解析して、より便利な形式に変換する必要があります。最終的には、C++ プログラムがデータを消費します。数年前、私は Perl の本を引っ張り出してきて、ダウンロードと解析を行う Perl スクリプトを書き始めました。しかし今では、Boost と Qt を使用することで、ダウンロード、解析、および C++ での GUI フロント エンドへの投入を、ほとんど手間をかけずに行うことができます。最後に Perl/Python を書いたのは約 6 か月前です。Perl/Python でそれを行うにはおそらくもっと時間がかかり、私の Perl/Python コードはくだらないものになるでしょう。持っている道具がハンマーだけだとすると、すべてが釘に見える?それとも時代が変わり、Perl や Python などのスクリプト言語が伝統的に支配していた分野で C++ が生産的になる可能性があるのでしょうか?
9 に答える
他の人が通常、解決策をどのように期待するかが問題になるでしょうか? C++ で作業をより適切かつ迅速に行うことができる場合は、C++ で行います。話は終わりです。
あなたの例では、C++ を使用すると生産性が向上し、問題をより簡単に解決できるようになります。
しかし、一般的には、この種のタスクに python/perl を使用する人が増えると予想しています。
なぜだめですか?
ライブラリ/機能が不足しているためにコードがハックになる場合は、C++ が最適ではない可能性があります。頻繁に変更する必要がある場合は、C++ が最適ではない可能性があります。Perl/Python を知っている他の人がそれを維持する場合、C++ は最善ではないかもしれません。等
GUIは本当に必要ですか?スピードは必要ですか?C++ をスクリプト言語にするために変更されたことはありませんが、だからといって C++ を使用してはいけないというわけではありません。
このような常識的なテストに合格した場合、なぜそうではないのですか?
家を建てなければならないなら、ハンマーで十分です。しかし、空気圧フレーミング釘打機を使用して家を建てる方がはるかに簡単です。
C++ は優れた言語であり、スクリプト言語が支配的な領域で生産性を高めることができますが、すべてが同じであれば、テキストの解析に perl/python を使用すると生産性が向上します。
C/C++ と python/perl の生産性の問題は、私には無関係のようです。Qt、Boost、およびその他の既製のツールセットを使用してパーサーを作成する場合は、それを実行してください。解析の速度が問題であるかどうかを実際に指定していませんでしたが、問題があったとしても、あなたのケースでは問題になるでしょうか.
言語 X の方が簡単かもしれないと思っても、その言語について何か新しいことを学びたいのであれば、言語 Y で書いてください。とても簡単な作業のように思えるので、書きたいように書くだけです。
また、将来の使用についても考慮する必要があります。このプログラムを何らかの方法で強化および拡張する必要がある場合は、特定の言語の選択が必要になる場合があります。
C++ の方が生産性が高い場合は、必ず C++ を使用してください。他の言語を学ぶのは良い考えですが、物事を成し遂げるために、自分が知っていることを使う必要がある場合もあります。
ところで、おそらくこれは既にご存じでしょうが、Boost.Tokenizerライブラリには、エスケープされたリスト セパレーターを介した CSV 解析機能が組み込まれています。
あなたの説明によると、ハンマー以外のツールを持っているようです。ツールが多ければ多いほど、より効率的に作業を進めることができます。仕事を完了するために自由に使えるツールを使用し、ときどき追加のツールを購入 (学習) します。
C++が好きです。特にデータをテストする必要がある場合、コンパイル、実行、テスト、クローズのサイクルが嫌いです。
私の解決策: [Lua を利用した] 小さなプログラミング環境を作成し、それを C++ アプリケーションに組み込み、実行時にそれを開き、対話的に処理を行います。あるプログラミング環境や別のプログラミング環境に固執するのはなぜですか? 両方の長所を活用してください。
C++ は、長いテキスト文字列を処理するように特別に設計されたわけではありません。(古い C-String を見てください...それらは深刻な問題にとっては悪夢でした。) 対照的に、Perl はこの種の使用のために作られました。
おそらく C++ で何かを作り上げることができますが、Perl ソリューションはおそらくより堅牢で保守しやすいでしょう。