Những lợi thế của Ceylon so với Java là gì? [đóng cửa]


11

Tìm kiếm các ngôn ngữ lập trình sắp tới và mạnh mẽ trên mạng, tôi đã tìm thấy Ceylon. Tôi ghé vào tại ceylon-lang.org và nó nói:

Ceylon chịu ảnh hưởng sâu sắc của Java. Bạn thấy đấy, chúng tôi là người hâm mộ Java, nhưng chúng tôi biết những hạn chế của nó. Ceylon giữ các bit tốt nhất của Java nhưng cải thiện những thứ mà theo kinh nghiệm của chúng tôi là phiền phức, tẻ nhạt, bực bội, khó hiểu hoặc bugprone.

Những lợi thế của Ceylon so với Java là gì?


1
Hmmmm, tôi đã kiểm tra xung quanh trang web của họ và không tìm thấy lời giải thích thuyết phục nào về lý do tại sao tôi muốn chuyển sang Ceylon từ Java ... đủ công bằng, họ vẫn đang trong giai đoạn đầu, vì vậy có lẽ họ không muốn tăng cường quá sớm và rồi thất vọng ...
Péter Török

1
Mmm, tôi nghĩ đó là một ngôn ngữ khác bởi một lập trình viên nhiệt tình (không phải là có gì sai với điều đó: P), nhưng tôi thấy sự nổi tiếng của Gavin King of Hibernate trong đội, điều này rất yên tâm. Tuy nhiên, tôi không thấy ai sẽ chọn Ceylon hơn các ngôn ngữ khác như Scala, Groovy hoặc Clojure.
Andres F.


1
@AresresF. Có vẻ như đó là một dự án Red Hat. Nên đảm bảo một số lực kéo, nhưng như mọi khi, thật khó để nói nếu điều này sẽ được duy trì miễn là phần còn lại của chúng tôi muốn. Java đã được chứng minh là tương thích ngược trong 16 năm qua - hiện tại rất khó để đánh bại.

Câu trả lời:


27

Ceylon có vẻ như là một ngôn ngữ vui vẻ thú vị nhưng tôi cho rằng nó có tương đối ít "lợi thế" so với Java.

Tôi nghĩ rằng nó có cú pháp đẹp hơn và một số tính năng ngôn ngữ "hiện đại" hơn - mặc dù điều này là chủ quan và tôi cho rằng nên là yếu tố tương đối nhỏ trong việc chọn ngôn ngữ lập trình.

Các yếu tố quan trọng hơn nhiều khi chọn ngôn ngữ / nền tảng cho một dự án nghiêm túc:

  • Nó có cho phép bạn phát triển theo mô hình tốt hơn cho vấn đề của bạn không? (không - Ceylon rõ ràng là một ngôn ngữ khác trong không gian OOP giống như Java được gõ quá mức tĩnh. )
  • Nó có một hệ sinh thái thư viện tốt hơn? (không có cơ hội .... Java là vô song về vấn đề này. Tốt nhất là bạn có thể sẽ kết thúc bằng cách sử dụng các thư viện Java từ Ceylon)
  • Bạn có thể có được các nhà phát triển lành nghề hơn? (không có khả năng, rất ít người hiện đang sử dụng Ceylon và ngay cả khi họ đã có một đường cong học tập lớn để leo lên)
  • Nó có công cụ tốt hơn không? (không - công cụ Java rất toàn diện và trưởng thành)
  • Nó làm cho bạn năng suất hơn? (gây tranh cãi - nó có một số tính năng ngôn ngữ hiệu quả tốt, nhưng kết hợp với đường cong học tập và hiệu ứng công cụ mà nó thực sự có thể kết thúc phía sau)
  • Nó cung cấp hiệu suất tốt hơn? (không - JVM được tối ưu hóa rất tốt cho Java, đó là một lời kêu gọi khó khăn đối với bất kỳ ngôn ngữ JVM nào khác để đánh bại nó. Scala đến gần, nhưng đó là sau nhiều năm điều chỉnh ...)
  • Nó có hỗ trợ nhiều nền tảng mục tiêu hơn không? (không - đó là ngôn ngữ JVM hoàn toàn giống với Java)
  • Là mã sẽ được duy trì nhiều hơn? (có lẽ là không - Java đã đứng trước thử thách của thời gian ở đây vì nó tương đối ổn định, trưởng thành và không có nhiều tính năng ngôn ngữ nâng cao có thể gây nhầm lẫn cho các nhà duy trì trong tương lai)
  • Có một cộng đồng lớn, tích cực và hữu ích? (không, ít nhất là không được so sánh với Java hoặc các ngôn ngữ JVM lớn khác như Scala, Clojure, Groovy, v.v.)

Nhìn chung, tôi chắc chắn khuyến khích mọi người thử nghiệm với Ceylon và vui chơi với nó từ góc độ học tập.

Nhưng hiện tại tôi không thấy bất kỳ lợi thế hấp dẫn nào sẽ khiến một số lượng lớn người muốn chuyển sang sử dụng nó (hoặc chọn nó trước các ngôn ngữ JVM khác như Clojure, Scala, JRuby hoặc Groovy).


2
"nó có hỗ trợ nhiều nền tảng mục tiêu hơn không?" CÓ - bạn có thể biên dịch Ceylon thành Javascript.
Chochos

1
Ngoài ra, tôi nghĩ rằng đánh giá của bạn về một số điểm chưa thực sự hợp lệ vì Ceylon thậm chí còn chưa kết thúc, vì vậy không có điểm nào để so sánh nó với các ngôn ngữ khác đã tồn tại trong nhiều năm nay.
Chochos

5
@Chochos - bạn cũng có thể biên dịch Java thành JavaScript (Bộ công cụ web của Google thực hiện việc này) để không có gì ngoài Java làm gì. Tôi đồng ý rằng Ceylon rõ ràng vẫn chưa kết thúc, tuy nhiên tôi nghĩ rằng tất cả các điểm của tôi hiện tại đều hợp lệ và ít có khả năng thay đổi trong ít nhất 5 năm tới (ngay cả khi nhóm Ceylon hoàn thành tất cả lộ trình hiện tại của họ).
mikera

1
@mikera Chochos là hoàn toàn đúng. Ceylon không hỗ trợ biên dịch sang JS theo thiết kế / nguyên bản. Nó cũng có thể được biên dịch thành mã gốc. Tôi nghĩ rằng đây là một sự khác biệt lớn sau đó "có một công cụ, bởi một người nào đó, cũng làm như vậy, nếu .."
Gundon

5
@mikera - "Có một cộng đồng lớn", tất nhiên, là một đối số giết người cho mỗi ngôn ngữ sắp tới. Điều đó đang được nói, một cộng đồng nhỏ thường phản ứng nhanh hơn và có thẩm quyền. (Hãy xem những gì phế liệu liên quan đến Java được viết cả ngày ở đó tại SO ....)
Ingo

3

Nó có một số tính năng hay không có trong java:

  1. Thế hệ thống nhất
  2. Kiểu suy luận
  3. Mixins (mặc dù điều này sẽ có trong JDK8)
  4. Các loại Liên minh và Giao lộ (thực sự thú vị và không tìm thấy trong nhiều ngôn ngữ)
  5. "Hàm bậc cao hơn" (mặc dù không hoàn toàn là hàm như đối tượng hạng nhất)
  6. Đóng cửa (cũng đến trong JDK8)

3. Các phương thức bảo vệ trong JDK8 có thể cung cấp một số chức năng của mixin, nhưng chúng không gần với mixin hay đặc điểm. 4. Các loại liên minh và giao lộ là một khái niệm kỳ lạ với tôi. Tôi có vấn đề để hiểu giá trị gia tăng. AFAIK nó chỉ giúp bạn tiết kiệm một số nỗ lực gõ khi không phải xác định giao diện kết hợp hai giao diện khác. Ngoài ra, tôi chắc chắn rằng Java sẽ không bao giờ có bất kỳ tính năng nâng cao nào được tìm thấy trong Scala / Kotlin / Ceylon / bất cứ điều gì có vấn đề về khả năng tương thích ngược nhị phân. Vì vậy, từ bỏ Java như với Ceylon có một số biện minh.
OlliP

@OlliP Bạn thực sự không muốn xác định tất cả các loại kết hợp và giao nhau mà trình biên dịch tạo ra. Java có các kiểu giao nhau, nhưng chỉ là các đối số chung. Nó chuyển đổi các loại kết hợp thành một số siêu kiểu phổ biến, dẫn đến các thông điệp trình biên dịch vui nhộn ("& nắm bắt?"). Các loại liên minh cũng được sử dụng cho tính không hợp lệ, khá vượt trội so với cả Java null và tùy chọn.
maaartinus

2

Theo như tôi nhận thấy, một trong những khác biệt lớn nhất giữa Ceylon và các ngôn ngữ JVM "do sở thích" khác là nó sẽ được hỗ trợ bởi Red Hat / JBoss. Vì vậy, nó sẽ có được một bộ công cụ thực sự tốt được tích hợp vào JBoss Tools / Developer Studio, tương tác tốt với JBoss AS / Gatein Portal và tất cả Midleware / JEE 6 / BRMS. Vì vậy, một số bạn có thể phát triển các ứng dụng Ceylon chính thức trong JSF, các portlet rất hiệu quả với "chu kỳ thay đổi và làm mới" PHP và những gì không.

Như hầu hết các ngôn ngữ dựa trên JVM, tôi không thấy nó là sự thay thế cho Java cho các dự án cần cơ sở mã lớn, nhưng đối với một số dự án cỡ nhỏ đến trung bình, đặc biệt là một khi rất mô đun (như CRUD, portlets, v.v. ). Tôi nghĩ rằng nó sẽ được đón nhận cực kỳ tốt trong thế giới web, đặc biệt là bởi những người hâm mộ JBoss.


1
"Ceylon và các ngôn ngữ JVM" do sở thích tạo ra "khác. Vậy Scala và Kotlin là ngôn ngữ do sở thích tạo ra?
OlliP

Tôi nghĩ rằng cách mà Ceylon IDE tạo ra các định nghĩa mô-đun cho bạn khi bạn tạo một dự án Ceylon là một nguồn cảm hứng cho Jigsaw. Chúng Ceylon IDE giúp người dùng dễ dàng mô đun hóa. Với OSGi, nó rất cồng kềnh khi bạn phải chơi xung quanh với các plugin maven và các thông số khác nhau. Tôi đoán những người Jigsaw ở Oracle sẽ chú ý đến việc tích hợp công cụ thân thiện với người dùng thông minh trong Ceylon IDE và cố gắng tạo ra thứ gì đó tương tự cho Jigsaw.
OlliP

1

Tôi nghĩ Ceylon thú vị theo nhiều cách. Và có lẽ họ đúng theo cách mà bạn cần phải rời khỏi Java theo một số cách nếu bạn muốn để lại một số vấn đề về Java phía sau bạn. Ceylon dường như có khá nhiều tính năng ngôn ngữ và tôi hy vọng điều này sẽ khiến trình biên dịch bị chậm như trong Scala hoặc thậm chí tệ hơn là thời gian xây dựng không mở rộng theo kích thước mã (xem Hai năm phản hồi về trải nghiệm Scala ). Tốc độ của đội dev Ceylon khá ấn tượng.

Kotlin vẫn là 0,6 và, đánh giá từ tốc độ phát triển của họ trong năm ngoái, tôi sẽ nói khoảng một năm nữa là từ 1.0. Nó không có nhiều tính năng ngôn ngữ như Ceylon (nhưng những tính năng quan trọng mà java thiếu như các đặc điểm và phương thức mở rộng) và dường như là một loại Scala hơn mà không gặp vấn đề gì. Tôi đoán thời gian xây dựng có thể mở rộng sẽ không là vấn đề với nó. Nhưng Kotlin chỉ có thể là một Java đẹp hơn như Groovy. Nó không thể cung cấp một lối thoát khỏi lập trình hàng hóa Java với sự phụ thuộc XML, mã soạn sẵn, thao tác mã byte, v.v. Đó là một cái gì đó giống như Java và Scala được thực hiện đúng. Cho dù Kotlin hay Ceylon sẽ có thể tạo ra sự khác biệt vẫn được nhìn thấy. Tôi nghĩ cả hai nỗ lực đều đáng để nỗ lực và tôi chúc cả hai may mắn.


-2

Ceylon đang tạo ra một đặc tả trong quá trình phát triển của nó, giống như tất cả các ngôn ngữ JVM lớn (tức là tất cả những ngôn ngữ được đề cập ở trên trừ 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 tuân theo thông số kỹ thuật của Ruby phải được trả tiền (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htmlm?csnumber=59579).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.