2008年1月22日星期二

未来系统中的编程语言

最近看到的两种观点值得思考:

1)Java语言规范本身需不需要进一步扩展?
凡是有过数年编码经验的程序员都发觉,他们很少使用泛型等1.5版本引进的新语法。Java的发展方向应该是基础infrastructure的语言,应该更强调稳定性。把提高代码的Productivity的工作交给动态语言去做。

2)Sun或者Java社区是否更应该支持Groovy,而不是JRuby?
Groovy是天然的面向Java开发者的动态语言,当前Sun和Eclipse都没有给予官方的支持,反而是IntelliJ给予足够的重视。

clipped from www.infoq.com

今天,有一种趋势正日渐清晰;在未来的几年内,人们会越来越多地采用新的编程语言。当然,这并不意味着当前所用的语言会被取代,而是要结合不同的语言,并且针对特定问题选择恰当的语言。

Bini描述了三种不同的层和语言——或者说语言类型,它们分别适用于不同的层。当然,这里可不是老生常谈的表现层、业务层和数据层;Bini以不同的方式进行了分割:


  • 稳定层(stable layer)–不包含大量的应用程序功能,可以使用静态语言构建

  • 动态层(dynamic layer)- 包含大量的应用程序功能,使用动态语言构建

  • 领域层(domain layer)- 包含大量的应用程序功能,使用领域特定语言构建

第一层我称其为稳定层。尽管从功能性的角度上讲,它只占整个应用程序的很小一部分。但是程序的其他部分都是构建在它之上的,因此它是非常重要的一部分。所以,静态类型安全在这一层中将会大有裨益。
大部分应用程序的功能都存在于动态层:
第二层是动态层。也许程序中一半的代码都集中在这一层。这一层中用到的语言主要是动态的、强类型的语言[…]
它绝对是有趣且多产的一层。很明显,由于我对JVM语言的痴迷,我相信这层与稳定层之间的交互绝对会产生非常强大的功效。
第三层是领域层。它应该由DSL实现。根据系统的不同需求,可能需要一种或多种DSL。大多数时候,将领域层实现为一种动态层内的内部DSL就足够 了,在这种情况下,第二层和第三层是很难区分的。但是有时候,我们的确应该拥有一个外部的DSL,并可以与之交互。一个典型的例子就是规则引擎 (rules engine,比如Drools)。
但是我必须要澄清一件事——我相信,在任何一层中,都不会有哪种语言会成为绝对的赢者。事实上,我认为倘若有一种语言在任何一层上战胜了其他语言, 都肯定是一件坏事情。或者说,我预见的未来是,我们可以看到Jython、JRuby和Rhino等许多其他语言会在同一层中共存,而且不必为此引发任何 对立和语言之争。
blog it

没有评论: