Apa kelebihan Ceylon dari Jawa? [Tutup]

11

Mencari bahasa pemrograman yang akan datang baru-baru ini dan kuat di internet, saya menemukan Ceylon. Saya mampir di ceylon-lang.org dan mengatakan:

Ceylon sangat dipengaruhi oleh Jawa. Anda tahu, kami penggemar Jawa, tetapi kami tahu keterbatasannya di dalam. Ceylon menyimpan bit-bit terbaik dari Java tetapi meningkatkan hal-hal yang menurut pengalaman kami menyebalkan, membosankan, membuat frustrasi, sulit dimengerti, atau bugprone.

Apa kelebihan Ceylon dari Jawa?

Anuj Balan
sumber
1
Hmmmm, saya memeriksa situs mereka dan tidak menemukan penjelasan yang meyakinkan mengapa saya ingin beralih ke Ceylon dari Jawa ... cukup adil, mereka masih dalam tahap awal, jadi mungkin mereka tidak ingin menaikkan hype terlalu dini dan kemudian mengecewakan ...
Péter Török
1
Mmm, saya pikir itu adalah bahasa lain dari seorang programmer yang terlalu antusias (bukan berarti ada yang salah dengan itu: P), tapi saya melihat ketenaran Gavin King of Hibernate ada di tim, yang meyakinkan. Namun, saya tidak melihat siapa yang akan memilih Ceylon daripada bahasa lain seperti Scala, Groovy atau Clojure.
Andres F.
1
@AndresF. Sepertinya itu adalah proyek Red Hat. Harus menjamin beberapa daya tarik, tetapi seperti biasa sulit untuk mengatakan apakah ini akan dipertahankan selama yang kita inginkan. Java telah terbukti kompatibel ke belakang selama 16 tahun terakhir - yang sulit dikalahkan untuk saat ini.

Jawaban:

27

Ceylon sepertinya bahasa yang menyenangkan tapi saya berpendapat ini memiliki sedikit "kelebihan" di Jawa.

Saya pikir ini memiliki sintaks yang lebih bagus dan beberapa fitur bahasa "modern" - meskipun ini subjektif dan saya berpendapat seharusnya menjadi faktor yang relatif kecil dalam memilih bahasa pemrograman.

Faktor yang jauh lebih penting ketika memilih bahasa / platform untuk proyek serius:

  • Apakah ini memungkinkan Anda untuk berkembang dalam paradigma yang lebih baik untuk masalah Anda? (tidak - Ceylon jelas merupakan bahasa lain di ruang OOP seperti Java yang diketik secara statis yang penuh sesak. Berbeda dengan misalnya Clojure yang menargetkan ruang bahasa fungsional atau Groovy yang merupakan bahasa OOP JVM yang sangat dinamis sehingga mereka menangani ceruk yang berbeda )
  • Apakah sudah mendapat ekosistem perpustakaan yang lebih baik? (tidak mungkin .... Java tidak tertandingi dalam hal ini. Paling-paling Anda mungkin hanya akan berakhir menggunakan perpustakaan Java dari Ceylon)
  • Bisakah Anda mendapatkan lebih banyak pengembang yang terampil? (tidak mungkin, beberapa orang saat ini menggunakan Ceylon dan bahkan jika mereka melakukannya akan ada kurva belajar yang besar untuk naik)
  • Apakah ada alat yang lebih baik? (no - Java tooling sangat komprehensif dan matang)
  • Apakah itu membuat Anda lebih produktif? (dapat diperdebatkan - ini memiliki beberapa fitur bahasa produktif yang bagus, tetapi dikombinasikan dengan kurva belajar dan efek tooling mungkin sebenarnya berakhir di belakang)
  • Apakah ini memberikan kinerja yang lebih baik? (tidak - JVM dioptimalkan dengan sangat baik untuk Java, ini adalah panggilan yang sulit untuk bahasa JVM lain untuk mengalahkannya. Scala datang dekat, tapi itu setelah bertahun-tahun fine-tuning ...)
  • Apakah ini mendukung lebih banyak platform target? (tidak - ini adalah bahasa JVM jadi persis sama dengan Java)
  • Apakah kode akan lebih mudah dikelola? (mungkin tidak - Java telah bertahan dalam ujian waktu di sini tepatnya karena relatif stabil, dewasa, dan tidak memiliki banyak fitur bahasa canggih yang mungkin membingungkan pengelola masa depan)
  • Apakah ada komunitas yang besar, aktif dan bermanfaat? (tidak, setidaknya tidak dibandingkan dengan Jawa atau bahasa JVM besar lainnya seperti Scala, Clojure, Groovy dll.)

Secara keseluruhan saya pasti akan mendorong orang untuk bereksperimen dengan Ceylon dan bersenang-senang dengannya dari perspektif pembelajaran.

Tapi saat ini saya tidak melihat kelebihan menarik yang akan membuat banyak orang ingin beralih ke itu (atau memilih itu di depan bahasa JVM lainnya seperti Clojure, Scala, JRuby atau Groovy).

mikera
sumber
2
"Apakah itu mendukung lebih banyak platform target?" YA - Anda dapat mengompilasi Ceylon ke Javascript.
Chochos
1
Juga, saya pikir evaluasi Anda tentang beberapa poin tidak benar-benar valid karena Ceylon bahkan belum selesai, jadi tidak ada gunanya membandingkannya dengan bahasa lain yang telah ada selama bertahun-tahun sekarang.
Chochos
5
@ Chochos - Anda juga dapat mengkompilasi Java ke JavaScript (Google Web Toolkit melakukan ini) sehingga tidak ada tambahan apa yang dilakukan Java. Saya setuju Ceylon jelas belum selesai, namun saya pikir semua poin saya valid sekarang dan tidak mungkin berubah setidaknya dalam 5 tahun ke depan (bahkan jika tim Ceylon menyelesaikan semua peta jalan mereka saat ini).
mikera
1
@mikera Chochos sepenuhnya benar. Ceylon mendukung kompilasi ke JS secara desain. Itu juga dapat dikompilasi ke kode asli. Saya pikir ini adalah perbedaan besar maka "ada suatu alat, oleh seseorang, yang melakukan hal yang sama, jika .."
Gundon
5
@mikera - "apakah ada komunitas besar", tentu saja, adalah argumen pembunuh untuk setiap bahasa yang akan datang. Karena itu, sebuah komunitas kecil seringkali lebih responsif dan kompeten. (Lihat memo tentang Jawa yang ditulis sepanjang hari di SO ....)
Ingo
3

Ini memiliki beberapa fitur bagus yang tidak ditemukan di java:

  1. Generics Reified
  2. Ketikkan Inference
  3. Mixins (meskipun ini akan datang di JDK8)
  4. Jenis gabungan dan persimpangan (yang sangat keren dan tidak ditemukan dalam banyak bahasa)
  5. "Fungsi urutan lebih tinggi" (meskipun tidak cukup berfungsi sebagai objek kelas satu)
  6. Penutupan (juga datang di JDK8)
MebAlone
sumber
3. Metode bek di JDK8 dapat memberikan beberapa fungsi mixin, tetapi mereka tidak dekat dengan mixin atau sifat. 4. Persatuan dan tipe persimpangan adalah konsep yang aneh bagi saya. Saya memiliki masalah untuk memahami nilai tambah. AFAIK hanya menghemat upaya pengetikan saat Anda tidak harus mendefinisikan antarmuka yang menggabungkan dua antarmuka lainnya. Selain itu saya yakin bahwa Java tidak akan pernah memiliki fitur lanjutan yang ditemukan di Scala / Kotlin / Ceylon / apa pun yang merupakan masalah untuk kompatibilitas mundur biner. Jadi meninggalkan Jawa seperti halnya Ceylon memiliki beberapa pembenaran.
OlliP
@ OlliP Anda benar-benar tidak ingin mendefinisikan semua gabungan dan tipe persimpangan yang dihasilkan oleh kompiler. Java memiliki tipe persimpangan, tetapi hanya sebagai argumen umum. Itu mengubah jenis penyatuan menjadi beberapa jenis umum, yang mengarah ke pesan kompiler lucu ("& tangkapan?"). Jenis Union juga digunakan untuk nullability, yang cukup unggul untuk Java null dan opsional.
maaartinus
2

Sejauh yang saya perhatikan, salah satu perbedaan terbesar antara Ceylon dan bahasa JVM "yang diciptakan oleh hobi" lainnya adalah bahwa bahasa itu akan didukung oleh Red Hat / JBoss. Jadi itu akan mendapatkan perangkat yang sangat bagus diintegrasikan ke JBoss Tools / Developer Studio, interaksi yang baik dengan JBoss AS / Gatein Portal dan semua Midleware / JEE 6 / BRMS. Jadi Anda mungkin di beberapa poing mengembangkan aplikasi Ceylon penuh penuh di JSF, portlet yang sangat produktif dengan "siklus perubahan dan penyegaran" PHP dan apa yang tidak.

Seperti kebanyakan bahasa berbasis JVM, saya tidak melihatnya sebagai pengganti Java untuk proyek yang membutuhkan basis kode yang besar, tetapi untuk beberapa proyek berukuran kecil hingga menengah, terutama sekali yang sangat modular (seperti intensif-CRUD, portlet, dll. ). Saya pikir itu akan diterima dengan sangat baik di dunia web, terutama oleh penggemar JBoss.

Eduard Korenschi
sumber
1
"Ceylon dan" bahasa JVM "yang dibuat oleh hobi lainnya. Jadi Scala dan Kotlin adalah bahasa yang diciptakan oleh hobi?
OlliP
Saya pikir cara Ceylon IDE menciptakan definisi modul untuk Anda ketika Anda membuat proyek Ceylon adalah inspirasi untuk Jigsaw. Mereka Ceylon IDE memudahkan pengguna untuk memiliki modularisasi. Dengan OSGi itu sangat rumit karena Anda harus bermain-main dengan plugin pakar dan berbagai parameter. Saya kira orang-orang Jigsaw di Oracle akan memperhatikan integrasi alat ramah pengguna yang cerdas dalam IDE Ceylon dan mencoba untuk menghasilkan sesuatu yang serupa untuk Jigsaw.
OlliP
1

Saya pikir Ceylon menarik dalam banyak hal. Dan mungkin mereka benar karena Anda perlu meninggalkan Jawa dengan beberapa cara jika Anda ingin meninggalkan beberapa masalah Jawa di belakang Anda. Ceylon tampaknya memiliki beberapa fitur bahasa dan saya harap ini membuat kompiler lambat seperti di Scala atau bahkan lebih buruk karena waktu pengembangan yang tidak berskala dengan ukuran kode (lihat Dua tahun umpan balik pengalaman Scala ). Laju tim pengembang Ceylon cukup mengesankan.

Kotlin masih 0,6 dan, dilihat dari kecepatan pengembangan mereka di tahun lalu, saya akan mengatakan sekitar satu tahun lagi dari 1.0. Itu tidak memiliki banyak fitur bahasa seperti Ceylon (tetapi yang penting java hilang seperti ciri-ciri dan metode ekstensi) dan tampaknya lebih banyak jenis Scala tanpa masalah itu. Saya kira waktu pembangunan yang skalabel tidak akan menjadi masalah dengannya. Tapi Kotlin hanya bisa menjadi Jawa yang lebih baik seperti Groovy. Itu tidak dapat memberikan jalan keluar dari pemrograman komoditas Java dengan dependensi XML, kode boilerplate, manipulasi kode byte, dll. Ini adalah sesuatu seperti Java dan Scala yang dilakukan dengan benar. Apakah Kotlin atau Ceylon akan dapat membuat perbedaan masih harus dilihat. Saya pikir kedua upaya sepadan dengan usaha dan saya berharap mereka berdua semoga beruntung

OlliP
sumber
-2

Ceylon memproduksi spesifikasi selama pengembangannya, seperti semua bahasa JVM besar (yaitu semua yang disebutkan di atas kecuali Groovy) ...

Ceylon (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 mengikuti spesifikasi Ruby yang harus dibayar (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Vorg van Geir
sumber