SO には、静的型付けと動的型付けについて多くの質問がありますが、両方を備えた言語についてはあまり見つけていません。説明させてください。
Python や Perl などのラピッド プロトタイピングに関しては、動的に型付けされた言語が有利なようですが、静的に型付けされた言語 (C++、OCaml など) では、コンパイル時のチェックと最適化が可能です。両方を許可する言語があるかどうか疑問に思っています:
- まず、動的型付け、簡単なデバッグと REPL のための一般的な (つまり、任意の型を受け入れる) 印刷関数、および変化する設計選択への適応を使用して迅速にプロトタイプを作成します。
- 次に、いくつかの変更を加え、コードをライブラリにコンパイルします。静的型付けを使用して、より多くの安全性テストと最高のパフォーマンスを実現します。静的型付けを許可するために変更することは、たとえば、変数の宣言 (ただし、型推論のおかげですべてに注釈を付けるわけではありません)、コンパイラ スイッチの追加、汎用関数の代わりに特定の関数の使用などです。
C# では、デフォルトは静的型付けですが、次のように記述できます。
dynamic fooVar = new FooClass();
その場合fooVar
、動的に型付けされます。
http://www.lexifi.com/blog/runtime-typesのOCamlもこのようなものを提供しているようです。
どの言語が最適かについての主観的なアドバイスはやめてください。客観的な機能のみを使用してください。