Scala, java будущего (?)

Я пытаюсь выяснить популярность scala и сколько пользователей SO фактически используют его на рабочем месте?

Ответ 1

Я уже год использую Scala на работе (финансовая технология) и не хотел бы вообще возвращаться к Java! При первоначальном рассмотрении миграции меня больше всего волновало следующее:

  • Поддержка инструментов (что такое IDE?)
  • Взаимодействие с существующими библиотеками Java и технологиями сборки (ant, Spring, внутренне написанные вещи)
  • Talent Pool (где я могу найти хороших разработчиков Scala?)
  • Время перехода (как долго я пишу хорошую Scala?)

Я обнаружил, что плагин IDEA Scala (для бесплатной версии v9 Community Edition) превосходен: не так хорош, как поддержка Java-инструментов, но, безусловно, достаточно хорош для наших нужд. Он имеет базовый рефакторинг и отладку и отличную подсветку синтаксиса. Мой опыт работы с Eclipse был крайне разочаровывающим: я понял, что Scala 2.8 ожидает значительных улучшений, но я видел недавнее Eclipse по ночам, и это было, честно говоря, ужасно.

Функциональная совместимость с Java является первоклассной - у меня не было никаких проблем, и я все еще интенсивно использую Spring и нашу специальную (основанную на муравьях) систему сборки. Пул разработчиков - это всего лишь соображение для крупной компании со средней текучестью кадров; До сих пор это не было проблемой для нас, и респонденты все равно проявили интерес к использованию Scala.

Возможно, самая большая проблема - это время перехода. Я обнаружил, что для того, чтобы написать что-то разумное, нужно 2 недели, 3 месяца, чтобы начать действительно "понимать", и 6 месяцев - 1 год, чтобы начать использовать функциональные и DSL-стороны Scala. Итак, каковы действительно большие выгоды для меня?

  1. Вывод типа и co- и встроенная противоположность (код более читабелен и интуитивно понятен - генерики просто работают, в отличие от Java, где это может быть чрезвычайно болезненно)
  2. Стиль функционального программирования и замыкания (код более читабелен и быстрее пишется)
  3. Библиотека параллелизма актеров (значительно упрощает параллельное программирование)

Итак, сделаем вывод:

  • Scala хороша? Да - это фантастика
  • Готово ли оно для реального корпоративного использования? Да, сейчас его используют несколько компаний, в том числе Twitter, Sony и EDF.
  • Стоит ли выиграть стоимость усыновления? Да, конечно

Ответ 2

Никто не имеет хрустального шара, и кто-то может придумать что-то лучшее (или что-то хуже с электростанцией за ним) в любое время.

Было много статей, подкастов и т.д. Здесь, на SO, я предлагаю вам прочитать: https://stackoverflow.com/questions/33744/is-scala-the-next-big-thing

Лично я думаю, что Scala является многообещающим, но может не привлекать толпу. Многое использование Java на сегодняшний день вращается вокруг J2EE, и я не вижу, чтобы эти люди делали переход. Для пользователей, не являющихся Java, более известные языки, такие как Python, могут предоставлять все функциональные возможности, которые им нужны, даже за счет использования JVM.

Ответ 3

Я только начал работать с Scala, и я начинаю больше интересоваться финансовой ареной.

Теперь я получаю больше людей/коллег, проявляющих интерес к этому. Многие люди просили меня оставить их в курсе моих успехов. Я не видел такого же уровня интереса к Groovy (или другим языкам JVM, которые выставляют сам Java).

Так что это определенно язык Java de jour, и я думаю, что он имеет больше импульсов, чем что-либо до него на арене Java. Однако, как это происходит, кто-то догадывается, однако!

Ответ 4

Я программировал на Java много лет, а Haskell и OCaml в течение последних двух лет. Несколько месяцев назад я начал разработку личного проекта в Scala, и это замечательно. Система реального типа и все поддерживающие Java библиотеки.

Простота смешивания Java и Scala означает, что язык определенно имеет будущее. Затраты на усыновление для существующего Java-проекта очень низки.

Ответ 5

Я слышал о Scala несколько месяцев назад и был очень рад видеть "лучшую Java, чем Java" для JVM. Scala исправляет ряд проблем Java с раздражающим шаблоном кода, добавляет некоторое функциональное программирование и поддержку параллельного программирования. Он обладает хорошей (хотя и не идеальной) совместимостью с Java-библиотеками, поэтому весь этот код мгновенно доступен. Также возможно смешать Scala с Java и, возможно, с другими языками JVM в одном проекте.

Я попытался изучить Lift (веб-фреймворк) и обнаружил, что я недостаточно умен, чтобы справиться с этим. Синтаксис Scala очень короткий и загадочный в некоторых местах (где Java многословен) и требует некоторого привыкания. Я написал несколько небольших проектов, и они отлично работали; но более крупные проекты не были забавными с полу-адекватной поддержкой плагинов Eclipse, доступных в то время.

Лично я отказался от Scala и перешел на Clojure, который предлагает многие из тех же преимуществ и больше (извините, что был субъективным здесь) "весело" для программирования.


Мой личный вывод: Scala имеет множество функций, забитых в него, что повышает кривую обучения. Это похоже на сложность С++ с синтаксисом Java и конструкциями FP Ruby. Я думаю, что будет трудно убедить отрасль в том, что Scala имеет значительные преимущества перед Java, что достаточно, чтобы оправдать затраты на повторное обучение и переподготовку.

Ответ 6

Не уверен, что эта информация помогает, но я создаю онлайн-игровой сервер для успешной и созданной игровой компании, используя Scala и Project Darkstar.

Наш дизайн предназначен для масштабирования от полумиллиона до десяти миллионов пользователей (спасибо, Amazon EC2!), а Scala дает мне дополнительную уверенность в моем коде по пяти причинам: 1. Я усваиваю больше вещей во время компиляции. 2. Легко сделать большую часть моих игровых данных неизменной. 3. Код более высокого уровня означает, что я с меньшей вероятностью получаю тривиальную ошибку реализации. 4. Более короткий, простой код облегчает мне просмотр и поиск ошибок. Неявные преобразования - большая часть этого. 5. Чем счастливее я пишу код (и Scala обычно делает меня счастливым), тем лучше я делаю.

Scala не является панацеей, и у него появилось много бородавок (а именно, отсутствие какой-либо большой поддержки инструмента), но это, безусловно, самый продуктивный язык, который я мог бы использовать для этой цели.

Моя единственная жалоба заключается в том, что я хотел бы, чтобы она могла скомпилироваться с C или тяжелоассемблером, поскольку ограничения JVM часто раздражают меня (стирание типов, отсутствие типов стека и массивов объектов по значению).

Я не думаю, что Scala настолько популярен, что 2,8-конверсия сильно позади и создала раскол в сообществе, а поддержка инструмента просто отсутствует. Но если вы ковбойский кодер, который не боится теории алгебраического типа и отсутствия автозаполнения, трудно ошибиться.

Если вы решите использовать его, сделайте себе огромную услугу и купите книгу Odersky. Некоторое время я пробовал код Scala без него, и было почти невозможно сделать что-либо "scala" (не консенсус по этому поводу).

Ответ 7

Я слышал о Scala в недавнем соглашении (JavaEdge2009), и все, казалось, вполне убедились, что Scala - отличный язык. Основная идея конференции заключалась в том, что будущее Java - это не просто новый язык программирования JVM, а языки программирования. ЯВЛЯЕТСЯ будущим Java. Поскольку JDK 7 будет поддерживать динамические языки, в которых пророки говорят, что через несколько лет вы будете развиваться на своем родном языке (DSL-Domain Specific Language)

С практической стороны я загрузил плагин Scala Eclipse и был разочарован. Тот факт, что автоматический импорт еще не работает, нарисовал для меня линию с интересного языка на практический язык. Хотя это может показаться немного застенчивым, требуя, поскольку в древние времена для ручного добавления импорта слишком много для меня.