Так что теперь Eclipse предлагает Xtend, а JetBrains предлагает Kotlin - обе из которых, похоже, разбавлены версиями Scala. Мой вопрос почему? Я играл с Scala немного , и это не что трудно. Является ли это просто реакцией на присущую сложность перехода от императива к функционалу или здесь что-то еще работает?
РЕДАКТИРОВАТЬ: Извинения. Перечитывая вопрос в том виде, в котором он был изначально опубликован, я вижу, что это звучит как троллинг. То, как я сформулировал вопрос, казалось, было лучшим способом задать вопрос. Я видел сообщения в блоге о том, что «Scala слишком сложен / Scala слишком сложен», а также «Kotlin - это попытка сделать Scala, но проще». Я оставлю фразу, как это было изначально, но я, честно говоря, не пытался троллить.
programming-languages
scala
Онорио Катеначчи
источник
источник
Ответы:
ИМХО от кого-то, кто программирует на Java последние 7 лет и, будучи моим самым сильным языком, я нахожу Scala довольно чуждым и с трудом привыкаю к нему.
Xtend чувствует себя больше как Java и был в состоянии написать простое приложение с ним гораздо быстрее. Конечно, я не уделял достаточно времени Скале, но я, конечно, понимаю, почему некоторые могут быть отключены этим.
С учетом сказанного люди выберут знакомый ад вместо незнакомого рая.
источник
У JetBrains есть вики-страница, сравнивающая Scala с Kotlin, и, кажется, есть несколько вещей, которые делает Kotlin, а Scala нет:
Поэтому называть Котлин водой на Скале - это, вероятно, упрощение. Что касается Xtend, я думаю, что он ориентирован в основном на пользователей Xtext, а не на более широкую аудиторию. Основное отличие от Scala заключается в том, что Xtend компилируется в Java, а не в байт-код.
Еще одним языком «убийцы Java», который вы должны добавить в свой список, является «Цейлон» от Red Hat , хотя я понятия не имею, насколько он отличается от Scala.
источник
Я использовал Scala в качестве основного языка в течение последнего года (с секундой Java, как в рамках большой унаследованной базы кода Java). Мне все еще приходится искать довольно простые функции, если я не использовал их в в то время как. Конечно, вы можете написать несколько Scala быстро, но это чрезвычайно многофункциональный язык, и его освоение занимает много времени.
Более того, его сложность представляет собой проблему не только для людей, но и для IDE и компиляторов. И Селон, и Котлин компилируются напрямую в довольно чистый JavaScript. Scala может генерировать JavaScript через GWT, хотя добраться до него сложно, а вывод GWT не разборчив и не предназначен для приятного воспроизведения с внешним JavaScript или HTML.
Я определенно более продуктивен в Scala, чем в Java, и код более компактен и разборчив (если вы немного знаете Scala). Но его сложность заставляет меня не решаться рекомендовать его другим. Язык с 20% сложности, но 80% возможностей будет желанной альтернативой.
[Отредактировано, чтобы удалить упоминание о устаревшем коде, см. Комментарий ниже.]
[Приложение 2017 года: Scala теперь поддерживает JavaScript в качестве цели сборки, в то время как Kotlin продолжает добавлять функции, которые имеют смысл для замены Java / Groovy / JavaScript в стиле Scala. Сейчас они более характерные языки, чем когда я впервые написал это.]
источник
+:
например, экстракторы). Я надеюсь, что программирование в Scala будет обновлено в ближайшее время. Для 2.11 некоторые вещи улучшаются дальше. Stdlib уже освобожден от устареваний и также немного уменьшится. Может быть,scala.util.parsing
будет перемещен за пределы stdlib тоже. Посмотрим ...::
,::=
или+:=
которые перед именем, но большинство людей хотят ,:+=
который добавляет, но это не является эффективным для списка.JetBrains очень четко изложил свои цели для Kotlin :
источник
Я использовал Scala несколько месяцев в Eclipse с Play Framework. Мне нравится язык, но есть вещи, которые мне не нравятся.
Для меня причина перехода с Java на другой язык - быть более продуктивным.
До сих пор я не был более продуктивным со Scala. Одной из причин этого является отсутствие хорошей поддержки Scala в Eclipse, плагин Scala плохой (например, сбой отступа) и еще не имеет многих функций (например, нет «Open Call Hierarchy»). Компилятор Scala также работает медленно, это может не быть проблемой, но я использую Scala с Play Framework, который компилирует код для каждого запроса, и там важна скорость компилятора.
источник
Не знаю насчет Котлина, но Скала и Xtend - два совершенно разных зверя.
Вопреки распространенным высказываниям, Scala НЕ лучшая Java. Scala - гораздо более функциональный язык, чем Java, со своим собственным синтаксисом и семантикой, а также собственным пакетом базовых библиотек.
Xtend - лучшая Java. Он сохраняет семантику Java и улучшает его синтаксис. Каждая строка кода Xtend может быть напрямую переведена в набор строк кода Java. Там нет дополнительного времени выполнения, ни.
Я думаю, что оба подхода верны, хотя и разные. Мне не нравится Scala (как язык), но я не люблю добавлять фляги Scala в мои проекты. Я не могу правильно использовать Scala в Android (это добавляет проблемы с весом и производительностью). Xtend не так полезен, но для меня это нормально (гораздо лучше использовать его, чем язык Java), и он работает на любой платформе, как если бы я писал непосредственно на Java.
Я считаю, что оба языка занимают разные ниши и могут сосуществовать, не мешая друг другу. ИМХО, Scala просто слишком сложна, ничего нового не добавляя. Если вы хотите работать более функционально и с меньшими затратами времени, просто выберите один из многих более простых функциональных языков, таких как Clojure или JHaskell. Если вы просто хотите Java с лучшим синтаксисом и небольшим количеством функционального программирования, Fantom был бы так же хорош, как Scala (он очень напоминает C #).
Но я нахожу, что Xtend находится в хорошем положении между всеми этими языками. Он добавляет все те синтаксические шаблоны, которые я хотел для Java, сохраняя хорошие части Java (его семантика). Думайте об этом как Coffescript для Java.
И поддержка Eclipse превосходна ...
источник