Ceylon'un Java'ya göre avantajları nelerdir? [kapalı]


11

Net üzerinden yeni ve güçlü gelecek programlama dillerini arıyorum, Seylan ile karşılaştım. Ceylon-lang.org adresine gittim ve şöyle diyor:

Seylan Java'dan derinden etkilenir. Görüyorsunuz, biz Java'nın hayranlarıyız, ancak sınırlarını tersyüz ederek biliyoruz. Ceylon, Java'nın en iyi bitlerini tutar, ancak deneyimlerimize göre can sıkıcı, sıkıcı, sinir bozucu, anlaşılması zor veya hata eğilimli olan şeyleri geliştirir.

Ceylon'un Java'ya göre avantajları nelerdir?


1
Hmmmm, sitelerini kontrol ettim ve neden Java'dan Ceylon'a geçmek istediğime dair zorlayıcı bir açıklama bulamadım ... yeterince, hala erken aşamadalar, bu yüzden belki de çok erken hype yükseltmek istemiyorlar ve sonra hayal kırıklığına uğratmak ...
Péter Török

1
Mmm, bunun bir hevesli programcı tarafından başka bir dil olduğunu düşündüm (bunda yanlış bir şey yok: P), ama Hibernate'in şöhretinden Gavin King'in güven verici olan ekipte olduğunu görüyorum. Yine de Scala, Groovy veya Clojure gibi diğer diller üzerine Seylan'ı kimin seçeceğini göremiyorum.
Andres F.


1
@AndresF. bir Red Hat projesi gibi görünüyor. Biraz çekiş gücü gerekir, ancak her zaman olduğu gibi, geri kalanımızın istediği sürece korunup korunmayacağını söylemek zor. Java'nın son 16 yıl için geriye dönük uyumlu olduğu kanıtlandı - şimdilik yenilmesi zor.

Yanıtlar:


27

Ceylon eğlenceli bir dil gibi gözüküyor ama Java'ya göre nispeten daha az "avantajı" olduğunu iddia ediyorum.

Bence daha güzel bir sözdizimi ve bazı "modern" dil özellikleri var - bu öznel olsa da ve bir programlama dili seçiminde nispeten küçük faktörler olması gerektiğini savunuyorum.

Ciddi bir proje için bir dil / platform seçerken çok daha önemli faktörler:

  • Verilen probleminiz için daha iyi bir paradigma geliştirmenizi sağlıyor mu? (hayır - Seylan, aşırı kalabalık statik olarak yazılmış Java benzeri OOP alanında başka bir dildir. İşlevsel dil alanını hedefleyen Clojure veya çok dinamik bir OOP JVM dili olan Groovy ile kontrast, farklı nişlere hitap eder. )
  • Daha iyi bir kütüphane ekosistemi var mı? (şans yok .... Java bu konuda eşsizdir. En iyi ihtimalle muhtemelen Ceylon Java kütüphanelerini kullanacaksınız)
  • Daha yetenekli geliştiriciler alabilir misiniz? (pek az kişi şu anda Seylan'ı kullanıyor ve yapsalar da tırmanmak için büyük bir öğrenme eğrisi olacak)
  • Daha iyi araçları var mı? (hayır - Java araçları çok kapsamlı ve olgun)
  • Sizi daha üretken yapıyor mu? (tartışmalı - bazı güzel üretken dil özellikleri vardır, ancak öğrenme eğrisi ve araç efektleri ile birleştiğinde aslında geride kalabilir)
  • Daha iyi performans sağlıyor mu? (hayır - JVM, Java için son derece iyi bir şekilde optimize edilmiştir, diğer JVM dilinin onu yenmesi için zor bir çağrıdır. Scala yaklaşıyor, ancak bu uzun yıllar süren ince ayarların ardından ...)
  • Daha fazla hedef platformu destekliyor mu? (hayır - bu bir JVM dili ve Java ile tamamen aynı)
  • Kod daha sürdürülebilir mi olacak? (muhtemelen hayır - Java burada zaman testini tam olarak durdu çünkü nispeten kararlı, olgun ve gelecekteki koruyucularla karıştırılabilecek birçok gelişmiş dil özelliğine sahip değil)
  • Geniş, aktif ve yardımsever bir topluluk var mı? (hayır, en azından Java veya Scala, Clojure, Groovy vb. gibi diğer büyük JVM dilleriyle karşılaştırıldığında)

Genel olarak insanları Ceylon ile denemeye ve onunla öğrenme perspektifinden eğlenmeye teşvik ediyorum.

Ama şu anda çok sayıda insanın ona geçmek istemesini sağlayacak cazip avantajlar görmüyorum (veya Clojure, Scala, JRuby veya Groovy gibi diğer JVM dillerinin önünde seçiyorum).


2
"daha fazla hedef platformu destekliyor mu?" EVET - Seylan'ı Javascript'e derleyebilirsiniz.
Chochos

1
Ayrıca, Seylan henüz bitmediği için bazı noktaları değerlendirmenizin gerçekten geçerli olmadığını düşünüyorum, bu yüzden yıllardır etrafta olan diğer dillerle karşılaştırmanın bir anlamı yok.
Chochos

5
@Chochos - Java'yı JavaScript'e derleyebilirsiniz (Google Web Toolkit bunu yapar), bu nedenle Java'nın yaptıklarına ek olarak hiçbir şey yoktur. Ceylon'un açıkça bitmediğine katılıyorum, ancak tüm puanlarımın şu anda geçerli olduğunu ve önümüzdeki 5 yıl içinde en azından değişmesinin mümkün olmadığını düşünüyorum (Ceylon ekibi mevcut yol haritalarının tümünü bitirse bile).
mikera

1
@mikera Chochos tamamen haklı. Ceylon, JS'ye tasarım / doğal olarak derlemeyi destekler. Ayrıca yerel koda da derlenebilir. Bence bu büyük bir fark "Eğer birisi tarafından, aynı şeyi yapan bir araç var .."
Gundon

5
@mikera - "Orada büyük bir topluluk var", elbette, gelecek her dil için katil bir argüman. Bununla birlikte, küçük bir topluluk genellikle daha duyarlı ve yetkindir. (Java ile ilgili tüm notların gün boyunca SO'ya yazıldığına bakın ....)
Ingo

3

Java'da bulunmayan bazı güzel özelliklere sahiptir:

  1. Birleştirilmiş Jenerikler
  2. Tür Çıkarım
  3. Mixins (bu JDK8'de gelmesine rağmen)
  4. Birlik ve Kavşak türleri (gerçekten harika ve birçok dilde bulunmuyor)
  5. "Yüksek mertebeden fonksiyonlar" (birinci sınıf nesneler olarak işlev görmese de)
  6. Kapanışlar (JDK8'de de geliyor)

3. JDK8'deki defender yöntemleri, mixinlerin bazı işlevlerini sunabilir, ancak ne mixinlere ne de özelliklere yakındırlar. 4. Birlik ve kavşak tipleri benim için garip bir kavram. Katma değeri anlamakta sorun yaşıyorum. AFAIK, diğer iki arabirimi birleştiren bir arabirim tanımlamak zorunda kalmamanız durumunda, yalnızca bazı yazma çabalarından tasarruf etmenizi sağlar. Bunun dışında ben Java asla Scala / Kotlin / Ceylon / ikili geriye uyumluluk için bir sorun ne olursa olsun herhangi bir gelişmiş özelliği olmayacak eminim. Java'yı Ceylon'da olduğu gibi terk etmenin bir gerekçesi vardır.
OlliP

@OlliP Derleyicinin oluşturduğu tüm birleşim ve kavşak türlerini gerçekten tanımlamak istemezsiniz. Java'nın yalnızca genel argümanlar olarak kesişim türleri vardır. Sendika türlerini komik derleyici mesajlarına ("&" yakalama? ") Götüren bazı yaygın süper tiplere dönüştürür. Sendika türleri, hem Java null hem de isteğe bağlı olarak oldukça üstün olan nullabilite için de kullanılır.
maaartinus

2

Fark ettiğim kadarıyla, Seylan ve diğer "hobi tarafından oluşturulan" JVM dilleri arasındaki en büyük farklardan biri, bunun Red Hat / JBoss tarafından desteklenmesidir. Bu yüzden JBoss Tools / Developer Studio'ya entegre edilmiş gerçekten güzel bir takım seti, JBoss AS / Gatein Portal ve tüm Midleware / JEE 6 / BRMS ile iyi etkileşimler elde edecek. Yani bazı poinglerde JSF'de tam teşekküllü Seylan uygulamaları geliştirebilir, PHP "değişim ve yenileme döngüleri" ile çok verimli portletler ve ne olmaz.

Çoğu JVM tabanlı dil olarak, büyük kod tabanlarına ihtiyaç duyan projeler için Java'nın yerini almıyorum, ancak özellikle bir kez çok modüler olan (CRUD yoğun, portletler vb. ). Web dünyasında, özellikle JBoss hayranları tarafından çok iyi karşılanacağını düşünüyorum.


1
"Seylan ve diğer" hobi tarafından oluşturulan "JVM dilleri". Yani Scala ve Kotlin hobi tarafından yaratılmış dillerdir?
OlliP

Bir Seylan projesi oluştururken Seylan IDE'nin sizin için modül tanımları yaratma şeklinin Jigsaw için bir ilham kaynağı olduğunu düşünüyorum. Ceylon IDE, kullanıcının modülerleşmesini kolaylaştırır. OSGi ile, maven eklentileri ve çeşitli parametrelerle oynamak zorunda olduğunuz için çok hantal. Sanırım Oracle'daki Jigsaw insanları, Ceylon IDE'deki akıllı kullanıcı dostu araç entegrasyonunu fark edecek ve Jigsaw için benzer bir şey üretmeye çalışacaklar.
OlliP

1

Sanırım Seylan birçok yönden ilginç. Ve belki de Java'nın bazı problemlerini arkanızda bırakmak istiyorsanız, Java'dan bazı şekillerde ayrılmanız gerektiği şekilde haklısınız. Seylan'ın birkaç dil özelliği var gibi görünüyor ve umarım bu derleyiciyi Scala'da olduğu gibi yavaşlatır veya kod boyutuyla ölçeklenmeyen daha kötü neden oluşturma süreleri yapar (bkz. İki yıllık Scala deneyimi geri bildirimi ). Ceylon dev ekibinin hızı oldukça etkileyici.

Kotlin hala 0.6 ve geçen yılki gelişme hızına bakılırsa 1.0'dan bir yıl kadar uzakta diyebilirim. Seylan gibi pek çok dil özelliği yoktur (ancak bu önemli olanlar java özellikleri ve uzatma yöntemleri gibi eksiktir) ve problemleri olmadan daha fazla Scala gibi görünüyor. Ölçeklenebilir derleme süreleri bununla ilgili bir sorun olmayacak sanırım. Ancak Kotlin, Groovy gibi daha güzel bir Java olabilir. XML bağımlılığı, kaynak plakası kodu, bayt kodu manipülasyonu, vb. İle Java emtia programlamasından bir çıkış yolu sağlayamaz. Kotlin veya Ceylon'un bir fark yaratıp yaratamayacağı hala görülüyor. Her iki girişimin de çabaya değer olduğunu düşünüyorum ve ikisine de iyi şanslar diliyorum.


-2

Seylan, gelişimi sırasında, tüm büyük JVM dilleri (yani Groovy hariç yukarıda belirtilenler gibi) için bir spesifikasyon üretiyor ...

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

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

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

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

JRuby, Ruby'nin ödenmesi gereken spesifikasyonlarını takip eder (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.