现如今,在IT软件开发的发展中,各种编程语言铺天盖地,有函数式语言、面向对象的语言、动态语言、编译语言、解释性语言以及脚本语言等等。然而,新语言在以一种惊人的速度蜂拥而至,这种趋势蔓延了整个IT业界,势不可挡。其中有些是为了满足个人项目而设计的编程语言,有些则是为了满足业务上的需求。人们为什么要重复造轮子呢?
问题就在于,虽然现行的编程语言功能足够强大,也存在一定的通用性,但是并不意味着学会一种语法就能融会贯通,一劳永逸。编程过程本身也会不断演进,随着多核CPU的崛起,云计算,移动,分布式架构等新兴技术的涌现,开发人员正在面临着新一轮的挑战。在原有编程语言的基础上,想要及时更新,支持新特性,新增功能,谈何容易?有时候,我们要有一种归零的思想,一切从头开始。
本文将重点介绍10种前沿编程语言,这些编程语言会以一种全新的视角来解决问题,弥补现在流行编程语言中存在的不足,挖掘软件开发中的艺术。有些语言,如呱呱坠地的婴儿,处于初步发展阶段;有些语言,如血气方刚的少儿,发展迅速,但并不成熟。不管怎么样,在新的编程语言还没有出现之前,这些编程语言犹如一把锋利的匕首,为我们披荆斩棘,突破重围。
第一: Dart
JavaScript适用于为网页新增基本的交互性,但如果面对成千上万行代码,它的弱点就显而易见了。这也正是谷歌设计Dart这门新语言的缘由,Dart与 JavaScipt双管齐下,用于优化Web编程开发。
Dart与JavaScript相似,用到了类似于C语言的语法和关键词。最明显的区别在于JavaScript是一种基于原型的编程语言,而Dart和C++、Java类似,需要使用类和接口来声明对象。
开发人员可以选用Dart来声明静态类型的变量。总而言之,Dart与JavaScript相比,在编写代码的速度上更胜一筹。
第二:Ceylon
Ceylon是一个出自Red Hat的新项目,由Gavin King领导。King是Hibernate项目的创始人,该项目是一个Java语言内部的持久化解决方案。Gavin King喜欢Java,但是他认为Java并非完美,Ceylon将成为Java的隐形杀手。
Gavin King认为Java作为主流的编程语言,却存在着一些令人扼腕的缺陷。其一,Java无法实现定义用户接口和结构化数据,因此Java平台只能过度依赖XML。其二,Java平台也缺少内置模块的解决方案,那些试图解决这个问题的方案相当复杂,没有什么竞争力。其三,Java对高阶函数(功能)支持乏力,这造成了语言上不必要的拖赘,并且它在下面几个方面也不是很完美,包括getters/setters、数组阵列和原始类型、异常检查、空值处理、笨拙的元模型,以及开发者难以完全掌控的多态参数系统等等。最后,还有匆匆忙忙设计出来的Java SE SDK,也一直没有被得到很好的完善。
Ceylon语言支持功能强大的类型系统,在设计时它考虑到了以下限制:所有类型在类型系统内部都必须是可表达的(没有特殊的 primitive类型或者复合类型);Ceylon的通用类型系统要比Java的更简单,而且相比于其他类Java语言,它的安全性更高;甚至源编程(reflection)也必须是类型安全的;另外,Ceylon必须是在JVM上执行,而且可以和Java交互操作。
当然,King和他的团队并非等闲之辈,他们更不会浪费宝贵的时间来重复造轮子。未来也不会存在所谓的Ceylon虚拟机, Ceylon编译器支持将运行在JVM上的Java字节码正常输出,作为一个强大的编译器,Ceylon并不满足于此,它有一个伟大的雄心,希望创建一个Ceylon SDK来取代Java SDK。
第三: Go
谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。和今天的C++或C一样,Go是一种系统语言,支持快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常强大.
Go是一门通用的编程语言,适用于从程序开发到系统编程的各个阶段。从这个层面上讲,Go更像是C或者C++,同时Go又集成了Java和C#的优势,新增各种最新的特性,比如运行时环境,支持并发性编程处理。
第四: F#
F#是由微软为.NET语言提供运行环境的程序设计语言。它是基于Ocaml的,而Ocaml是基于ML函数程序设计语言的。微软推出的编程语言F#,不仅功能强大,而且很实用。这是一个用于显示.NET在不同编程语言间互通的程序设计,可以像C#和VB一样,访问各种函数库。
F#代码和OCaml有些相似,但是它同时也具有自身的语法特性。比如F#中的数据类型可用于科学计算。F#同时还支持异步I/O、CPU并行处理等。
第五:Opa
Web开发非常复杂。就连最简单的Web app都需要多种语言来编写成千上万行代码:客户端语言HTML和JavaScript,服务器端语言Java和PHP,数据库语言SQL等等。
Opa可谓是一枝独秀,虽然凭借一己之力无法取代以上任何语言,但是它一体化的特性赋予了自身极强的综合性。它是新一代Web开发平台,拥有一种新的编程语言,一个新的Web服务器,一个新的数据库和一个新的分布式执行引擎。所有这些都紧密集成在一起,为Web开发人员提供一种强大的体验。
Opa通过有效整合客户端和服务器端的框架从而实现一体化的功能。Opa编译器掌握着最高的权利,它可以决定哪些应用程序适合运行在服务器上,哪些应用程序适合运行在客户端,并且相应输出代码。对于客户端程序,它能够将Opa转换成JavaScript对应的相关代码,同时也可以调用AJAX。
当然,由于Opa运行时环境集成了自身的Web服务器和数据库管理系统,所以无法被其它的替代品所取代。我们为此要买单,付一小部分钱。相比于Opa带给我们的好处,这笔费用可以忽略。
第六: Fantom
Fantom 前身是 (Fan) 是一个基于 Java 和 .NET 平台的编程脚本引擎,用来在运行时产生 JVM 和 .NET 平台的字节码,该语言是面向对象的,跟 Groovy 和 JRuby 有点类似,可通过特定的接口来集成 Java 的类库。它吸收了其他语言的长处,形成了自己独特的语法风格,在新一代基于 JVM 的语言中占有了重要的地位。Fantom 并不仅仅可以在 JVM 中运行,还可以在 .net CLR(通用语言运行时)和浏览器中运行。对多种平台的支持也使得 Fantom 的竞争力得到了进一步的提升。
第七:Zimbu
Zimbu是一种新的编程语言,将现有编程语言的优点集于一身,力求快速、简洁、易读。所到之处,攻无不克,Zimbu可以编写简单的OS Kernel、也可以实现复杂的GUI应用程序的编写。
Zimbu虽然有类似C语言的表达式和操作符,但是它具有独一无二的语法特性,拥有自己的关键字,数据类型,数据块结构。它支持内存管理、线程和管道。
可移植性是一个关键性问题,Zimbu虽然是一个编译型语言,但是Zimbu编译器只支持输出ANSI C代码。
第八:X10
随着多核CPUs和分布式计算的兴起,并行处理成为了软件开发中的主流。而现有的编程语言无法满足这种趋势,这就是IBM为什么要推出X10的原因。这是一种专用于现代并行架构的编程语言,目标是将开发人员的研发速度提高至10倍。
X10代码和Java极为类似,作为本地可执行类文件,X10运行时环境相当于JVM的作用,X10编译器也可以输出C++或者Java源代码。编译器和运行时环境适用于不同平台,包括Linux、Mac OS X,以及Windows平台。同时还包括基于Eclipse的IDE。
第九:haXe
haXe的宗旨是让开发者选择一个最好的平台去做给定的工作,做到这点并不容易,因为通常每个新的平台的推出都带有它自己的编程语言。
haXe语法和C语言类似,是一个带有许多好特征的标准化语言,允许访问该平台的所有API。
第十:Chapel
在高性能计算领域,很少有哪家企业的风头能够盖过Cray,因此Cray公司的原始编程语言Chapel能够上榜也就毫不奇怪了。
Chapel是Cray公司Cascade Program项目的一部分,该项目可谓野心勃勃,其部分计划内资金甚至是由美国国防部高级研究计划局(简称DARPA)所提供。其目标主要是从底层硬件中提取抽象并行算法,进而提高现有架构的性能,并使得并行类程序具备更好的可移植性。
Chapel最引人注目的特色之一是其“多分辨率编程”功能,这项功能使得开发人员能够在应用程序中引入更多抽象化代码,并在实施中添加更多细节阐述以使得定义本身更加明确。