Ceylon相比Java或Scala有哪些优势?

16

昨天我看到了来自Ceylon团队的公告,称第一个里程碑版本已经公开发布。从我所看到的内容来看,它看起来很有趣。

从对Ceylon的信息了解中可以看出,它的目的在很大程度上与Scala的目的相符...

Ceylon深受Java的影响。你看,我们是Java的粉丝,但我们深刻地了解它的局限性。Ceylon保留了Java的最佳部分,同时改进了我们在经验中发现的讨厌、乏味、令人沮丧、难以理解或容易出错的事情。

因此,总结一下,Ceylon和Scala似乎在说(根据我的理解)我们喜欢Java,但有些烦恼,所以我们想在Java的基础上进行改进以使生活更加美好。

但我想知道的是,既然Scala已经存在,为什么要创建另一个被称为“Java杀手”的编程语言Ceylon呢?Ceylon有什么特别之处,或者高于Scala?

注意:请不要说“我喜欢X而不是Y”,我正在寻找关于Ceylon为开发社区提供的客观观点。


1
你可能会对这个讨论感兴趣。 - BenH
4
我认为这应该放在程序员网站上,而不是一个好的SO问题。 - Dave Newton
2个回答

15

Ceylon团队声称Scala太难/复杂,试图创建更简单的东西。

Scala社区回应说Scala并不难,Ceylon缺失了Scala重要的强大功能。

很难在不引起争论的情况下思考这个问题。


乍一看,Scala 可能会让人感到害怕,我猜 Ceylon 使 Java 开发人员的过渡不那么痛苦。有趣的是看看随着时间的推移采用情况如何。 - Codemwnci
@Codemwnci 我同意。但最初看起来令人害怕的东西通常会变得非常好和强大...时间会证明一切。 - Jens Schauder
1
对我来说,最重要的是“一等和高阶函数”。这是 Java 缺失的主要特性之一,而在 Scala 中则存在。这是 Ceylon 的待办事项清单之一,但我很惊讶他们甚至发布了没有内置这样一个核心功能。 - Dan Burton
2
与Scala相比,Ceylon的一个优点似乎是对待null的方式。在Scala中,如果你想避免NPE,可以使用Option[T],但引用仍然可以为null,而且Option[T]和普通引用之间的转换不是隐式的(默认情况下,但不建议将其设置为隐式)。Ceylon使用类型联合(T?T|Nothing的简写)的方式要安全得多,也更加方便。在Ceylon中几乎不可能导致NPE,而且你永远不必编写像Some(foo)这样的代码。 - ddekany

4

M1版本缺少重要功能,正如您链接中所列出的那样。只要这些功能没有提供,Ceylon基本上就是一个具有更好语法的Java。一旦这些功能可用,与Java相比肯定会有相当大的优势,但与Scala相比则不然,后者已经拥有这些功能以及更多功能(最显著的是高阶类型)。当然,语法仍然起着重要的作用,但这主要是口味问题,也是引发争议的绝佳燃料。


+1并进行小修正:他们很可能没有更高级的类型变量。有趣的是,人们大声呼喊着要求使用lambda和高阶函数,却还没有发现编写真正抽象的代码需要更高级别的类型变量。 - Ingo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接