ข้อดีของ Ceylon เหนือ Java คืออะไร [ปิด]


11

มองหาภาษาโปรแกรมที่กำลังจะมาถึงเร็ว ๆ นี้และผ่านเน็ตฉันเจอ Ceylon ฉันไปที่ceylon-lang.orgและมันบอกว่า:

Ceylon ได้รับอิทธิพลจาก Java อย่างลึกซึ้ง คุณจะเห็นว่าเราเป็นแฟนของ Java แต่เรารู้ว่าข้อ จำกัด นั้นอยู่ข้างใน Ceylon รักษาส่วนที่ดีที่สุดของ Java ไว้ แต่ปรับปรุงสิ่งต่าง ๆ ที่ในประสบการณ์ของเรานั้นน่ารำคาญ, น่าเบื่อ, หงุดหงิด, ยากที่จะเข้าใจหรือ bugprone

ข้อดีของ Ceylon เหนือ Java คืออะไร


1
อืมฉันตรวจสอบไซต์ของพวกเขาแล้วและไม่พบคำอธิบายที่น่าสนใจว่าทำไมฉันถึงต้องการเปลี่ยนมาใช้ Ceylon จาก Java ... ยุติธรรมพอพวกเขายังอยู่ในช่วงแรกดังนั้นบางทีพวกเขาอาจไม่ต้องการเพิ่ม hype เร็วเกินไป และจากนั้นก็ผิดหวัง ...
PéterTörök

1
อืมฉันคิดว่ามันเป็นอีกภาษาหนึ่งโดยโปรแกรมเมอร์ overenthusiastic (ไม่ใช่ว่ามีอะไรผิดปกติกับเรื่องนี้: P) แต่ฉันเห็นว่าชื่อเสียงของ Gavin King of Hibernate อยู่ในทีมซึ่งกำลังทำให้มั่นใจ ถึงกระนั้นฉันก็ยังไม่เห็นว่าใครจะเลือกประเทศศรีลังกากับภาษาอื่น ๆ เช่น Scala, Groovy หรือ Clojure
Andres F.

1
ที่เกี่ยวข้อง: programmers.stackexchange.com/questions/117561/ …
Joachim Sauer

1
@AndresF ดูเหมือนว่าจะเป็นโครงการ Red Hat ควรรับประกันการลาก แต่ก็เป็นเรื่องยากที่จะบอกว่าจะรักษาได้นานเท่าที่เราต้องการ Java ได้พิสูจน์แล้วว่าสามารถใช้งานได้ย้อนหลังในช่วง 16 ปีที่ผ่านมาซึ่งยากที่จะเอาชนะได้ในตอนนี้

คำตอบ:


27

Ceylon ดูเหมือนจะเป็นภาษาที่สนุก แต่ฉันก็เถียงว่ามันมี "ข้อดี" ค่อนข้างน้อยใน Java

ฉันคิดว่ามันมีไวยากรณ์ที่ดีกว่าและมีคุณสมบัติภาษา "ทันสมัย" มากกว่านี้ - แม้ว่านี่จะเป็นแบบอัตนัยและฉันก็เถียงว่าควรมีปัจจัยเล็กน้อยในการเลือกภาษาการเขียนโปรแกรม

ปัจจัยสำคัญอื่น ๆ อีกมากมายเมื่อเลือกภาษา / แพลตฟอร์มสำหรับโครงการที่จริงจัง:

  • มันช่วยให้คุณพัฒนาในกระบวนทัศน์ที่ดีขึ้นสำหรับปัญหาที่คุณได้รับหรือไม่? (ไม่ - Ceylon เป็นภาษาอื่นอย่างชัดเจนในพื้นที่ OOP แบบ Java-like แบบคงที่แบบ over-crowded ตรงกันข้ามกับเช่น Clojure ซึ่งกำหนดเป้าหมายพื้นที่ภาษาที่ใช้งานได้หรือ Groovy ซึ่งเป็นภาษา OOP JVM แบบไดนามิกมาก )
  • มันมีระบบนิเวศห้องสมุดที่ดีขึ้นหรือไม่? (ไม่มีโอกาส .... Java ไม่ตรงกันในเรื่องนี้ที่ดีที่สุดคุณอาจจะลงเอยด้วยการใช้ห้องสมุด Java จาก Ceylon)
  • คุณจะได้นักพัฒนาที่มีทักษะมากกว่านี้ไหม? (ไม่น่าเป็นไปได้มีเพียงไม่กี่คนที่ใช้ Ceylon และแม้ว่าพวกเขาจะมีช่วงการเรียนรู้ขนาดใหญ่ที่จะปีนขึ้นไป)
  • มันมีเครื่องมือที่ดีกว่านี้ไหม? (ไม่ - การใช้เครื่องมือ Java นั้นครอบคลุมและเป็นผู้ใหญ่มาก)
  • มันทำให้คุณมีประสิทธิผลมากขึ้นหรือไม่? (เป็นที่ถกเถียงกัน - มันมีคุณสมบัติทางภาษาที่ดีบางอย่าง แต่เมื่อรวมกับช่วงการเรียนรู้และเอฟเฟกต์เครื่องมือที่จริงแล้วมันอาจจะอยู่ข้างหลัง)
  • มันให้ประสิทธิภาพที่ดีขึ้นหรือไม่? (ไม่ - JVM เหมาะอย่างยิ่งสำหรับ Java มันเป็นการเรียกที่ยากสำหรับภาษา JVM อื่น ๆ ที่จะเอาชนะมัน Scala เข้ามาใกล้ แต่นั่นก็หลังจากปรับจูนมาหลายปี ... )
  • รองรับแพลตฟอร์มเป้าหมายมากกว่าหรือไม่ (ไม่ - เป็นภาษา JVM เหมือนกับ Java)
  • รหัสจะสามารถบำรุงรักษาได้มากขึ้นหรือไม่ (อาจไม่ใช่ - Java ได้ทดสอบเวลาอย่างแม่นยำเนื่องจากค่อนข้างเสถียรเป็นผู้ใหญ่และไม่มีคุณสมบัติภาษาขั้นสูงจำนวนมากที่อาจทำให้ผู้ดูแลระบบสับสนในอนาคต)
  • มีชุมชนขนาดใหญ่ใช้งานและเป็นประโยชน์หรือไม่ (ไม่อย่างน้อยไม่เทียบกับ Java หรือภาษา JVM ขนาดใหญ่อื่น ๆ เช่น Scala, Clojure, Groovy เป็นต้น)

โดยรวมแล้วฉันขอแนะนำให้ผู้คนทดลองใช้ Ceylon และสนุกกับมันจากมุมมองการเรียนรู้

แต่ในปัจจุบันฉันไม่เห็นข้อได้เปรียบที่น่าสนใจใด ๆ ที่จะทำให้ผู้คนจำนวนมากต้องการเปลี่ยนมาใช้ภาษานั้น (หรือเลือกก่อนภาษา JVM อื่น ๆ เช่น Clojure, Scala, JRuby หรือ Groovy)


2
"รองรับแพลตฟอร์มเป้าหมายมากกว่านี้หรือไม่" ใช่ - คุณสามารถรวบรวม Ceylon ไปยัง Javascript
Chochos

1
นอกจากนี้ฉันคิดว่าการประเมินบางประเด็นของคุณไม่ถูกต้องเนื่องจาก Ceylon ยังไม่เสร็จดังนั้นจึงไม่มีประเด็นที่จะเปรียบเทียบกับภาษาอื่น ๆ ที่มีมานานหลายปีแล้ว
Chochos

5
@Chochos - คุณยังสามารถรวบรวม Java เป็น JavaScript (Google Web Toolkit ทำสิ่งนี้) ดังนั้นจึงไม่มีอะไรนอกเหนือจากสิ่งที่ Java ทำ ฉันเห็นว่า Ceylon ไม่ชัดเจน แต่ฉันคิดว่าคะแนนทั้งหมดของฉันใช้ได้ในขณะนี้และไม่น่าจะเปลี่ยนแปลงในอีก 5 ปีข้างหน้าอย่างน้อย (แม้ว่าทีม Ceylon จะเสร็จสิ้นแผนการทำงานปัจจุบันทั้งหมด)
mikera

1
@mikera Chochos ถูกต้องแล้ว Ceylon สนับสนุนการรวบรวม JS โดยการออกแบบ / ดั้งเดิม มันยังสามารถรวบรวมเป็นรหัสพื้นเมือง ฉันคิดว่านี่เป็นความแตกต่างที่ยิ่งใหญ่ "มีบางเครื่องมือโดยคนที่ทำเช่นเดียวกันถ้า .. "
Gundon

5
@mikera - "จะมีชุมชนขนาดใหญ่" แน่นอนอาร์กิวเมนต์นักฆ่าสำหรับแต่ละภาษาที่จะเกิดขึ้น ชุมชนเล็ก ๆ มักตอบสนองและมีความสามารถมากกว่า (ดูสิ่งที่เศษที่เกี่ยวข้องกับ Java เขียนทุกวันที่นั่นดังนั้น .... )
Ingo

3

มันมีคุณสมบัติที่ดีบางอย่างที่ไม่พบใน java:

  1. ยาสามัญประจำการ
  2. การอนุมานประเภท
  3. Mixins (แม้ว่าจะมีใน JDK8)
  4. ประเภท Union และ Intersection (ซึ่งเจ๋งมากและไม่พบในหลายภาษา)
  5. "ฟังก์ชั่นการสั่งซื้อที่สูงขึ้น" (แม้ว่าจะไม่ได้ทำหน้าที่ค่อนข้างเป็นวัตถุชั้นหนึ่ง)
  6. การปิด (เช่นมาใน JDK8)

3. วิธีการป้องกันใน JDK8 สามารถนำเสนอฟังก์ชั่นการทำงานของมิกซ์อินได้บ้าง แต่ก็ไม่ได้ใกล้เคียงกับมิกซ์อินและคุณลักษณะ 4. ประเภทยูเนี่ยนและทางแยกเป็นแนวคิดที่แปลกสำหรับฉัน ฉันมีปัญหาในการเข้าใจมูลค่าเพิ่ม AFAIK ช่วยให้คุณประหยัดความพยายามในการพิมพ์เมื่อไม่จำเป็นต้องกำหนดอินเทอร์เฟซที่รวมสองอินเทอร์เฟซอื่น ๆ นอกเหนือจากนั้นฉันแน่ใจว่า Java จะไม่มีคุณสมบัติขั้นสูงใด ๆ ที่พบใน Scala / Kotlin / Ceylon / อะไรก็ตามที่เป็นปัญหาสำหรับความเข้ากันได้ของไบนารีย้อนหลัง ดังนั้นการละทิ้ง Java เหมือนกับ Ceylon จึงมีเหตุผลบางประการ
OlliP

@OlliP จริง ๆ แล้วคุณไม่ต้องการที่จะกำหนดสหภาพและประเภทจุดตัดทั้งหมดที่คอมไพเลอร์สร้างขึ้น Java มีประเภทการแยก แต่เป็นอาร์กิวเมนต์ทั่วไปเท่านั้น มันจะแปลงประเภทยูเนี่ยนเป็น supertype ทั่วไปซึ่งนำไปสู่ข้อความคอมไพเลอร์ตลก ("& การจับภาพของ") ประเภทของยูเนี่ยนยังใช้เป็นโมฆะซึ่งค่อนข้างเหนือกว่าทั้ง Java null และเป็นทางเลือก
maaartinus

2

เท่าที่ฉันสังเกตเห็นหนึ่งในความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่าง Ceylon และภาษา JVM "ที่สร้างโดยงานอดิเรก" อื่น ๆ คือมันจะได้รับการสนับสนุนโดย Red Hat / JBoss ดังนั้นมันจะได้รับชุดเครื่องมือที่ดีจริงๆรวมเข้ากับ JBoss Tools / Developer Studio การโต้ตอบที่ดีกับ JBoss AS / Gatein Portal และ Midleware / JEE 6 / BRMS ทั้งหมด ดังนั้นในบางครั้งคุณอาจพัฒนาแอปพลิเคชั่น Ceylon ที่มีคุณสมบัติครบถ้วนใน JSF, พอร์ตเล็ตที่มีประสิทธิภาพมากด้วย PHP "การเปลี่ยนแปลงและรีเฟรชรอบ" และสิ่งที่ไม่

ในฐานะที่เป็นภาษาที่ใช้ JVM ส่วนใหญ่ฉันไม่คิดว่ามันจะใช้แทน Java สำหรับโปรเจ็กต์ที่ต้องการโค้ดฐานขนาดใหญ่ แต่สำหรับบางโปรเจ็กต์ขนาดเล็กถึงขนาดกลาง ) ฉันคิดว่ามันจะได้รับการตอบรับเป็นอย่างดีในโลกเว็บโดยเฉพาะอย่างยิ่งแฟน ๆ JBoss


1
"Ceylon และอื่น ๆ " ที่สร้างโดย JVM languages ​​"งานอดิเรก" ดังนั้น Scala และ Kotlin เป็นภาษาที่สร้างขึ้นด้วยงานอดิเรก?
OlliP

ฉันคิดว่าวิธีที่ Ceylon IDE สร้างคำนิยามโมดูลสำหรับคุณเมื่อคุณสร้างโครงการ Ceylon เป็นแรงบันดาลใจสำหรับจิ๊กซอว์ Ceylon IDE ทำให้ผู้ใช้สามารถทำให้เป็นโมดูลได้ง่าย ด้วย OSGi คุณจะต้องยุ่งยากกับ maven plugins และพารามิเตอร์ต่างๆ ฉันเดาว่าคนจิ๊กซอว์ที่ Oracle จะสังเกตเห็นการรวมเครื่องมือที่ใช้งานง่ายอย่างชาญฉลาดใน Ceylon IDE และพยายามผลิตสิ่งที่คล้ายกับจิ๊กซอว์
OlliP

1

ฉันคิดว่าศรีลังกาน่าสนใจในหลาย ๆ ด้าน และบางทีพวกเขาก็ถูกต้องในแบบที่คุณต้องการออกจาก Java ในบางวิธีถ้าคุณต้องการทิ้งปัญหาของ Java ไว้ข้างหลังคุณ ดูเหมือนว่า Ceylon จะมีคุณสมบัติภาษาไม่กี่อย่างและฉันหวังว่าสิ่งนี้จะทำให้คอมไพเลอร์ทำงานช้าเช่นเดียวกับใน Scala หรือยิ่งทำให้เกิดเวลาที่ไม่ได้ปรับขนาดด้วยขนาดโค้ด (ดูข้อเสนอแนะประสบการณ์ Scala สองปี ) จังหวะของทีม Ceylon dev นั้นค่อนข้างน่าประทับใจ

Kotlin ยังคงเป็น 0.6 และตัดสินจากความเร็วการพัฒนาของพวกเขาในปีที่แล้วฉันจะพูดประมาณหนึ่งปีห่างจาก 1.0 มันไม่ได้มีคุณสมบัติหลายภาษาเช่น Ceylon (แต่ Java ที่สำคัญเหล่านั้นหายไปเช่นลักษณะและวิธีการขยาย) และดูเหมือนว่าจะเป็น Scala บางประเภทมากขึ้นโดยไม่มีปัญหาของมัน ฉันเดาว่าเวลาสร้างที่ปรับขนาดได้จะไม่มีปัญหากับมัน แต่ Kotlin สามารถเป็นจาวาที่ดีกว่าอย่าง Groovy เท่านั้น ไม่สามารถให้ทางออกของการเขียนโปรแกรมชุดคำสั่ง Java ที่มีการพึ่งพา XML, รหัสสำเร็จรูป, การจัดการโค้ดไบต์ ฯลฯ มันเป็นสิ่งที่ Java และ Scala ทำถูกต้อง ไม่ว่า Kotlin หรือ Ceylon จะสามารถสร้างความแตกต่างได้หรือไม่ ฉันคิดว่าความพยายามทั้งสองมีค่าความพยายามและฉันหวังว่าพวกเขาทั้งสองโชคดี


-2

Ceylon กำลังสร้างสเปคในระหว่างการพัฒนาเช่นเดียวกับภาษา JVM ขนาดใหญ่ทั้งหมด (เช่นที่กล่าวถึงข้างต้นทั้งหมดยกเว้น 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 ปฏิบัติตามข้อกำหนดของ 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.