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