注:これは主に主観的であり、私の経験と印象に基づいています。
動的に型付けされた言語は、静的に型付けされた言語とは大きく異なります。これらの違いは、おそらく他のほとんどのアプリケーションよりも重量級のエンタープライズソフトウェアでより重要になります。
静的に型付けされた言語は非常に規範的である傾向があります。メソッドは、そのシグネチャに完全に一致する入力のみを受け取ります。アクセスレベルは非常に重要である傾向があり、インターフェイスは明示的に定義され、それらの定義を実施するために冗長ではあるが明確な制限が設けられています。
一方、動的に型付けされた言語は非常に実用的です。型変換は暗黙的に行われることが多く、十分に類似した動作をする限り、間違ったタイプの入力を提供した場合でも、関数は機能します。Pythonのような言語では、アクセスレベルでさえ技術的な制限ではなく契約に基づいています(つまりprivate
、使用しないように言われ、面白い名前があるためです)。
多くのプログラマーは、(おそらく)迅速なプロトタイピングを可能にするため、動的言語を好みます。多くの場合、コードは短くなります(型宣言がないためだけです)。迅速で汚れたソリューションが必要なため、または何かをテストするために適切なプロトコルに違反したい場合、それは簡単に可能です。
さて、「エンタープライズ」企業が静的に型付けされた言語を好むことが多いのは、厳密に、それらの制限についてより制限的で明確であることです。実際には、静的に型付けされたコードでさえ、コンパイラーのバカによって破られる可能性がありますが、多くの問題は、プロセスのずっと早い段階(つまり、実行前)でより目立ちます。つまり、コードベースが大きく、モノリシックで複雑な場合でも、コードを実行したり、QA部門に送信したりすることなく、多くのエラーを簡単に見つけることができます。
その環境以外の多くのプログラマーにとって、メリットがマイナス面を上回らない理由は、これらがコードの徹底的な検査によって、またはそれを実行しようとすることによって簡単にキャッチされることが多いエラーだからです。特に、テスト駆動型の方法論に従う場合、これらのエラーは簡単に発見でき、修正しやすくなります。また、リリースサイクルがはるかに短いこのような企業の多くでは、生産性が硬直性よりも重要であり、多くの(基本的な)テストが開発者自身によって行われています。
企業が動的に型付けされた言語をあまり使用しないもう1つの理由は、レガシーコードです。オタクに思えるかもしれませんが、大企業は、たとえ賞味期限を過ぎていても、機能するソリューションに固執することがよくあります。これが、非常に多くの大手企業がInternet Explorer 6を実施しており、OSのアップグレードが非常に遅い理由です。これはまた、「古い」言語(たとえば、古いバージョンのJava)で新しいコードを書くことが多い理由でもあります。新しい行で完全に書き換える承認を得るよりも、数行のコードを生きていないソフトウェアに追加する方がはるかに簡単です言語。
tl; dr:静的言語は官僚主義のように感じられるため、企業経営者はそれらを好む。