我们需要新的编程语言?你可能认为并不需要,但是如果你去了解最近的趋势,你可能会改变你的想法。为什么Google采用GO和DART两种编程语言?为什么IBM、Cray、Red Hat分别创造了X10、Chapel和Ceylon三种语言?
未来,这10种编程语言(DART、Ceylon、GO、F#、OPA、Fantom、Zimbu、X10、Haxe、Chapel)是否能否撼动IT。新的编程语言是为了满足某些人的创作冲动还是新编程方式的技术演进?
回顾历史
如果你回头看看,我们可以看出新语言的爆发将历史分为3个时期,每个时期都链接到技术演进的临界点。
图中时间点以外的还有其他重要语言:(1)Pascal – 1970、(2)C – 1972、(3)Prolog – 1972、(4)Smalltalk – 1972、(5)Erlang – 1986、(6)Perl – 1987、(7)C#
云计算是否会用到这些语言?如果你分析这些新语言背后的故事,你会看到一个新兴的共同主题。
1.分布式/并行计算
可用于并行计算的编程语言(Cray的Chapel、IBM的X10)、并发编程(Clojure,Fantom,Go)和完整云栈单语言(Opa)。
由于云计算所有模式是将任务分发跨越不同地域的多个CPU并行或同时运行,所以现今的编程语言都不是很适合。
2.多范式编程
支持面向对象和函数式编程语言(Clojure、F#、Fantom、Scala),相对于并行化程序要简单,而纯函数式语言看来并不是十分成功。因此,需要尝试多范式编程语言。
3.多平台编程
多平台编程语言不仅可在JVM和CLR实施(Clojure、Fantom、Scala),还可以在其他几个平台(Clojure & Fantom on JavaScript engine、Scala on Android、Haxe on several platforms)。这事我们几十年来一直追逐的梦想,因此这就是创建跨平台语言的最好理由。
4.规模化编程
可读性、模块化(Ceylon)、编译速度(Go、Zimbu)、适合大型团队(Scala)、Meta-programmability(Ceylon、Scala)和简洁(Scala、Zimbu)是构建大型应用程序的编程语言的特性。
云计算提供了几乎无限的计算能力,这使得我们可以构建更大规模、更复杂的应用。当然构建大型应用需要大型团队和易于维护的代码。因此创建大型应用程序的编程语言势在必行。
5.客户端编程
替代JavaScript的DART、客户端和服务器端相同的语言(Naxe、Opa、Zimbu)自然有自己特有的优势。
云计算需要客户端代码无缝的运行在多个客户端设备上,虽然JavaScript已经成为了一个标准,但没有人喜欢它。因此,需要构建比JavaScript更好的并适用于多客户端平台的语言。
12种语言快速预览
12种语言是按照A-Z进行排序的,有趣的是这12种语言都是遵循某种开源许可之下(图表中不包括HTML5,因为从严格意义上它还不是一个新语言,同时也排除了Node.js,因为它仅仅是服务器端JavaScript引擎)。(李智/编译)