多くの場合、開発している主要なソフトウェアの一部ではない簡単なタスクが発生します。このファイルをデータベースと比較して違いを教えてください。Perl/Ruby/Python でのテキスト解析は、Java や C# よりもはるかに簡単です (部分的には、正規表現を使用する方がはるかに簡単だからです)。Perl/Ruby/ Pythonを使用してテキスト ファイルを解析する時間は、Java/C# プログラムを作成するか手。
また、ほとんどの動的言語はテキストを簡単に解析できるため、コード生成に最適です。確かに、最終的なプロジェクトは C#/Java/Transact SQL でなければなりませんが、100 回カット アンド ペーストしてエラーを見つけ、さらに 100 回カット アンド ペーストする代わりに、コード ジェネレーターを使用する方が簡単な場合がよくあります (常にではありません)。
最近の例では、ある会計システムから会計システムにデータを取得する必要がありました。システムにはインポート形式がありますが、古いシステムはまったく異なる形式でした (一致する必要があるものの、固定幅)。タスクは、データを何度も移行するためのプログラムを作成することではありません。データを私たちのシステムに押し込み、そこに維持することです。そのため、私たちは C# と SQL Server のショップですが、Python を使用してデータをアプリケーションでインポートできる形式に変換しました。最終的には、Python を使用したかどうかは問題ではなく、データがシステム内にあることが重要です。私の上司はかなり感銘を受けました。
動的言語が使用されているのをよく目にするのは、テストです。同等の Java プログラムを作成するよりも、Python/Perl/Ruby プログラムを作成して Web サービスにリンクし、それに対してデータをスローする方がはるかに簡単です。また、Python を使用して、コマンド ライン プログラムを攻撃したり、大量のガベージ (ただし有効な) テスト データを生成したりすることもできます。非常に簡単です。
動的言語が得意とするもう 1 つのことは、コード生成です。C#/C++/Java コードの作成。いくつかの例を次に示します。
私がよく目にする最初のコード生成タスクは、システム内の定数を維持するために動的言語を使用している人々です。多数の列挙型を手作業でコーディングする代わりに、動的言語を使用してテキスト ファイルをかなり簡単に解析し、列挙型を使用して Java/C# コードを作成できます。
SQL はまったく別の球技ですが、多くの場合、関数を実行しようとする代わりに、カット アンド ペーストを 100 回行うことでパフォーマンスが向上します (実行計画のキャッシュまたは複雑なロジックを関数に入れることで、行単位ではなく行単位で実行する必要があるため)。セット)。実際、テーブル定義を使用して特定のストアド プロシージャを自動的に作成すると非常に便利です。
コードジェネレーターを購入することは常に良いことです。しかし、そうでなくても、切り取り/貼り付けに時間を費やすほうが楽しいですか、それとも Perl/Python/Ruby スクリプトを一度作成してからコードを生成するほうが楽しいですか? 何かを手作業でコーディングするのに何時間もかかるが、コード ジェネレーターを作成するのに時間がかからない場合は、それを一度使用したとしても、時間とお金を節約できます。コードを 1 回作成するよりもコード ジェネレーターを作成する方が時間がかかるが、コードを複数回更新する必要があることがわかっている場合でも、それは理にかなっている可能性があります。コードを処理するのに 2 時間、ジェネレーターを実行するのに 4 時間かかる場合、ジェネレーターを作成するよりも、同等のコードをさらに 5 回または 6 回処理する必要があることがわかっています。
また、Java/C#/C/C++ よりも動的言語の方が簡単な場合もあります。特に正規表現が思い浮かびます。Perl で正規表現を使い始めてその価値に気付いた場合、Java 正規表現ライブラリーを使用したことがなければ、突然使い始めるかもしれません。もしそうなら、何か他のものがあるかもしれません。
動的言語に最適なタスクの最後の例を 1 つ紹介します。私の同僚は、ファイルでいっぱいのディレクトリを取り、さまざまな顧客のためにさまざまな CD にそれらを焼き付けなければなりませんでした。顧客は少数でしたが、ファイルは大量にあり、それらを調べて、それらが何であるかを確認する必要がありました。彼はこの作業を手作業で行いました....Java/C# プログラムを使用すれば時間を節約できたでしょうが、一度だけ、すべての開発オーバーヘッドを考慮すると、それだけの価値はありません。しかし、Perl/Python/Ruby で何かをまとめることはおそらく価値があったでしょう。彼はそれをするのに数時間を費やしました。Python スクリプトを作成して各ファイルを検査し、それがどの顧客に送られるかを照合し、ファイルを適切な場所に移動するのに 1 つもかからなかったはずです...繰り返しますが、標準的な仕事の一部ではありません。しかし、その仕事は一度限りのものでした。自分でやったほうがいいのか、Java/C# にタスクを実行させるために多くの時間を費やすか、Python/Perl/Ruby でそれを実行するのにはるかに短い時間を費やします。C または C++ を使用している場合、C または C++ でのプログラミングの余分な懸念事項 (ポインター、配列境界チェックなしなど) により、問題はさらに劇的になります。