Scala — это изумительный язык программирования, которым я наслаждался года 4 назад. Я, наверное, был его фанатом: покупал книги и курсы на Coursera, использовал в pet- и продуктивных проектах et cetera, et cetera, et cetera.
Scala открыл для меня увлекательный мир функционального программирования, вернул во времена студенчества со «сферическими задачами в вакууме» от Martin'a Odersky…
Но вот он уже года два как Scala для меня мертва. Виной этому…
Нет, не Java 8 и даже, скорее всего, не SBT с его загадочной инкрементальной компиляцией, а Eclipse Scala IDE.
К Scala, как к экосистеме, у меня есть только две претензии: непомерное время компиляции и отвратительный tool'инг.
Если со временем компиляции я еще худо бедно могу мириться, то tool'инг…
Но обо всем по порядку.
Мы, силою обстоятельств, плотно (и навечно?) прикованы к Eclipse IDE. Как-то так случилось, что те проекты, которые нужны для рабочего процесса есть только под Eclipse и их нет (и не будет) под IntelliJ IDEA (например, тот же BIRT).
Да, никто не запрещает мне для pet project'ов использовать Scala и IntelliJ IDEA, но это уже не так интересно и гораздо приятнее развлекаться с IntelliJ IDEA и Clojure (я, конечно же, говорю о Cursive).
В двух словах — это самая глючная, нестабильная и загадочная «хрень» которой мне приходилось пользоваться для разработки в XXI веке. Попросту говоря ты никогда не знаешь будет ли твой scala code им компилироваться, как долго, что произойдет при обновлении Scala IDE, Scala, Eclipse'a, crash'е workspace'a и почему твой код не будет компилироваться у коллеги, и в какие бубны нужно будет бить чтобы это все снова заработало.
Здесь надо сделать два уточнения: я говорю о смешанных Java+Scala проектах и Scala 2.11.x (это версия на которой мы «сдались» и решили дальше историю со Scala не продолжать).
Возможно, Eclipse Scala IDE идеален для «pure Scala» проектов, но для сложных и смешанных как наш — это ужас и кошмар почище атомной войны.
Пример вчерашнего дня. Два компьютера с Eclipse Oxygen.2 (4.7.2) с OSX.
Идентичные версии всего (кроме JVM и версий OSX) получаем при компиляции Eclipse:
Слегка подправив исходный код (при этом «родным» SBT он компилируется без проблем)
Мне удается избавиться от ошибок, но лишь на одном из MacBook'ов.
Такое волшебство происходит постоянно. Например, у меня был проект, где autocompletion приводил к crash'у всего проекта (но только если в файлы была ссылка на scala code).
Коллеги, это снова у меня что-то идет не так или у Вас подобный опыт общения со Scala?
Scala открыл для меня увлекательный мир функционального программирования, вернул во времена студенчества со «сферическими задачами в вакууме» от Martin'a Odersky…
Но вот он уже года два как Scala для меня мертва. Виной этому…
Нет, не Java 8 и даже, скорее всего, не SBT с его загадочной инкрементальной компиляцией, а Eclipse Scala IDE.
К Scala, как к экосистеме, у меня есть только две претензии: непомерное время компиляции и отвратительный tool'инг.
Если со временем компиляции я еще худо бедно могу мириться, то tool'инг…
Но обо всем по порядку.
Мы, силою обстоятельств, плотно (и навечно?) прикованы к Eclipse IDE. Как-то так случилось, что те проекты, которые нужны для рабочего процесса есть только под Eclipse и их нет (и не будет) под IntelliJ IDEA (например, тот же BIRT).
Да, никто не запрещает мне для pet project'ов использовать Scala и IntelliJ IDEA, но это уже не так интересно и гораздо приятнее развлекаться с IntelliJ IDEA и Clojure (я, конечно же, говорю о Cursive).
Что же не так с Eclipse Scala IDE?
В двух словах — это самая глючная, нестабильная и загадочная «хрень» которой мне приходилось пользоваться для разработки в XXI веке. Попросту говоря ты никогда не знаешь будет ли твой scala code им компилироваться, как долго, что произойдет при обновлении Scala IDE, Scala, Eclipse'a, crash'е workspace'a и почему твой код не будет компилироваться у коллеги, и в какие бубны нужно будет бить чтобы это все снова заработало.
Здесь надо сделать два уточнения: я говорю о смешанных Java+Scala проектах и Scala 2.11.x (это версия на которой мы «сдались» и решили дальше историю со Scala не продолжать).
Возможно, Eclipse Scala IDE идеален для «pure Scala» проектов, но для сложных и смешанных как наш — это ужас и кошмар почище атомной войны.
Пример вчерашнего дня. Два компьютера с Eclipse Oxygen.2 (4.7.2) с OSX.
package com.XXX
import java.util.{List=>JList}
import scala.collection.JavaConversions._
...
abstract class REScalaVariablesConfiguration {
def calculateVariables (runtimeObject: GBObject): JList[Variable] = {
val result = for {(name, result) <- variables(runtimeObject)
if result != null
} yield result match {
case x:LWDecimal => new NumberVariable(name, x.getJavaDecimal, runtimeObject)
case x:Number => new NumberVariable(name, x, runtimeObject)
case x:String => new StringVariable(name, x, runtimeObject)
case x:Boolean => new BooleanVariable(name, x, runtimeObject)
case x:LWDate => new DateVariable(name, x.getJavaDate, runtimeObject)
case _ => throw new IllegalStateException("Not supported result type for rule engine variable: " + name)
}
new ArrayList[Variable](result)
}
protected def variables(runtimeObject: GBObject): Map[String, Any]
}
Идентичные версии всего (кроме JVM и версий OSX) получаем при компиляции Eclipse:
- SBT builder crashed while compiling. The error message is 'Could not create directory /XYZ/lib/print'.
- Error in Scala compiler: REScalaVariablesConfiguration
Слегка подправив исходный код (при этом «родным» SBT он компилируется без проблем)
package com.XXX
import scala.collection.JavaConversions._
...
abstract class REScalaVariablesConfiguration {
def calculateVariables (runtimeObject: GBObject): java.util.List[Variable] = {
...
Мне удается избавиться от ошибок, но лишь на одном из MacBook'ов.
Такое волшебство происходит постоянно. Например, у меня был проект, где autocompletion приводил к crash'у всего проекта (но только если в файлы была ссылка на scala code).
Коллеги, это снова у меня что-то идет не так или у Вас подобный опыт общения со Scala?
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Оцените Ваш опыт использования Scala в реальных проектах
21.97% 2.12 — полет нормальный, Scala only29
15.91% 2.12 — полет нормальный, смешанные проекты21
15.15% 2.11 — полет нормальный, Scala only20
14.39% 2.11 — полет нормальный, смешанные проекты19
16.67% Все плохо22
6.06% Eclipse8
71.97% IntelliJ IDEA95
3.79% NetBeans5
Проголосовали 132 пользователя. Воздержались 167 пользователей.