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