关于静态与动态类型有很多关于SO的问题,但我没有找到很多关于同时具有这两种语言的语言。让我解释一下。
似乎动态类型语言在快速原型制作方面具有优势,例如: Python或Perl,而静态类型语言(如C ++,OCaml)允许更多的编译时检查和优化。 我想知道是否有一种语言允许两者:
在C#中,默认为静态类型,但您可以写:
dynamic fooVar = new FooClass();
在这种情况下fooVar
是动态输入的。
似乎带有http://www.lexifi.com/blog/runtime-types的OCaml也提供了这样的东西。
请不要主观建议哪种语言最好,只有客观特征!
答案 0 :(得分:6)
不确定。它被称为“渐进式打字”,我认为它是时髦的。
“逐渐打字”的堂兄是“可选打字”。在这两种情况下,包含和不包含静态类型的代码共存。但是,在“可选类型”中,语言的语义完全与静态类型无关,而在“渐进式键入”中,语义可能会考虑静态类型(如果可用)。
从课程“Integrating Static and Dynamic Typing”的页面,我读到了他们的学习
最新语言的设计,集成了静态和动态 打字,包括Typed Racket(以前的Typed Scheme),C#4.0, Diamondback Ruby,Haskell,Sage和Thorn
您可以将Dart添加到列表中,该列表建议使用位置文件Pluggable, Optional Type Systems中的可选输入。