SO上有很多关于静态和动态类型的问题,但我没有发现很多关于两者兼有的语言。让我解释。
似乎动态类型语言在快速原型设计方面具有优势,例如 Python 或 Perl,而静态类型语言(如 C++、OCaml)允许更多的编译时检查和优化。我想知道是否有一种语言可以同时允许两者:
- 首先,使用动态类型、通用(即接受任何类型)打印功能进行快速原型设计,以便于调试和 REPL,并适应不断变化的设计选择
- 然后,更改一些内容并将代码编译到库中,使用静态类型进行更多安全测试和最佳性能。例如,允许静态类型的更改可能是:声明变量(但不是注释所有内容,这要归功于类型推断)、添加编译器开关、使用特定函数而不是通用函数等。
在 C# 中,默认为静态类型,但您可以编写:
dynamic fooVar = new FooClass();
在这种情况下fooVar
是动态类型的。
似乎带有http://www.lexifi.com/blog/runtime-types的 OCaml也提供了类似的功能。
请不要主观建议哪种语言最好,只有客观特征!