Ale*_*xey 13 ruby language-features scala dynamic-languages clojure
你在实践中失去了什么,当你选择一个静态类型语言,如Scala的(或F#,哈斯克尔,C#),而不是动态类型的人,比如Ruby,Python和Clojure中,Groovy中(其中有宏或运行时元编程能力)?请考虑最好的静态类型语言和最好的(在您看来)动态类型语言,而不是最差的语言.
答案摘要:
与像Scala IMHO这样的静态类型语言相比,像Ruby这样的动态语言的主要优点是:
原则上,当你不清楚(在静态环境中)正确的事情是什么时,你放弃了能够忽略你正在使用的类型,而这就是它.
由于复杂的类型检查可能相当耗时,因此您可能也不得不放弃快速的在线元编程.
在实践中,使用Scala,你几乎没有放弃任何东西 - 而且我并不特别关心.您不能注入新方法,但可以编译并运行新代码.你必须在函数参数中指定类型(以及带递归函数的返回类型),如果你自己从不犯类型错误,这有点烦人.由于它编译每个命令,Scala REPL并不像Python shell那样活泼.而且由于它使用了Java反射机制,因此您无需使用Python进行在线检查(无论如何都不需要构建自己的检查库).
{ 'request':{'type':'GET', 'path':mypath}, 'oncomplete':function(response) { alert(response.result) } }
。if
语句内。eval
是大多数动态语言和少数静态语言的主要内容。