标签:
现存的计算机编程语言有好几千种,JVM上的语言也有十几种,所以大可不必为没听说过的编程语言感到惊奇。
由于工作的原因,对Java比较了解。从Java中我们总结的教训:
我主要谈比较新的几个JVM上的语言:Ceylon, Kotlin, Fantom. 它们的特性比较如下表:
Features | Ceylon |
Kotlin |
Fantom | Swift |
不可空类型(Non-nullable) |
Yes | Yes | Yes | Yes |
接口实现(Mixin) |
Yes |
Yes |
Yes |
No |
扩展方法(Extension) |
No |
Yes |
No |
Yes |
声明式编程(Declarative) |
Yes |
Yes |
Yes |
No |
动态调用(Dynamic) |
Yes |
Yes |
Yes |
No |
函数式(Lambda) |
Yes |
Yes |
Yes |
Yes |
不可变性(immutability) |
Weak |
Weak |
Strong |
Weak |
标准库完备性(API) |
Yes |
No |
Yes |
Yes |
模块化支持(Modularity) |
Yes |
No |
Yes |
No |
操作符重载(Operator) |
Yes |
Yes |
Yes |
Yes |
默认参数(DefaultParam) |
Yes |
Yes |
Yes |
Yes |
范型(Generics) |
Yes |
Yes |
No |
Yes |
属性Getter/Setter |
Yes |
Yes |
Yes |
Yes |
跨平台性 |
JVM,JS | JVM,JS | JVM,JS,CLR |
iOS |
上面的Swift只是拿来对照。还有很多新特性没有列出来,例如:“类型推断”等
1.新出现的编程语言特性趋向于统一化,相互学习和借鉴。其中“不可空类型”,”Lambda闭包”,”属性(getter/setter)”,“编译为JavaScript”,成了新语言的标准配置。
2.新出现的全部都是静态类型,看不到动态类型的身影。动态语言在可重构性和运行性能上不好。
3.面向对象仍然是工业界的主流,经的起时间检验。
只要是Java程序员,肯定被NullPointerException害苦过。自从有了不可空类型,从此远离NPE。
据说函数式语言中很早就有这个概念,叫做可选类型。我最早在C#中见到的问号语法,但是C#只是把他用在原始类型中。Fantom把他拓展到所有类型,而后几乎成了新语言的标配。Swift把他叫做可选类型,说明这个灵感不是来自C#,而是从函数式语言来的。
虽然这些JVM语言有比较好的特性,但是特性不能决定前景。最有前景的还是Swift这种有大公司做后盾,有框架,有开发场景的语言。我研究这些只是为了好玩而已。
最后,语言只是工具,而创造和使用工具是人和动物的本质区别。
新JVM语言比较:Ceylon vs Kotlin vs Fantom
标签:
原文地址:http://my.oschina.net/chunquedong/blog/502500