Javaに対するCeylonの利点は何ですか?[閉まっている]


11

ネット上の最近の強力なプログラミング言語を探して、Ceylonに出会いました。ceylon-lang.orgに立ち寄ったところ、次のように書かれています。

CeylonはJavaに深く影響を受けています。ご覧のとおり、私たちはJavaのファンですが、その限界を裏返しに知っています。CeylonはJavaの最高の部分を保持しますが、私たちの経験では面倒で退屈でイライラする、理解するのが難しい、またはバグを起こしやすいものを改善します。

Javaに対するCeylonの利点は何ですか?


1
うーん、彼らのサイトを調べてみたところ、JavaからCeylonに切り替えたい理由について説得力のある説明が見つかりませんでした。その後、...失望
ペーテルTörök

1
うーん、私はそれが熱狂的なプログラマーによる別の言語だと思っていました(それで何か問題があるわけではありません:P)。それでも、Scala、Groovy、Clojureなどの他の言語よりもCeylonを選択するのは誰なのかわかりません。
アンドレスF.


1
@AndresF。Red Hatプロジェクトのようです。ある程度の牽引力が必要ですが、他の人が望む限り、これが維持されるかどうかを言うのはいつも難しいです。Javaは過去16年間、後方互換性があることが証明されています。今のところ、それは打ち負かすのが難しいです。

回答:


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言語とは比較されません)

全体として、私は人々にCeylonを実験し、学習の観点からCeylonを楽しんでもらうことを確かに奨励します。

しかし、私は現在、多くの人々がそれに切り替えたい(またはClojure、Scala、JRuby、Groovyのような他のJVM言語よりも先に選択したい)魅力的な利点を見ていません。


2
「より多くのターゲットプラットフォームをサポートしていますか?」はい-CeylonをJavascriptにコンパイルできます。
-Chochos

1
また、セイロンはまだ完成していないので、いくつかのポイントの評価は実際には有効ではないと思います。
チョチョス

5
@Chochos-JavaをJavaScriptにコンパイルすることもできます(Google Web Toolkitがこれを行います)ので、Javaが行うこと以外に何もありません。私はセイロンが明らかに終了していないことに同意しますが、すべてのポイントは現在有効であり、少なくとも今後5年間で変更されることはないと思います(セイロンチームが現在のロードマップをすべて完了したとしても)。
ミケラ

1
@mikera Chochosは完全に正しいです。Ceylonは、設計/ネイティブによるJSへのコンパイルをサポートします。ネイティブコードにコンパイルすることもできます。私は、「場合、ツールは同じことを誰か、で、どこかにあります..」そして、これは大きな違いだと思う
Gundon

5
@mikera-「大規模なコミュニティはありますか」は、もちろん、今後の各言語の致命的な議論です。そうは言っても、小さなコミュニティは多くの場合、より敏感で有能です。(Javaに関するスクラップがSOで終日書かれているものを見てください。...)
Ingo

3

javaにはない素晴らしい機能がいくつかあります:

  1. 具象ジェネリック
  2. 型推論
  3. Mixins(これはJDK8で提供されますが)
  4. ユニオンとインターセクションのタイプ(これは本当にクールで、多くの言語には見られません)
  5. 「高階関数」(ただし、ファーストクラスオブジェクトとしては完全に機能しません)
  6. クロージャー(JDK8でも提供)

3. JDK8のDefenderメソッドは、ミックスインの機能の一部を提供できますが、ミックスインにも特性にも近くなりません。4.ユニオンと交差点のタイプは、私にとって奇妙な概念です。付加価値を理解するのに問題があります。私の知る限り、他の2つのインターフェイスを組み合わせたインターフェイスを定義する必要がない場合、入力の手間が省けます。それ以外には、JavaにはScala / Kotlin / Ceylon /にある高度な機能がバイナリ後方互換性の問題になることはないと確信しています。そのため、Ceylonと同様にJavaを放棄することには正当化があります。
OlliP

@OlliPコンパイラーが生成するすべての共用体および交差タイプを定義するのは本当に嫌です。Javaには交差タイプがありますが、一般的な引数としてのみです。ユニオン型を一般的なスーパータイプに変換し、面白いコンパイラメッセージ(「&capture of?」)につながります。ユニオン型はヌル可能性にも使用されます。これは、Javaのヌルおよびオプションの両方よりもかなり優れています。
-maaartinus

2

私が気づいた限りでは、Ceylonと他の「趣味で作成された」JVM言語の最大の違いの1つは、Red Hat / JBossによってサポートされることです。したがって、JBoss Tools / Developer Studioに統合された非常に優れたツールセット、JBoss AS / Gatein Portal、およびすべてのMidleware / JEE 6 / BRMSとの良好な相互作用が得られます。したがって、いくつかのpoingで、JSFで本格的なCeylonアプリケーションを開発し、PHPの「変更および更新サイクル」を含む非常に生産的なポートレットを開発するかもしれません。

ほとんどのJVMベースの言語として、巨大なコードベースを必要とするプロジェクトのJavaの代替としては見ていませんが、特に中規模のプロジェクト、特に非常にモジュール化されたプロジェクト(CRUD集中型、ポートレットなど) )。特にJBossファンからは、ウェブの世界で非常に好評になると思います。


1
「Ceylonおよびその他の「趣味で作成された」JVM言語」。ScalaとKotlinは趣味で作成された言語ですか?
OlliP

Ceylonプロジェクトを作成するときにCeylon IDEがモジュール定義を作成する方法は、ジグソーパズルのインスピレーションだと思います。Ceylon IDEにより、ユーザーは簡単にモジュール化できます。OSGiでは、mavenプラグインやさまざまなパラメーターをいじる必要があるため、非常に面倒です。OracleのJigsawの人々は、Ceylon IDEのスマートで使いやすいツールの統合に気付き、Jigsawに似たものを作成しようとするでしょう。
OlliP

1

セイロンは多くの点で興味深いと思います。また、Javaの問題を背後に残したい場合に、何らかの方法でJavaから離れる必要があるという点で正しいかもしれません。Ceylonにはかなりの数の言語機能があるようで、これによりScalaのようにコンパイラが遅くなるか、さらに悪いことにコードサイズに応じてビルド時間が短縮されないことを願っています(Scalaの2年間の経験フィードバックを参照)。Ceylon開発チームのペースは非常に印象的です。

Kotlinはまだ0.6であり、昨年の開発速度から判断すると、1.0から約1年離れています。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)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.