Які переваги Цейлону над Java? [зачинено]


11

Шукаючи останні чи потужні майбутні мови програмування через мережу, я натрапив на Цейлон. Я зайшов на ceylon-lang.org, і на ньому написано:

На Цейлон глибоко впливає Java. Розумієте, ми шанувальники Java, але ми знаємо її обмеження зсередини. Цейлон зберігає найкращі шматочки Java, але покращує речі, які, на наш досвід, дратівливі, виснажливі, засмучуючі, важкі для розуміння чи помилки.

Які переваги Цейлону над Java?


1
Гмммм, я перевірив їхній сайт і не знайшов переконливих пояснень, чому я хотів би перейти на Цейлон з Java ... досить справедливо, вони ще на ранній фазі, тому, можливо, вони не хочуть занадто рано піднімати ажіотаж а потім розчаруйте ...
Петер Тьорьк

1
Ммм, я подумав, що це ще одна мова надмірного музичного програміста (не те, що в цьому немає нічого поганого: P), але я бачу, що в команді є слава Гевіна Кінга Гібернату, що заспокоює. Проте я не бачу, хто б обрав цейлон на інших мовах, таких як Scala, Groovy або Clojure.
Андрес Ф.


1
@AndresF. схоже, це проект Red Hat. Потрібно мати певну тягу, але, як завжди, важко сказати, чи збережеться це до тих пір, як нам хочеться. Java виявилася зворотною сумісністю за останні 16 років - це зараз важко перемогти.

Відповіді:


27

Цейлон здається приємною мовою веселощів, але я стверджую, що у нього порівняно мало "переваг" перед Java.

Я думаю, що він має приємніший синтаксис та деякі більш "сучасні" мовні особливості - хоча це суб'єктивно, і я б заперечував, що це має бути відносно незначними факторами у виборі мови програмування.

Набагато важливіші фактори при виборі мови / платформи для серйозного проекту:

  • Чи дозволяє вам розвиватися в кращій парадигмі для даної проблеми? (ні - Цейлон очевидно є ще однією мовою у переповненому статично типовим простором OOP, подібному до Java. Контраст із, наприклад, Clojure, який орієнтується на функціональний мовний простір, або Groovy, який є дуже динамічною мовою JVM OOP, тому вони займаються різними нішами )
  • Чи покращилася екосистема бібліотеки? (немає шансів .... Java у цьому плані не має собі рівних. У кращому випадку ви, мабуть, просто в кінці використовуєте бібліотеки Java з Цейлону)
  • Чи можете ви отримати більш кваліфікованих розробників? (навряд чи, мало хто зараз використовує Цейлон, і навіть якби це було, велика крива навчання для сходження)
  • У нього є кращі інструменти? (ні - інструменти Java дуже всебічні та зрілі)
  • Це робить вас більш продуктивними? (дискусійний - він має деякі приємні продуктивні мовні особливості, але в поєднанні з навчальною кривою та інструментальними ефектами він може насправді закінчитися)
  • Чи забезпечує це кращі показники? (ні - JVM надзвичайно добре оптимізований для Java. Це важкий заклик перемогти її будь-якою іншою мовою JVM. Scala наближається, але це вже через багато років точної настройки ...)
  • Чи підтримує вона більше цільових платформ? (ні - мова JVM так само, як і Java)
  • Чи буде код більш ремонтопридатним? (мабуть, ні - Java витримала перевірку часу саме тому, що вона є відносно стабільною, зрілою та не має багато розширених мовних функцій, які можуть заплутати майбутніх утримувачів)
  • Чи існує велика, активна та корисна громада? (ні, принаймні не в порівнянні з Java або іншими великими мовами JVM, такими як Scala, Clojure, Groovy тощо)

Загалом я, безумовно, закликаю людей експериментувати з Цейлоном та отримувати задоволення від нього з точки зору навчання.

Але я зараз не бачу переконливих переваг, які б змусили велику кількість людей перейти на нього (або вибирати його попереду інших мов JVM, таких як Clojure, Scala, JRuby або Groovy).


2
"чи підтримує це більше цільових платформ?" ТАК - ви можете скласти цейлон у Javascript.
Чочос

1
Крім того, я вважаю, що ваша оцінка деяких пунктів не є дійсною, оскільки Цейлон ще не закінчений, тому немає сенсу порівнювати його з іншими мовами, які існують вже багато років.
Чочос

5
@Chochos - ви також можете компілювати Java в JavaScript (Google Web Toolkit робить це), так що це нічого, крім того, що робить Java. Я погоджуюсь, що Цейлон явно не закінчений, проте я думаю, що всі мої моменти є дійсними зараз і навряд чи вони зміняться принаймні протягом наступних 5 років (навіть якщо команда Цейлону закінчить усі свої поточні дорожні карти).
mikera

1
@mikera Chochos абсолютно прав. Цейлон підтримує компіляцію в JS за дизайном / вродженим способом. Він також може бути складений до рідного коду. Я думаю, що це велика різниця, то "десь є хтось інструмент, хтось робить це те саме, якщо .."
Гундон

5
@mikera - "Є чимала громада" - це, звичайно, вбивчий аргумент для кожної наступної мови. Незважаючи на це, невелика громада часто є більш чуйною та компетентною. (Подивіться, який брухт щодо Java написаний цілий день там, на SO ....)
Інго

3

Він має деякі приємні риси, які не знайдені у Java:

  1. Реіфіковані дженерики
  2. Введіть умовивід
  3. Міксини (хоча це є у JDK8)
  4. Типи союзу та перехрестя (що дійсно круто і не знайдено у багатьох мовах)
  5. "Функції вищого порядку" (хоча не зовсім функціонують як об'єкти першого класу)
  6. Закриття (також надходить у JDK8)

3. Методи Defender в JDK8 можуть забезпечити деяку функціональність міксинів, але вони не наближені ні до комбінацій, ні до ознак. 4. Типи з'єднання та перехрестя - для мене дивне поняття. У мене виникають проблеми з розумінням доданої вартості. AFAIK це лише економить певні зусилля, коли не потрібно визначати інтерфейс, який поєднує два інші інтерфейси. Крім того, я впевнений, що Java ніколи не матиме жодної розширеної функції, знайденої у Scala / Kotlin / Ceylon / будь-що, що є проблемою сумісності бінарних даних. Тому відмова від Java, як і з Цейлону, має певне виправдання.
OlliP

@OlliP Ви дійсно не хотіли б визначати всі типи об'єднання та перетину, які створює компілятор. Java має типи перетину, але лише як загальні аргументи. Він перетворює типи об'єднання в якийсь загальний супертип, що призводить до смішних повідомлень компілятора ("& захоплення?"). Типи союзів також використовуються для зведення нанівець, що досить перевершує як Java null, так і необов'язковий.
maaartinus

2

Наскільки я помітив, одна з найбільших різниць між Цейлоном та іншими мовами JVM, створених хобі, полягає в тому, що це підтримка Red Hat / JBoss. Таким чином, ви отримаєте дійсно приємний набір інструментів, інтегрований в JBoss Tools / Developer Studio, хороші взаємодії з JBoss AS / Gatein Portal та всім Midleware / JEE 6 / BRMS. Тож ви, можливо, в якийсь момент розроблятимете повноцінні цілонські додатки в JSF, дуже продуктивні портлети з PHP "змінюють та оновлюють цикли", а що ні.

Як і більшість мов, що базуються на JVM, я не вважаю це заміною Java для проектів, які потребують величезних баз коду, але для деяких невеликих та середніх розмірів проектів, особливо коли вони дуже модульні (наприклад, CRUD-інтенсивні, портлети тощо). ). Я думаю, що це буде надзвичайно добре сприйняте у веб-світі, особливо шанувальниками JBoss.


1
"Цейлон та інші" створені хобі "мови JVM". Тож Скала та Котлін - мови, створені хобі?
OlliP

Я думаю, що спосіб Ceylon IDE створює для вас визначення модулів при створенні проекту Цейлон - це натхнення для Jigsaw. Вони на Ceylon IDE полегшують користувачеві модуляцію. У OSGi це дуже громіздко, оскільки вам доведеться пограти з додатковими плагінами та різними параметрами. Я думаю, що головоломки в Oracle звернуть увагу на інтелектуальну зручну для інтеграції інструмент у цейлонському IDE і спробують створити щось подібне для Jigsaw.
OlliP

1

Я думаю, Цейлон багато в чому цікавий. І, можливо, вони мають рацію в тому, що вам потрібно якось відійти від Java, якщо ви хочете залишити деякі проблеми Яви за собою. На Цейлоні, здається, є досить багато мовних особливостей, і я сподіваюся, що це робить компілятор повільним, як у Scala, або ще гірше, спричиняє час збірки, які не масштабуються з розміром коду (див. Зворотній зв'язок щодо досвіду роботи Scala ). Темп команди целонських розробників досить вражаючий.

Котлін ще 0,6, і, судячи зі швидкості їхнього розвитку в минулому році, я б сказав, що приблизно за рік від 1,0. Має не так багато мовних особливостей, як Цейлон (але тих важливих, які Java не вистачає, як риси та методи розширення), і здається, це більше якась Скала без проблем. Я думаю, масштабовані строки збірки не будуть з цим проблемою. Але Котлін може бути тільки приємнішою Явою, як Groovy. Він не може забезпечити вихід із товарного програмування Java із залежністю від XML, кодовою табличкою, маніпуляцією з кодом байтів тощо. Це щось на зразок Java та Scala. Чи вдасться змінити Котлін чи Цейлон, залишається з'ясувати. Я думаю, що обидві спроби варті зусиль і бажаю обом удачі.


-2

Цейлон виробляє специфікацію під час своєї розробки, як і всі великі мови JVM (тобто всі згадані вище, крім Groovy) ...

Цейлон (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 дотримується специфіки Рубі, за яку потрібно заплатити (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.