最近似乎每个人都加入了动态的、非编译的潮流。我基本上只使用过编译的、静态类型的语言(C、Java、.Net)。我使用动态语言的经验是像ASP (Vb Script)、JavaScript和PHP之类的。在考虑动态语言时,使用这些技术给我留下了不好的印象。一些通常会被编译器捕捉到的事情,比如变量名称拼写错误和为变量分配了错误类型的值,直到运行时才会发生。即使这样,您可能也不会注意到错误,因为它只是创建了一个新变量,并分配了一些默认值。我也从未见过intellisense在动态语言中工作得很好,因为变量没有任何显式类型。
我想知道的是,人们发现动态语言有什么吸引力?在动态语言允许你做在编译语言中做不到或难以做的事情方面,主要的优势是什么?在我看来,我们很久以前就已经决定,像未编译的asp页面抛出运行时异常这样的事情不是一个好主意。为什么这类代码会卷土重来?至少在我看来,Ruby on Rails看起来并不像10年前用ASP做不到的事情?
发布于 2008-09-04 02:09:09
不要忘记,您需要在单元测试中编写10倍的代码覆盖率,以取代编译器所做的工作:
我已经在那里,用动态语言做到了这一点,我完全看不到任何好处。
发布于 2008-09-04 01:13:15
动态语言的优点之一就是能够更改代码并继续运行。不需要重新编译。在VS.Net 2008中,在调试时,您实际上可以更改代码并继续运行,而无需重新编译。随着编译器和IDE的进步,使用动态语言的这种优势和其他优势可能会消失。
发布于 2009-04-15 14:24:38
啊,我发similar question的时候没有看到这个话题
除了这里提到的关于动态语言的其他人的好特性之外,我认为每个人都忘记了一个最基本的东西:元编程。
编写程序。
在编译语言中很难做到这一点,通常以.Net为例。要让它工作,你必须制作各种mambo巨型代码,它通常以运行速度慢约100倍的代码结束。
大多数动态语言都有一种方法来进行元编程,这是我一直保持的--能够在内存中创建任何类型的代码,并将其完美地集成到我的应用程序中。
例如,要在Lua中创建计算器,我所要做的就是:
print( loadstring( "return " .. io.read() )() )
现在,试着在.Net中做到这一点。
https://stackoverflow.com/questions/42934
复制相似问题