从Node.js到C++,看他们的发明者是如何评价他们的语言的未来。

正式上架:《Kotlin极简教程》Official on shelves: Kotlin Programming
minimalist
tutorial京东JD:

有些人问我,在现有的语言里面,有什么好的推荐?我说:“Java。”
他们很惊讶:“什么?Java!” 所以我现在来解释一下。

Ryan Dahl:Node.js

fun max(a: Int, b: Int): Int { return if  a else b}fun main(args: Array<String>) { println)}

Java超越了所有咒骂它的“动态语言”

也许是因为年轻人的逆反心理,人们都不把自己的入门语言当回事。很早的时候,计算机系的学生用Scheme或者Pascal入门,现在大部分学校用Java。这也许就是为什么很多人恨Java,瞧不起用Java的人。提到Java,感觉就像是爷爷那辈人用的东西。大家都会用Java,怎么能显得我优秀出众呢?于是他们说:“Java老气,庞大,复杂,臃肿。我更愿意探索新的语言……”

某些Python程序员,在论坛里跟初学者讲解Python有什么好,其中一个原因竟然是:“因为Python不是Java!”
他们喜欢这样宣传:“看Python多简单清晰啊,都不需要写类型……”
对于Java的无缘无故的恨,盲目的否认,导致了他们看不到它很重要的优点,以至于迷失自己的方向。虽然气势上占上风,然而其实Python作为一个编程语言,是完全无法和Java抗衡的。

在性能上,Python比Java慢几十倍。由于缺乏静态类型等重要设施,Python代码有bug很不容易发现,发现了也不容易debug,所以Python无法用于构造大规模的,复杂的系统。你也许发现某些startup公司的主要代码是Python写的,然而这些公司的软件,质量其实相当的低。在成熟的公司里,Python最多只用来写工具性质的东西,或者小型的,不会影响系统可靠性的脚本。

静态类型的缺乏,也导致了Python不可能有很好的IDE支持,你不能完全可靠地“跳转到定义”,不可能完全可靠地重构Python代码。PyCharm对于早期的Python编程环境,是一个很大的改进,然而理论决定了,它不可能完全可靠地进行“变量换名”等基本的重构操作。就算是比PyCharm强大很多的PySonar,对此也无能为力。由于Python的设计过度的“动态”,没有类型标记,使得完全准确的定义查找,成为了不可判定(undecidable)的问题。

在设计上,Python,Ruby比起Java,其实复杂很多。缺少了很多重要的特性,有毛病的“强大特性”倒是多了一堆。由于盲目的推崇所谓“正宗的面向对象”方式,所谓“late
binding”,这些语言里面有太多可以“重载”语义的地方,不管什么都可以被重定义,这导致代码具有很大的不确定性和复杂性,很多bug就是被隐藏在这些被重载的语言结构里面了。因此,Python和Ruby代码很容易被滥用,不容易理解,容易写得很乱,容易出问题。

很多JavaScript程序员也盲目地鄙视Java,而其实JavaScript比Python和Ruby还要差。不但具有它们的几乎所有缺点,而且缺乏一些必要的设施。JavaScript的各种“WEB框架”,层出不穷,似乎一直在推陈出新,而其实呢,全都是在黑暗里瞎蒙乱撞。JavaScript的社区以幼稚和愚昧著称。你经常发现一些非常基本的常识,被JavaScript“专家”们当成了不起的发现似的,在大会上宣讲。我看不出来JavaScript社区开那些会议,到底有什么意义,仿佛只是为了拉关系找工作。

Python凑合可以用在不重要的地方,Ruby是垃圾,JavaScript是垃圾中的垃圾。原因很简单,因为Ruby和JavaScript的设计者,其实都是一知半解的民科。然而世界就是这么奇怪,一个彻底的垃圾语言,仍然可以宣称是“程序员最好的朋友”,从而得到某些人的爱戴……

澳门新葡萄京所有网站,问:它的主要优势是什么?

“我真正关心的是Java虚拟机的概念,因为是它把所有的东西都联系在了一起;是它造就了Java语言;是它使得事物能在所有的异构平台上得到运行;也还是它使得所有类型的语言能够共存。”
( James Gosling, Java之父 (2011, ServerSide))

Java的“继承人”没能超越它

最近一段时间,很多人热衷于Scala,Clojure,Go等新兴的语言,他们以为这些是比Java更现代,更先进的语言,以为它们最终会取代Java。然而这些狂热分子们逐渐发现,Scala,Clojure和Go其实并没有解决它们声称能解决的问题,反而带来了它们自己的毛病,而这些毛病很多是Java没有的。然后他们才意识到,Java离寿终正寝的时候,还远得很……

Go语言

关于Go,我已经评论过很多了,有兴趣的人可以看这里。总之,Go是民科加自大狂的产物,奇葩得不得了。这里我就不多说它了,只谈谈Scala和Clojure。

Scala

我认识一些人,开头很推崇Scala,仿佛什么救星似的。我建议他们别去折腾了,老老实实用Java。没听我的,结果到后来,成天都在骂Scala的各种毛病。但是没办法啊,项目上了贼船,不得不继续用下去。我不喜欢进行人身攻击,然而我发现一个语言的好坏,往往取决于它的设计者的背景,觉悟,人品和动机。很多时候我看人的直觉是异常的准,以至于依据对语言设计者的第一印象,我就能预测到这个语言将来会怎么发展。在这里,我想谈一下对Scala和Clojure的设计者的看法。

Scala的设计者Martin Odersky,在PL领域有所建树,发表了不少学术论文(
包括著名的《The Call-by-Need Lambda
Calculus》),而且还是大名鼎鼎的Niklaus
Wirth的门徒,我因此以为他还比较靠谱。可是开始接触Scala没多久,我就很惊讶的发现,有些非常基本的东西,Scala都设计错了。这就是为什么我几度试图采用Scala,最后都不了了之。因为我一边看,一边发现让人跌眼镜的设计失误,而这些问题都是Java没有的。这样几次之后,我就对Odersky失去了信心,对Scala失去了兴趣。

回头看看Odersky那些论文的本质,我发现虽然理论性貌似很强,其实很多是在故弄玄虚(包括那所谓的“call-by-need
lambda
calculus”)。他虽然对某些特定的问题有一定深度,然而知识面其实不是很广,眼光比较片面。对于语言的整体设计,把握不够好。感觉他是把各种语言里的特性,强行拼凑在一起,并没有考虑过它们是否能够“和谐”的共存,也很少考虑“可用性”。

由于Odersky是大学教授,名声在外,很多人想找他拿个PhD,所以东拉西扯,喜欢往Scala里面加入一些不明不白,有潜在问题的“特性”,其目的就是发paper,混毕业。这导致Scala不加选择的加入过多的特性,过度繁复。加入的特性很多后来被证明没有多大用处,反而带来了问题。学生把代码实现加入到Scala的编译器,毕业就走人不管了,所以Scala编译器里,就留下一堆堆的历史遗留垃圾和bug。这也许不是Odersky一个人的错,然而至少说明他把关不严,或者品位确实有问题。

最有名的采用Scala的公司,无非是Twitter。其实像Twitter那样的系统,用Java照样写得出来。Twitter后来怎么样了呢?CEO都跑了
😛
新CEO上台就裁员300多人,包括工程师在内。我估计Twitter裁员的一个原因是,有太多的Scala程序员,扯着各种高大上不实用的口号,比如“函数式编程”,进行过度工程,浪费公司的资源。花着公司的钱,开着各种会议,组织各种meetup和hackathon,提高自己在open
source领域的威望,其实没有为公司创造很多价值……

Clojure

再来说一下Clojure。当Clojure最初“横空面世”的时候,有些人热血沸腾地向我推荐。于是我看了一下它的设计者Rich
Hickey做的宣传讲座视频。当时我就对他一知半解拍胸脯的本事,印象非常的深刻。Rich
Hickey真的是半路出家,连个CS学位都没有。可他那种气势,仿佛其他的语言设计者什么都不懂,只有他看到了真理似的。不过也只有这样的人,才能创造出“宗教”吧?

满口热门的名词,什么lazy啊,pure啊,STM啊,号称能解决“大规模并发”的问题,……
这就很容易让人上钩。其实他这些词儿,都是从别的语言道听途说来,却又没能深刻理解其精髓。有些“函数式语言”的特性,本来就是有问题的,却为了主义正确,为了显得高大上,抄过来。所以最后你发现这语言是挂着羊头卖狗肉,狗皮膏药一样说得头头是道,用起来怎么就那么蹩脚。

Clojure的社区,一直忙着从Scheme和Racket的项目里抄袭思想,却又想标榜是自己的发明。比如Typed
Clojure,就是原封不动抄袭Typed
Racket。有些一模一样的基本概念,在Scheme里面都几十年了,恁是要改个不一样的名字,免得你们发现那是Scheme先有的。甚至有人把SICP,The
Little
Schemer等名著里的代码,全都用Clojure改写一遍,结果完全失去了原作的简单和清晰。最后你发现,Clojure里面好的地方,全都是Scheme已经有的,Clojure里面新的特性,几乎全都有问题。我参加过一些Clojure的meetup,可是后来发现,里面竟是各种喊着大口号的小白,各种趾高气昂的民科,愚昧之至。

如果现在要做一个系统,真的宁可用Java,也不要浪费时间去折腾什么Scala或者Clojure。错误的人设计了错误的语言,拿出来浪费大家的时间。

Dahl:Node与其他的语言有一点明显的区别,就是处理I/O。所以它永远不允许用户锁上程序。它要求用户不断的处理新事物,因此它很适用于网
络编程。在你的服务器上要与很多人打交道,你必须处理链接。Node鼓励人们用非阻塞的模式。由于这个特性,你会发现Node在开发服务器上比传统编程语
言更加方便。

JetBrains开源其Kotlin语言 基于JVM的新编程语言。Kotlin,类似 Xtend
一样,旨在提供一种更好的 Java
而非重建整个新平台。这两种语言都向下编译为字节码(虽然 Xtend
是首先转换成相应的 Java 代码,再让 Java
编译器完成繁重的工作),而且两者都引入了函数和扩展函数(在某个有限范围内静态地增加一个新方法到某个已有类型的能力)。Xtend
是基于 Eclipse 的,而 Kotlin 是基于 IntelliJ
的,两者都提供无界面构建。能够首先演变到其他 IDE
的语言有可能成为最后的赢家。

Java没有特别讨厌的地方

我至今不明白,很多人对Java的仇恨和鄙视,从何而来。它也许缺少一些方便的特性,然而长久以来用Java进行教学,用Java工作,用Java开发PySonar,RubySonar,Yin语言,……
我发现Java其实并不像很多人传说的那么可恶。我发现自己想要的95%以上的功能,在Java里面都能找到比较直接的用法。剩下的5%,用稍微笨一点的办法,一样可以解决问题。

盲目推崇Scala和Clojure的人们,很多最后都发现,这些语言里面的“新特性”,几乎都有毛病,里面最重要最有用的特性,其实早就已经在Java里了。有些人跟我说:“你看,Java做不了这件事情!”
后来经我分析,发现他们在潜意识里早已死板的认定,非得用某种最新最酷的语言特性,才能达到目的。Java没有这些特性,他们就以为非得用另外的语言。其实,如果你换一个角度来看问题,不要钻牛角尖,专注于解决问题,而不是去追求最新最酷的“写法”,你就能用Java解决它,而且解决得干净利落。

很多人说Java复杂臃肿,其实是因为早期的Design
Patterns,试图提出千篇一律的模板,给程序带来了不必要的复杂性。然而Java语言本身跟Design
Patterns并不是等价的。Java的设计者,跟Design
Pattern的设计者,完全是不同的人。你完全可以使用Java写出非常简单的代码,而不使用Design
Patterns。

Java只是一个语言。语言只提供给你基本的机制,至于代码写的复杂还是简单,取决于人。把对一些滥用Design
Patterns的Java程序员的恨,转移到Java语言本身,从而完全抛弃它的一切,是不明智的。

澳门新葡萄京所有网站 1
Guido van Rossum:Python

Kotlin1.1发布日志:

结论

我平时用着Java偷着乐,本来懒得评论其它语言的。可是实在不忍心看着有些人被Scala和Clojure忽悠,所以在这里说几句。如果没有超级高的性能和资源需求(可能要用C这样的低级语言),目前我建议就老老实实用Java吧。虽然不如一些新的语言炫酷,然而实际的系统,还真没有什么是Java写不出来的。少数地方可能需要绕过一些限制,或者放宽一些要求,然而这样的情况不是很多。

编程使用什么工具是重要的,然而工具终究不如自己的技术重要。很多人花了太多时间,折腾各种新的语言,希望它们会奇迹一般的改善代码质量,结果最后什么都没做出来。选择语言最重要的条件,应该是“够好用”就可以,因为项目的成功最终是靠人,而不是靠语言。既然Java没有特别大的问题,不会让你没法做好项目,为什么要去试一些不靠谱的新语言呢?

问: 为什么有人批评Python太慢?

Our vision for Kotlin is to enable the use of a single expressive,
performant, strongly typed language across all components of a modern
application. Kotlin 1.1 makes two major steps towards this goal.

First, the JavaScript target is no longer experimental, and supports
all Kotlin language features, a large part of the standard library, as
well as JavaScript interoperability. This allows you to migrate the
browser frontend of your applications to Kotlin, while continuing to
use modern JavaScript development frameworks such as React.

Second, we’re introducing support for coroutines. As a lightweight
alternative to threads, coroutines enable much more scalable
application backends, supporting massive workloads on a single JVM
instance. In addition to that, coroutines are a very expressive tool
for implementing asynchronous behavior, which is important for
building responsive user interfaces on all platforms.

Below we describe these two changes further. In other news: we’ve
added type aliases, bound callable references, destructuring in
lambdas and more. See the details in our What’s new page (check out
the runnable examples!).

Van
Rossum:有些时候,你要完成的系统某一小部分,而这一部分却花费你几乎所有的时间。如果你写的只是一个简单的排序,用Python来完成的话,那这会成为系统的瓶颈。这里最好要用高效的语言来取代之,比如C和C++。

March 1, 2017

澳门新葡萄京所有网站 2
Yukihiro Matsumoto :Ruby

澳门新葡萄京所有网站 3Kotlin语言

问:你的语言不断发展的目标是什么?

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。

Matsumoto:我的目标就是让程序员更开心。目前Web程序员已经很开心了,但不够,我希望可以帮助更多的程序员。如嵌入式的,还有高性能程序的程序员。我目前正在开发Ruby语言的子集,主要应用于移动设备,打算明年年初将它公开。

Github源码:

澳门新葡萄京所有网站 4
Dmitry Jemerov:Kotlin

其主要设计目标:

问:我们为什么要用Kotlin,我们已经有Groovy或者JRuby

创建一种兼容 Java 的语言

让它比 Java 更安全,能够静态检测常见的陷阱。如:引用空指针

让它比 Java 更简洁,通过支持 variable type inference,higher-order
functions ,extension functions,mixins and first-class delegation
等实现。

让它比最成熟的竞争对手 Scala语言更加简单。

Jemerov:Grooby和JRuby是动态类型语言,如果你在开发中小型web程序,这2者确实是很不错的选择。但如果你要开发更复杂,更高性,高频率交互的程序的时候,Kotlin这个静态类型语言会更适合你。

一个非常好的交互式Kotlin学习教程:

澳门新葡萄京所有网站 5
Martin Odersky:Scala

此开篇第一回也。

问:你当初发明Scala的目的是什么?

kotlin的定位非常有特点,它并不像是scala另起炉灶,将类库,尤其是集合类都自己来了一遍.kotlin是对现有java的增强,通过扩展方法给java提供了很多诸如fp之类的特性,但同时始终保持对java的兼容.这是kotlin官网首页重点强调的:

Odersky:我很好奇,是否可以将函数式和面向对象编程结合成一个包,给开发人员提供一个强大的语言,让人感觉他有很强的互补性。函数式编程感
觉非常清爽,而且实用,它可以轻易构造简单的元素。而面向对象对于大型系统来说有很好的故事背景。总之我觉得把这2者相结合,是Scala的成功原因之
一。

这意味着什么呢?或者换个问法:我什么时候可以开始在我的项目中引入kotlin呢?我的回答是:现在,立刻,马上!

澳门新葡萄京所有网站 6
Bjarne Stroustrup:C++

上个图。

问:什么时候一个程序员应该选择本地化语言,什么时候选择基于虚拟机的语言?

JVM语言家族

Stroustrup:C++在基础架构方面有无与伦比的优势。换句话说,在性能,可靠性,资源,复杂性方面都有严格的要求。例如,你不会用
javascript写javascript引擎,你也不会用C++去写简单的web应用。你会用C++构造谷歌,亚马逊,Facebook的基础,但不
是顶层。C++在服务器市场和移动设备上有很强的优势。

澳门新葡萄京所有网站 7JVM语言家族澳门新葡萄京所有网站 8

澳门新葡萄京所有网站 9
Lars Bak:Dart

一个完整的语言有:

问:
据我所知,Dart实际上是编译为JavaScript,那为什么不直接用JavaScript呢?

前端、优化、后端、runtime、库

Bak:因为我们有….Dart虚拟机,可以更快的运行和启动。JavaScript给我的印象是大的应用中需要很长的时间来启动。如果你拥有了Dart虚拟机,那你可以将程序启动提速10倍。如今我们看到Web应用变得越来越大,越来越广泛,启动的速度是很重要的。

JVM生态体系,把后面四个都给包办了。

澳门新葡萄京所有网站 10

jvm,是用C写的,跟操作系统打交道C/C++目前看来,是好的选择。虚拟机就是java与操作系统的中间层。

Stefan Karpinski:Julia

库/API就基本是java自身封装实现。

问:你发明Julia的目的是什么?

从最初的Jython和JRuby,到Scala,Clojure都是在JVM上实现的语言。为什么它们选择JVM?

Karpinski:在09的时候,当我们谈论到技术开发过程中遇到的挫折的时候,主要提到了不同的事情需要不同的语言来做。发明Julia的想法
就是为了高效。它是一种动态语言,非常简单的编程模型。但它有极高的效率。对于Matlab,R和NumPy,有时候你得转换为C语言才能获得高效的性
能。但如果你使用Julia,你完全不必转换。

跨平台

你的语言编译器后端只需要输出 JVM
字节码就可以。跨平台需要极大的工作量(这个轮子,造起来有点耗时耗力)

澳门新葡萄京所有网站 11

JIT (Just-In-Time 即时编译)性能

JIT 可以在运行中记录程序运行的特征,并在其基础上做大量的优化(Java
企业级应用的优秀性能很大程度上是由此而来)。 JIT 自从 HotSpot JVM 随
Java 1.2 发布以来,JVM JIT 的性能不断提高,是无可争议的成功产品。把 JVM
作为目标平台意味着大量的性能优化工作可以「外包」给 JVM 来做,大大缩减了
Guest 语言的开发预算。

JVM 作为一个成熟的高层运行环境,为 Guest
语言提供了很多运行时所需要的服务,比如内存管理(有业界领先的垃圾回收等),很大程度上避免了额外的独立开发。

Rich Hickey :Clojure

社区庞大且成熟

JVM 有多个独立实现,也有若干厂商会持续推进,资料完备,社区巨大。Java
社区有大量成熟的库,一般来说,运行在 JVM
上的其它语言都会设计一个专用的「桥」来帮助直接使用 Java 的库。Java
有成熟的开发工具和环境。

问:你发明Clojure的目的是什么?

题外话

另外一个趋势是把 Javascript
成为新的目标平台。很多主流语言都已经出现了编译器可以翻译成
Javascript,这也是得益于近年来 Javascript 虚拟机性能的显著提升。

List-of-languages-that-compile-to-JS:

下一代普遍可接受语言(next mass-appeal
language)中,人的因素应该起到重要作用。

  1. 新的程序设计语言中的代码片段应该具备一个典型程序员所希望的适度复杂性。程序员会去期望在每天的工作中使用的语言。
  2. 中级程序员认可。所谓中级程序员是指那些普遍对博客、微博或者新语言不感兴趣的人。
  3. 程序员可以不用别人的帮助或者接受培训,就能对新的程序设计语言中的代码片段的功能进行合理的准确的推测。

NBJL可以走多远就目前来看是难以下定论的,但是我相信这是一个比较实际的问题。我们所需要的新的程序设计语言能够不需要大规模的培训,程序员们可以快速上手。

在其功能方面,注诸如如下条目:

  • 类C的语法
  • 静态类型(动态类型过于松散并且性能有限)
  • 遵循面向对象程序设计(Object Oriented
    Programming,OOP)思想,并且包括函数式语言的元素(纯函数式言非主流编程语言)
  • 易于反射获得(从而避免静态类型限制)
  • 属性(getter和setter实在是太让人讨厌了)
  • 闭包
  • Null判断(提供一个判断变量能否为null的方式)
  • 并发(好过原始线程和共享可变状态(shared mutable state))
  • 模块化(需要考虑更大的单元)
  • 工具(希望新语言能够对于工具开发有所帮助)
  • 可扩展性(语言的设计具备很好的可扩展性,以支持其上的二次开发,而不需要去修改语言本身的设计)…

当然还有其他一些可以讨论的主题-语言设计其实堪比艺术品设计,有太多角度可以观察了。

Java虚拟机已经不再是仅仅局限在 Java
了,很多语言提供了脚本转换,可以让其他的程序在java虚拟机上运行,这样能够让更多的开发者能够依靠JVM在Java平台上大有作为。而且虚拟机以及
对应的字节码都是开源的,所以你也能很容易地生成对应字节码来做一款属于你自己的编程语言。我们今天来看看以下9种新的编程语言。

GroovyGroovy是一个被编译成字节码的面向对象的语言。它的语法风格与java很像,但是又没java那么混乱。Java程序员能够很快的熟练使用
Groovy;实际上,Groovy编译器是可以接受完全纯粹的Java语法格式的,这样能够让程序员在学习Groovy时不需要学习任何新语法。需要注
意使用Groovy的一个重要特点就是使用类型推断,即能够让编译器能够在程序员没有明确说明的时候推断出变量的类型。同时Groovy也提供了一个高级
架构来解决字符串处理,xml的序列化与反序列化以及单元测试等等 —
所有的这一切好处都能为程序员节约不少时间。

JRubyJRuby是用来桥接Java与Ruby的,它是使用比Groovy更加简短的语法来编写代码,能够让每行代码执行更多的任务。就和Ruby一
样,JRuby不仅仅只提供了高级的语法格式。它同样提供了纯粹的面向对象的实现,闭包等等,而且JRuby跟Ruby自身相比多了很多基于Java类库
可以调用,虽然Ruby也有很多类库,但是在数量以及广泛性上是无法跟Java标准类库相比的。

JythonJython,aka
JPython,属于第一种专门为JVM专用的脚本语言。它能够用Python语言来高效生成动态编译的Java字节码。一些可选的静态编译方式能够被用
来开发applets,servlets,以及beans。作为Jython的首席程序员,Jim
Hugunin,现在已经停止了Jython的相关工作而去微软干活。所以这门语言的发展仅仅也就从2005-2008年,所以就现在看来Jython已
经无法与Groovy以及JRuby作为对手了。现在Jython可以在一些商业应用中找到,也已经得到了WebSphere
Application Server以及IMB的商业Java EE产品部门的官方支持。

ClojureClojure是纯粹的函数式编程语言。与Scala类似,Clojure已经有很多内置的并行运行基础建设能够让很多方法同时执行。Clojure也是
被设计为生成通用语言,能够生成.NET以及JavaScript。虽然Clojure也能被直接编译成Java字节码,但是无法使用动态语言特性以及直
接调用Java类库。与其他的JVM脚本语言不一样,Clojure并不算是面向对象的。

ScalaScala经常被我们描述为多模式的编程语言,因为它混合了来自很多编程语言的元素的特征。但无论如何它本质上还是一个纯粹的面向对象语言。它相比传统编

Hickey:我的目的是为JVM发明一种动态的,函数式编程语言。我以前都用C#和Java来开发大型系统,但在那些语言当中函数式编程很不适
用。我想有一种地道的函数式编程的语言,那就是Clojure。他们可以快速的编写小型程序,这对那些创业型企业来说是再合适不过了。 

程语言最大的优势就是提供了很好并行编程基础框架措施了。这是唯一一个在JVM中拥有actors

另一种并行编程代码生成器。Scala代码能很好的被优化成字节码,运行起来和原生Java一样快。KotlinKotlin是静态类型的语言,也可以编程成Java字节码以及JavaScript,作为一个时髦又表现丰富的编程语言,Kotlin就是被设计用来生
产高性能要求的程序的,所以运行起来和Java也是不相上下。Kotlin可以从
JetBrains InteilliJ Idea IDE这个开发工具以插件形式使用。

RhinoRhino是使用Java编写的开源的JavaScript引擎。当前是Mozilla公司在主导它的发展,Rhino的特点是为JavaScript加
了个壳,然后嵌入到Java中,这样能够让Java程序员直接使用。其中Rhino的JavaAdapters能够让JavaScript通过调用
Java的类来实现特定的功能。

CeylonCeylon是一个通用的,静态类型编程语言,也是基于阻塞以及面向对象的。据说这个语言深受Java的影响,而且它一开始就是被Red
Hat公司设计为给大型团队合作完成大型项目来的。Ceylon的主要努力方向是将语言变得更加可读,更加可预期,更加工具化以及更加模块化。据
Gavin King所说,Ceylon将不仅仅只是个编译器,而将是一个可以取代Java
SDK的新Ceylon SDK。

FantomFantom能够在运行时为JVM以及.NET或者JavaScript平台生成字节码,Fantom是与Groovy以及JRuby差不多的一样面向对
象的编程语言,但是悲剧的是Fantom无法使用Java类库,而是使用它自己扩展的类库。忘了说Fantom也包括actors,而且它最大的优势就是
在网站上有一个非常完备卓越的API文档系统。

澳门新葡萄京所有网站 12

中文参考文档:

国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring
Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

澳门新葡萄京所有网站 13开发者社区
QRCode.jpg

新闻来源:InfoWorld