Jakie są zalety Ceylonu nad Javą? [Zamknięte]

11

Szukając najnowszych i potężnych nadchodzących języków programowania w sieci, natknąłem się na Cejlon. Wpadłem na ceylon-lang.org i napisano:

Java ma duży wpływ na Cejlon. Widzicie, jesteśmy fanami Javy, ale znamy jej ograniczenia na wylot. Ceylon zachowuje najlepsze elementy Javy, ale ulepsza rzeczy, które z naszego doświadczenia są denerwujące, żmudne, frustrujące, trudne do zrozumienia lub podatne na błędy.

Jakie są zalety Ceylonu nad Javą?

Anuj Balan
źródło
1
Hmmmm, sprawdziłem na ich stronie i nie znalazłem przekonującego wyjaśnienia, dlaczego chciałbym przejść na Cejlona z Javy ... dość dobrze, wciąż są we wczesnej fazie, więc może nie chcą zbyt wcześnie podnosić szumu a potem rozczarowanie ...
Péter Török
1
Mmm, myślałem, że to jeszcze inny język nadgorliwego programisty (nie że nie ma w tym nic złego: P), ale widzę, że sława Gavina Króla Hibernacji jest w zespole, co jest uspokajające. Nadal nie wiem, kto wybrałby Cejlon zamiast innych języków, takich jak Scala, Groovy czy Clojure.
Andres F.,
1
@AndresF. wygląda na to, że to projekt Red Hat. Powinien uzasadniać pewną przyczepność, ale jak zawsze trudno powiedzieć, czy będzie ona utrzymywana tak długo, jak reszta z nas będzie chciała. Przez ostatnie 16 lat Java okazała się kompatybilna wstecz - to na razie ciężko pokonać.

Odpowiedzi:

27

Cejlon wydaje się fajnym, zabawnym językiem, ale twierdzę, że ma stosunkowo niewiele „zalet” w stosunku do Javy.

Myślę, że ma ładniejszą składnię i kilka bardziej „nowoczesnych” cech językowych - chociaż jest to subiektywne i uważam, że powinny być względnie niewielkie czynniki przy wyborze języka programowania.

Znacznie ważniejsze czynniki przy wyborze języka / platformy dla poważnego projektu:

  • Czy pozwala ci to rozwinąć się w lepszym paradygmacie dla danego problemu? (nie - Ceylon jest wyraźnie innym językiem w przepełnionej statycznie typowej przestrzeni OOP typu Java. Porównaj z np. Clojure, który jest ukierunkowany na funkcjonalną przestrzeń językową lub Groovy, który jest bardzo dynamicznym językiem OOP JVM, więc zajmują się różnymi niszami )
  • Czy ma lepszy ekosystem biblioteczny? (nie ma szans ... Java pod tym względem nie ma sobie równych. W najlepszym razie prawdopodobnie po prostu skorzystasz z bibliotek Java z Cejlonu)
  • Czy możesz zdobyć bardziej wykwalifikowanych programistów? (mało prawdopodobne, że niewiele osób korzysta obecnie z Cejlonu, a nawet gdyby to zrobiły, istniałaby duża krzywa uczenia się do zdobycia)
  • Czy ma lepsze narzędzia? (nie - narzędzia Java są bardzo wszechstronne i dojrzałe)
  • Czy to sprawia, że ​​jesteś bardziej produktywny? (dyskusyjne - ma kilka ciekawych funkcji językowych, ale w połączeniu z krzywą uczenia się i efektami narzędziowymi może się skończyć)
  • Czy zapewnia lepszą wydajność? (nie - JVM jest wyjątkowo dobrze zoptymalizowany pod kątem Javy, jest to trudne wezwanie dla jakiegokolwiek innego języka JVM, aby go pokonać. Scala zbliża się, ale to po wielu latach dostrajania ...)
  • Czy obsługuje więcej platform docelowych? (nie - jest to język JVM, dokładnie taki sam jak Java)
  • Czy kod będzie łatwiejszy w utrzymaniu? (prawdopodobnie nie - Java przetrwała tutaj próbę czasu właśnie dlatego, że jest stosunkowo stabilna, dojrzała i nie ma wielu zaawansowanych funkcji językowych, które mogłyby dezorientować przyszłych opiekunów)
  • Czy istnieje duża, aktywna i pomocna społeczność? (nie, przynajmniej nie w porównaniu z Javą lub innymi dużymi językami JVM, takimi jak Scala, Clojure, Groovy itp.)

Ogólnie rzecz biorąc, z pewnością zachęcam ludzi do eksperymentowania z Cejlonem i do zabawy z perspektywy uczenia się.

Ale obecnie nie widzę żadnych istotnych korzyści, które sprawiłyby, że wiele osób chciałoby się na nią przełączyć (lub wybrać ją przed innymi językami JVM, takimi jak Clojure, Scala, JRuby lub Groovy).

mikera
źródło
2
„czy obsługuje więcej platform docelowych?” TAK - możesz skompilować Ceylon do Javascript.
Chochos
1
Ponadto uważam, że twoja ocena niektórych punktów nie jest tak naprawdę ważna, ponieważ Ceylon jeszcze się nie skończył, więc nie ma sensu porównywać jej z innymi językami, które istnieją już od lat.
Chochos
5
@Chochos - możesz także skompilować Javę do JavaScript (robi to Google Web Toolkit), więc nie jest to nic oprócz tego, co robi Java. Zgadzam się, że Ceylon najwyraźniej nie jest ukończony, jednak uważam, że wszystkie moje punkty są teraz aktualne i jest mało prawdopodobne, że zmienią się one przynajmniej w ciągu najbliższych 5 lat (nawet jeśli zespół Ceylon dokończy wszystkie obecne plany).
mikera
1
@mikera Chochos ma całkowitą rację. Ceylon obsługuje kompilację do JS według projektu / natywnie. Można go również skompilować do kodu natywnego. Myślę, że to duża różnica, a potem „ktoś ma narzędzie, które robi to samo, jeśli ...”
Gundon
5
@mikera - „Jest tam duża społeczność” jest oczywiście zabójczym argumentem dla każdego nadchodzącego języka. To powiedziawszy, mała społeczność jest często bardziej responsywna i kompetentna. (Spójrz, co tam napisano o Jawie przez cały dzień w SO ....)
Ingo
3

Ma kilka ciekawych funkcji, których nie znaleziono w Javie:

  1. Reified Generics
  2. Wnioskowanie typu
  3. Mixiny (chociaż będzie to w JDK8)
  4. Typy zjazdów i skrzyżowań (co jest naprawdę fajne i nie występuje w wielu językach)
  5. „Funkcje wyższego rzędu” (choć nie całkiem funkcjonują jako obiekty pierwszej klasy)
  6. Zamknięcia (również w JDK8)
MebAlone
źródło
3. Metody Defender w JDK8 mogą dostarczyć niektóre funkcje mixin, ale nie są zbliżone do mixin ani cech. 4. Typy złączy i skrzyżowań są dla mnie dziwną koncepcją. Mam problemy ze zrozumieniem wartości dodanej. AFAIK oszczędza tylko trochę pisania na klawiaturze, gdy nie trzeba definiować interfejsu, który łączy dwa inne interfejsy. Poza tym jestem pewien, że Java nigdy nie będzie mieć żadnej zaawansowanej funkcji w Scali / Kotlin / Ceylon / czymkolwiek, co stanowi problem z kompatybilnością wsteczną binarną. Tak więc porzucenie Javy jak na Cejlonie ma pewne uzasadnienie.
OlliP,
@OlliP Naprawdę nie chciałbyś definiować wszystkich typów połączeń i przecięć generowanych przez kompilator. Java ma typy przecięć, ale tylko jako ogólne argumenty. Konwertuje typy unii na niektóre popularne nadtypy, co prowadzi do śmiesznych komunikatów kompilatora („& capture of?”). Typy Unii są również używane do dopuszczania wartości zerowej, która jest znacznie lepsza zarówno od Java null, jak i opcjonalnie.
maaartinus
2

O ile zauważyłem, jedną z największych różnic między Ceylonem i innymi „tworzonymi przez hobby” językami JVM jest to, że będzie wspierany przez Red Hat / JBoss. Dostanie więc naprawdę fajny zestaw narzędzi zintegrowany z JBoss Tools / Developer Studio, dobre interakcje z JBoss AS / Gatein Portal i całym oprogramowaniem Midleware / JEE 6 / BRMS. Możesz więc w pewnym momencie opracować pełnoprawne aplikacje Ceylon w JSF, bardzo produktywne portlety z PHP „cyklami zmiany i odświeżania”, a co nie.

Jak większość języków opartych na JVM, nie widzę go jako zamiennika dla Javy dla projektów wymagających ogromnych baz kodu, ale dla niektórych małych i średnich projektów, szczególnie tych, które są bardzo modułowe (jak na przykład intensywne CRUD, portlety itp. ). Myślę, że zostanie bardzo dobrze przyjęty w sieci, szczególnie przez fanów JBoss.

Eduard Korenschi
źródło
1
„Ceylon i inne” stworzone przez hobby „języki JVM”. Więc Scala i Kotlin to języki tworzone przez hobby?
OlliP
Myślę, że sposób, w jaki Ceylon IDE tworzy dla ciebie definicje modułów podczas tworzenia projektu Ceylon, jest inspiracją dla Jigsaw. Ceylon IDE ułatwia użytkownikowi modularyzację. Z OSGi jest to bardzo kłopotliwe, ponieważ musisz bawić się wtyczkami maven i różnymi parametrami. Sądzę, że pracownicy Jigsaw w Oracle zauważą inteligentną, przyjazną dla użytkownika integrację narzędzi w Ceylon IDE i spróbują stworzyć coś podobnego dla Jigsaw.
OlliP
1

Myślę, że Cejlon jest interesujący na wiele sposobów. A może są w pewnym sensie takie, że musisz w jakiś sposób odejść od Javy, jeśli chcesz zostawić za sobą pewne problemy z Javą. Wydaje się, że Ceylon ma całkiem sporo funkcji językowych i mam nadzieję, że spowoduje to spowolnienie kompilatora, podobnie jak w Scali, lub nawet gorzej, ponieważ czasy kompilacji nie skalują się wraz z rozmiarem kodu (zobacz Informacje zwrotne na temat dwóch lat Scali ). Tempo zespołu deweloperów z Cejlonu jest imponujące.

Kotlin ma wciąż 0,6 i sądząc po ich tempie rozwoju w ubiegłym roku, powiedziałbym, że dzieli go o rok od 1,0. Nie ma tak wielu cech językowych jak Ceylon (ale tych ważnych java brakuje, takich jak cechy i metody rozszerzenia) i wydaje się być bardziej rodzajem Scali bez problemów. Wydaje mi się, że skalowalne czasy kompilacji nie będą z tym problemem. Ale Kotlin może być tylko ładniejszą Javą jak Groovy. Nie jest w stanie wyjść z programowania towarów Java z zależnościami XML, kodami podstawowymi, manipulowaniem kodem bajtowym itp. Jest to coś takiego jak Java i Scala wykonane poprawnie. Nie wiadomo, czy Kotlin czy Cejlon będą w stanie coś zmienić. Myślę, że obie próby są warte wysiłku i życzę im powodzenia.

OlliP
źródło
-2

Ceylon opracowuje specyfikację podczas opracowywania, podobnie jak wszystkie duże języki JVM (tj. Wszystkie wymienione powyżej oprócz 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 postępuje zgodnie ze specyfikacją Ruby, za którą należy zapłacić (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Vorg van Geir
źródło