洞察动态语言与静态语言之争 (洞察动态语言的特点)

洞察动态语言与静态语言之争 (洞察动态语言的特点)

Steve Yegge 一直以来致力于提倡和推广动态语言。他在斯坦福大学的一个发言对动态语言进行了深入的阐述,最近他将此发言的文稿贴在了博客上,不料此话题在博客圈子里引起了不小的反响。他认为静态语言已经发展到了极限,而动态语言相对来说却能给开发者提供更大的空间。虽然承认目前动态语言在性能、可维护性和开发工具上都存在一些问题,但他认为这些问题都不是无法解决的,动态语言推广的主要障碍是业界对尝试新语言的态度不是很积极。

Cedric Beust 就此问题写了博客回应,他对 Steve 的许多看法持否定意见,特别是“构建动态语言开发工具是跟构建静态语言有些不同,但绝不会比它要难”这个结论:

然而 Cedric 和 Steve 都认为在产业界的大规模开发项目中推广使用新的语言是比较困难。在这一点上他们虽然措词不同,观点还是基本一致的。Ted Neward 对 Steve 和 Cedric 的帖子进行了回应,他持有相反的观点。他认为“发明一种新的语言的门槛从来就没有象今天这么低过”。虽然非常了解“在 IT 中应用新平台的开销”,但他坚信“在新平台应用到下一个大项目之前,还是有可能进行一些准备工作,还是有足够的时间进行实验和经验积累的”。这些实验日前已经变得相对容易了,因为在老的平台上运行新语言已经变成可能:

Ted Newward 总结道“一天过后,你会发现’静态 vs 动态’可能并不是问题关键所在。”选择语言的标准应该是:

在谈到多语言编程时,Ola Bini 也发表了类似的观点。他认为每种语言——强静态、弱静态和动态——都有各自的优势和缺点,生拉硬扯的比较是没有意义的。我们应该选择最适合目标应用的语言:

根据 Greg Young 的观点,静态 vs 动态语言的讨论也应该考虑契约式设计 (Design by contract, Dbc) 和“并非只对类型进行静态验证这一概念”。他解释了应用 Dbc 的附加价值,并且认为静态语言更适合它:

静态验证和契约式设计理论大部分属于确定性理论的范畴。然而在发言中,Steve Yegge 认为验证也可以充分利用“运行时知晓一切”的优势,从而变成非启发式的。他以自然语言处理和语法检查为例说明了概率方法可能更合适于验证工作,并且在计算花销上也更小。

查看英文原文: Debate and more Insights on Dynamic vs. Static Languages?

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。