Каковы преимущества Цейлона над Java? [закрыто]

11

Ища последние и мощные будущие языки программирования по сети, я наткнулся на Цейлон. Я зашел на ceylon-lang.org и там написано:

Цейлон находится под сильным влиянием Явы. Видите ли, мы поклонники Java, но мы знаем его ограничения наизнанку. Цейлон хранит лучшие части Java, но улучшает вещи, которые по нашему опыту раздражают, утомительны, разочаровывают, трудны для понимания или подвержены ошибкам.

Каковы преимущества Цейлона над Java?

Ануй Балан
источник
1
Хм, я проверил их сайт и не нашел убедительного объяснения, почему я хотел бы перейти на Цейлон с Java ... достаточно справедливо, они все еще находятся на ранней стадии, поэтому, возможно, они не хотят поднимать рекламу слишком рано а потом разочарую ...
Петер Тёрёк
1
Ммм, я подумал, что это был еще один язык программиста-энтузиаста (не то, чтобы в этом было что-то не так: P), но я вижу, что слава Гэвина Кинга из Hibernate в команде, что обнадеживает. Тем не менее, я не вижу, кто выбрал бы Цейлон среди других языков, таких как Scala, Groovy или Clojure.
Андрес Ф.
1
связанные: programmers.stackexchange.com/questions/117561/…
Иоахим Зауэр
1
@AndresF. Похоже, это проект Red Hat. Должно быть оправдано, но, как всегда, трудно сказать, будет ли это поддерживаться так долго, как этого хотят остальные из нас. За последние 16 лет Java доказала свою совместимость с предыдущими версиями - сейчас это сложно победить.

Ответы:

27

Цейлон кажется хорошим забавным языком, но я бы сказал, что у него относительно мало «преимуществ» перед Java.

Я думаю, что у него более приятный синтаксис и некоторые более «современные» возможности языка - хотя это субъективно, и я бы сказал, что при выборе языка программирования должны быть относительно незначительные факторы.

Гораздо более важные факторы при выборе языка / платформы для серьезного проекта:

  • Позволяет ли вам развиваться в лучшей парадигме для вашей проблемы? (нет - Ceylon явно является еще одним языком в переполненном статически типизированном Java-подобном пространстве ООП. Сравните, например, с Clojure, который нацелен на пространство функционального языка, или с Groovy, который является очень динамичным языком JOPM OOP, поэтому они обращаются к различным нишам )
  • Есть ли у нее лучшая библиотечная экосистема? (нет шансов .... Java не имеет себе равных в этом отношении. В лучшем случае вы, вероятно, в конечном итоге просто использовали бы библиотеки Java из Цейлона)
  • Можете ли вы получить более опытных разработчиков? (маловероятно, что немногие люди в настоящее время используют Цейлон, и даже если бы они это сделали, была бы большая кривая обучения, чтобы подняться)
  • У него есть лучшие инструменты? (нет - инструментарий Java очень всеобъемлющий и зрелый)
  • Это делает вас более продуктивным? (Спорно - она ​​имеет некоторые полезные свойства продуктивных языка, но в сочетании с кривой обучения и инструментальных эффектов может на самом деле в конечном итоге сзади)
  • Это обеспечивает лучшую производительность? (нет - JVM чрезвычайно хорошо оптимизирована для Java, любой другой язык JVM - непростой вызов. Scala подходит близко, но это после многих лет тонкой настройки ...)
  • Поддерживает ли он больше целевых платформ? (нет - это язык JVM, точно такой же, как и Java)
  • Будет ли код более понятным? (вероятно, нет - Java выдержала здесь испытание временем именно потому, что она относительно стабильна, зрела и не имеет много продвинутых языковых функций, которые могут запутать будущих сопровождающих)
  • Есть ли большое, активное и полезное сообщество? (нет, по крайней мере, по сравнению с Java или другими крупными языками JVM, такими как Scala, Clojure, Groovy и т. д.)

В целом, я бы, конечно, поощрял людей экспериментировать с Цейлоном и веселиться с ним с точки зрения обучения.

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

mikera
источник
2
"Это поддерживает больше целевых платформ?" ДА - вы можете скомпилировать Цейлон в Javascript.
Chochos
1
Кроме того, я думаю, что ваша оценка некоторых пунктов не совсем верна, поскольку Цейлон еще даже не закончен, поэтому нет смысла сравнивать его с другими языками, которые существуют уже много лет.
Chochos
5
@Chochos - вы также можете скомпилировать Java в JavaScript (это делает Google Web Toolkit), так что это не что иное, как Java. Я согласен, что Цейлон явно не закончен, однако я думаю, что все мои очки действительны сейчас и вряд ли изменятся по крайней мере в ближайшие 5 лет (даже если команда Цейлона завершит все свои нынешние планы).
Микера
1
@mikera Chochos совершенно прав. Цейлон поддерживает компиляцию в JS изначально. Он также может быть скомпилирован в собственный код. Я думаю, что это большая разница, тогда «кто-то есть инструмент, который делает то же самое, если ..»
Гандон
5
@mikera - «Есть ли большое сообщество», конечно, убийственный аргумент для каждого будущего языка. При этом, маленькое сообщество часто более отзывчиво и компетентно. (Посмотрите, что записка о Java написана там весь день в SO ....)
Ingo
3

У этого есть некоторые хорошие особенности, не найденные в Java:

  1. Reified Generics
  2. Вывод типа
  3. Mixins (хотя это будет в JDK8)
  4. Типы объединения и пересечения (что действительно здорово и не встречается во многих языках)
  5. «Функции высшего порядка» (хотя и не совсем как первоклассные объекты)
  6. Закрытия (также в JDK8)
MebAlone
источник
3. Методы Defender в JDK8 могут предоставлять некоторые функции миксинов, но они не приближаются ни к миксинам, ни к чертам. 4. Типы объединения и пересечения - странная концепция для меня. У меня есть проблемы, чтобы понять добавленную стоимость. AFAIK, это только экономит ваши усилия при наборе текста, когда нет необходимости определять интерфейс, который объединяет два других интерфейса. Кроме этого, я уверен, что в Java никогда не будет каких-либо расширенных функций, найденных в Scala / Kotlin / Ceylon / независимо от того, что является проблемой для двоичной обратной совместимости. Поэтому отказ от Java как с Цейлоном имеет некоторое оправдание.
OlliP
@OlliP Вы действительно не хотели бы определять все типы объединения и пересечения, которые генерирует компилятор. Java имеет типы пересечений, но только в качестве общих аргументов. Он преобразует типы объединения в некоторый распространенный супертип, что приводит к смешным сообщениям компилятора («& capture of?»). Типы объединения также используются для обнуляемости, которая значительно превосходит как Java-ноль, так и необязательную.
Maaartinus
2

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

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

Эдуард Коренский
источник
1
"Цейлон и другие" созданные Хобби языки "JVM". То есть Scala и Kotlin - это хобби созданные языки?
OlliP
Я думаю, что способ, которым Ceylon IDE создает определения модулей для вас при создании проекта Ceylon, вдохновляет Jigsaw. Они Ceylon IDE упрощают модульность для пользователя. С OSGi это очень громоздко, так как вам приходится играть с плагинами maven и различными параметрами. Я думаю, что люди из Jigsaw в Oracle заметят интеграцию интеллектуальных и удобных инструментов в Ceylon IDE и попытаются создать нечто подобное для Jigsaw.
OlliP
1

Я думаю, что Цейлон интересен во многих отношениях. И, возможно, они правы в том, что вам нужно каким-то образом отойти от Java, если вы хотите оставить некоторые проблемы Java позади себя. Кажется, что в Ceylon довольно мало языковых функций, и я надеюсь, что это замедлит работу компилятора, как в Scala, или даже хуже, поскольку время сборки не масштабируется с размером кода (см. « Два года опыта Scala» ). Темпы работы команды разработчиков на Цейлоне впечатляют.

Kotlin все еще 0,6 и, судя по скорости их разработки в прошлом году, я бы сказал, около года от 1,0. В нем не так много языковых функций, как в Цейлоне (но в Java отсутствуют такие важные функции, как черты и методы расширения), и кажется, что это скорее своего рода Scala без проблем. Я думаю, масштабируемое время сборки не будет проблемой с этим. Но Kotlin может быть только лучше Java, как Groovy. Он не может обеспечить выход из обычного Java-программирования с зависимостью XML, стандартным кодом, манипулированием байтовым кодом и т. Д. Это что-то вроде Java и Scala, сделанное правильно. Сможет ли Котлин или Цейлон изменить ситуацию, еще неизвестно. Я думаю, что обе попытки стоят усилий, и я желаю им обоим удачи.

OlliP
источник
-2

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

Ворг ван Гейр
источник