C++ のようなより冗長なコンパイル済み言語よりもスクリプト言語を使用する必要がある場合。C# または Java?
質問をもう少し面白くするために、次のような質問に答えてみましょう。
次の場合はスクリプト言語を使用する必要があります... 空白...
必要な場合は、スクリプト言語 X を使用します。
B が必要な場合は、スクリプト言語 Y を使用します。
C が必要な場合は、スクリプト言語 Z を使用します。
C++ のようなより冗長なコンパイル済み言語よりもスクリプト言語を使用する必要がある場合。C# または Java?
質問をもう少し面白くするために、次のような質問に答えてみましょう。
次の場合はスクリプト言語を使用する必要があります... 空白...
必要な場合は、スクリプト言語 X を使用します。
B が必要な場合は、スクリプト言語 Y を使用します。
C が必要な場合は、スクリプト言語 Z を使用します。
実行速度よりも開発速度が重要な場合は、スクリプト言語を使用する必要があります。
大規模なコンパイル済みシステムのコンポーネントとしてスクリプト言語を追加するのは一般的なパターンです。システムのコンパイル済み部分は実行速度が最適化されていますが、変更が困難です (コンパイルして再ロードする必要があるため)。システムは柔軟性を重視して最適化されており、実行速度は遅くなりますが、テキスト エディターがあれば誰でもすばやく簡単に変更できます。
アプリケーションの機能の一部をカスタマイズしやすくしたい場合は、このパターンを使用します。
これは少し宗教的な問題です。次のようなアドホック タスクにはスクリプト言語を使用します。
これらはすべてコンパイル済み言語でも実行できますが、私にとっては、スクリプト言語で実行する方が速くて簡単です (私は ruby を使用しますが、PERL と python は問題ありません)。
これが私の階層です:
grepを使用して試してください。
grepで実行できない場合は、sedを使用してください。
sedが十分に強力でない場合は、awkを使用してください。
awkが十分に強力でない場合(または非常に見栄えが悪くなり始めた場合)は、C、C ++、またはその他の本格的な汎用プログラミング言語を使用してください。
awkとCの間に「スクリプト言語」がないことに注意してください。これは意図的なものです。
私は、ラピッド プロトタイピング、実験、およびデータ ラングリングにスクリプト言語を使用する傾向があります。たとえば、前処理して 1 回限りの操作としてデータベース フィクスチャに組み込む必要があるテキスト ファイルが多数ある場合、通常はそれをスクリプト化します。
しかし、最近では、groovy や ruby などの言語により、「スクリプト」と「コンパイル済み」の境界線が曖昧になりつつあります。上記のタスクでは ruby を使用しますが、それを使用して、Rails を使用して実稼働 Web アプリケーションを構築します。私は Java でデスクトップ アプリを作成しますが、groovy ではスクリプトをブレンドすることもできます。C/C++ で記述している場合でも、ドメイン固有のスクリプト言語 (tcl など、私はあまり好きではありませんが) を埋め込むのが便利なパターンであることがわかりました。
言語の実際の選択は宗教的な選択だと思いますが、明らかなトレードオフがいくつかあります (たとえば、読みやすさ - perl は便利ですが、暗号化されたスクリプトを書くのは簡単すぎます。ある意味では「書き込み専用」です)。言語 :-)。過去に、私は bash+awk+sed、いくつかの perl、ruby などを使用しました。1 回限りのタスクの場合、それは主に、あなたとチームの他のメンバーが何に慣れているかの問題です。私は最近、bash/awk/sed で同じことを実行する方がいくらか速くても、Ruby を使用することを意識的に選択していますが、これは、Ruby でできるだけ多くのタスクを実行して Ruby のスキルを向上させるためです。
スクリプト言語を使用する場合の一般的な規則はないと思います。スクリプト言語は簡単に開発できるので開発は簡単ですが、特にスクリプトを異なるプラットフォーム(オペレーティングシステム)で実行する必要がある場合は、メンテナンスが難しい場合があります。
もちろん、スクリプト言語の長所は次のとおりです。
コントラは次のとおりです。
スクリプト言語は、その言語の強み (perl による文字列処理、Ruby による Web 開発など) に適した特定のタスクがある場合に非常に便利です。特に Web 開発のスクリプト言語では、コード変更の結果をより速く表示するという特性があります。
一部のゲームのように、コンパイルされた言語とスクリプト言語を混在させる場合があります。コンパイルされた言語よりもスクリプト言語の方が、少量の動作をより速く、より明確に、より簡単に表現できる場合に、これを行うと便利です。たとえば、C++ は非常に表現力豊かな言語ですが、その開発コストは、たとえば lua よりも高くなります。
一度書くか、シンプルに保つことを計画している場合は、スクリプト言語。プロジェクトが大きくなると、強く型付けされた言語の方がはるかに優れています。考えてみてください。最初の開発と統合および保守を伴う大規模なプロジェクトにどれだけの時間が費やされているかを考えてみてください。むしろ、スクリプトの大規模なセットを維持する必要がありますか、それとも型が動作するように強制する強い型の言語を維持する必要がありますか?
コマンド ライン シェルなどの対話型操作が重要な場合、または他のユーザーが簡単な操作で使用できるように機能をエクスポートする場合は、スクリプト言語を使用します。(コンパイルする必要はありません。スクリプトで十分です)。
スクリプト言語を使用してデータをマイニングし、cron ジョブとしてデータベースにフィードします。Windows スケジューラーまたは UNIX の crontab を使用して簡単に設定できるため、簡単です。また、perl の正規表現などのいくつかの重要な機能により、簡単に記述できます。
さらに、CPAN から利用できる何百万ものモジュール...