与Java相比,Ceylon有哪些优势?[关闭]


11

在网上寻找最近​​和功能强大的编程语言时,我遇到了锡兰。我进入了ceylon-lang.org,上面写着:

锡兰深受Java影响。您会看到,我们是Java的粉丝,但是我们知道它的局限性。Ceylon保留了Java的最佳功能,但改进了我们认为烦人,乏味,令人沮丧,难以理解或容易出错的东西。

与Java相比,Ceylon有哪些优势?


1
嗯,我在他们的网站上查看了一下,没有找到令人信服的解释来说明为什么我想从Java切换到Ceylon ...公平的说,他们仍处于早期阶段,所以也许他们不想过早地大肆宣传然后失望...
彼得Török

1
嗯,我认为这是狂热的程序员的另一种语言(不是:P没什么问题),但是我看到Hibernate的名气的加文·金在团队中令人放心。不过,我看不出有谁会选择锡兰而不是Scala,Groovy或Clojure等其他语言。
Andres F.


1
@AndresF。看起来这是一个Red Hat项目。应该有一定的吸引力,但一如既往,很难说这能否维持下去,只要我们其他人都愿意。在过去的16年中,Java已被证明具有向后兼容性-目前尚无人可及。

Answers:


27

Ceylon似乎是一种有趣的语言,但我认为它比Java的“优势”相对较少。

我认为它具有更好的语法和更多“现代”语言功能-尽管这是主观的,并且我认为选择编程语言应该是相对较小的因素。

为严肃的项目选择语言/平台时,更重要的因素是:

  • 它是否使您能够为给定的问题开发更好的范例?(不是-锡兰显然是在人满为患的静态类型的Java类OOP空间中的另一种语言。例如,与针对功能语言空间的Clojure或面向动态语言的OOP JVM语言Groovy形成对比,因此它们可以解决不同的领域)
  • 它有一个更好的图书馆生态系统吗?(没有机会...。Java在这方面是无与伦比的。充其量您可能最终只会使用Ceylon的Java库)
  • 您能否获得更多熟练的开发人员?(不太可能,目前很少有人在使用锡兰,即使这样做,学习的难度也会很大)
  • 有更好的工具吗?(否-Java工具非常全面和成熟)
  • 它会提高您的生产力吗?(值得商--它具有一些不错的生产语言功能,但结合学习曲线和工具效果,它实际上可能最终落在后面)
  • 它是否提供更好的性能?(不-JVM对Java进行了非常好的优化,这是任何其他JVM语言都要击败它的艰难要求。Scala接近了,但这是经过多年的微调之后的...)
  • 它是否支持更多目标平台?(否-这是一种JVM语言,因此与Java完全一样)
  • 代码会更易于维护吗?(可能不是-Java之所以经受住时间的考验,恰恰是因为Java相对稳定,成熟并且没有很多高级语言功能,这些功能可能会使将来的维护者感到困惑)
  • 是否有一个庞大,活跃且乐于助人的社区?(不,至少没有与Java或Scala,Clojure,Groovy等其他大型JVM语言相比)

总的来说,我当然会鼓励人们尝试锡兰,并从学习的角度去玩。

但是我目前没有看到任何引人注目的优势,这些优势会使很多人想要切换到它(或者在其他JVM语言(例如Clojure,Scala,JRuby或Groovy)之前选择它)。


2
“它支持更多目标平台吗?” 是的-您可以将Ceylon编译为Javascript。
Chochos 2012年

1
另外,我认为您对某些观点的评估并不真正有效,因为锡兰尚未完全完成,因此将其与已经存在多年的其他语言进行比较是没有意义的。
Chochos 2012年

5
@Chochos-您还可以将Java编译为JavaScript(Google Web Toolkit可以做到这一点),因此除了Java之外什么也没有。我同意锡兰显然还没有完成,但是我认为我的所有观点现在都是有效的,并且至少在接下来的5年内不会改变(即使锡兰团队完成了所有当前路线图)。
mikera 2012年

1
@mikera Chochos是完全正确的。Ceylon确实支持通过设计/本地编译为JS。也可以将其编译为本地代码。我认为这是一个很大的差异,然后“如果某人在某处存在某个工具,如果执行的话,它也会做同样的
事情

5
@mikera-对于每种即将到来的语言,“是否有一个庞大的社区”当然是一个杀手argument的论点。话虽这么说,一个小社区通常更具响应能力和能力。(看看在Java那里整天都在写关于Java的哪些废话……)
Ingo,

3

它具有Java中找不到的一些不错的功能:

  1. 泛型泛型
  2. 类型推断
  3. Mixins(尽管这是JDK8中提供的)
  4. 联合和交叉点类型(这真的很酷,在许多语言中都找不到)
  5. “高阶函数”(尽管不完全是一流的对象)
  6. 闭包(也包含在JDK8中)

3. JDK8中的Defender方法可以提供mixin的某些功能,但它们既不接近mixin,也不接近特征。4.联合和交叉点类型对我来说是一个奇怪的概念。我在了解附加值方面遇到困难。AFAIK仅在不必定义将两个其他接口组合在一起的接口时才为您节省一些打字工作。除此之外,我确信Java将永远不会在Scala / Kotlin / Ceylon /中发现任何高级功能,而这是二进制向后兼容的问题。因此,与Ceylon一样放弃Java也有一定道理。
OlliP

@OlliP您真的不想定义编译器生成的所有联合和交集类型。Java具有交集类型,但仅作为通用参数。它将联合类型转换为一些常见的超类型,这会导致有趣的编译器消息(“&捕获?”)。联合类型也可用于可空性,这比Java空值和可选值都优越。
maaartinus

2

据我所知,Ceylon与其他“爱好创建”的JVM语言之间的最大区别之一是,它将得到Red Hat / JBoss的支持。因此,它将获得一个非常好的工具集,集成到JBoss Tools / Developer Studio中,并与JBoss AS / Gatein Portal以及所有Midleware / JEE 6 / BRMS进行了良好的交互。因此,您可能会在某些场合用JSF开发成熟的Ceylon应用程序,具有PHP“更改和刷新周期”的非常有生产力的portlet,而没有。

作为大多数基于JVM的语言,对于需要大量代码库的项目,我不认为它可以替代Java,但对于一些中小型项目,尤其是模块化程度很高的项目(如CRUD密集型,Portlet等),我认为它不能替代Java。 )。我认为它将在网络世界中受到极大欢迎,尤其是JBoss粉丝。


1
“锡兰和其他“业余爱好”的JVM语言”。那么Scala和Kotlin是爱好创建的语言吗?
OlliP

我认为在创建Ceylon项目时Ceylon IDE为您创建模块定义的方式是Jigsaw的灵感。他们的Ceylon IDE使用户易于进行模块化。使用OSGi,这非常麻烦,因为您必须使用Maven插件和各种参数。我想Oracle的Jigsaw员工会注意到Ceylon IDE中智能的用户友好工具集成,并尝试为Jigsaw生成类似的东西。
OlliP

1

我认为锡兰在很多方面都很有趣。如果您想抛弃Java的某些问题,也许它们是正确的,您需要以某种方式离开Java。Ceylon似乎具有许多语言功能,我希望这确实会使编译器像Scala一样变慢,甚至导致编译时间不随代码大小而扩展(请参阅两年的Scala经验反馈)。锡兰开发团队的步伐令人印象深刻。

Kotlin仍然是0.6,从去年的发展速度来看,我要说比1.0还差一年。它没有像Ceylon这样的许多语言功能(但是缺少一些重要的Java功能,例如特征和扩展方法),并且似乎更多是Scala,没有它的问题。我猜可扩展的构建时间将不是问题。但是Kotlin只能像Groovy这样更好的Java。它无法提供摆脱XML依赖,样板代码,字节码操作等Java商品编程的方法。这就像Java和Scala一样。Kotlin还是Ceylon是否能够有所作为还有待观察。我认为这两种尝试都是值得的,并且祝他们好运。


-2

Ceylon在开发过程中正在制定规范,就像所有大型JVM语言一样(即,除了Groovy之外,上述所有语言)...

锡兰(http://ceylon-lang.org/documentation/1.0/spec)

Clojure(http://clojure.org/Reference)

Scala(www.scala-lang.org/docu/files/ScalaReference.pdf)

Java(http://docs.oracle.com/javase/specs/jls/se7/html/index.html)

JRuby遵循Ruby的规范,必须为此付费(http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.