Scala как новая Java?

Я только начал исследовать Scala в свободное время.

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

Помимо изучения нового языка, каковы недостатки перехода на Scala?

 akarnokd09 июл. 2009 г., 16:40
Отсутствие поддержки IDE сравнимо с Java.
 oxbow_lakes09 июл. 2009 г., 17:55
& quot; Нет необходимости в IDE & quot; это то, что я бы назвал спорным мнением
 jsight09 июл. 2009 г., 18:12
@Bastien - пока не будет языка только с одной функцией (readMyMindFixMyDesignIssuesAndDoWhatINeed ();), всегда будет место для хорошей IDE.
 Bastien Léonard09 июл. 2009 г., 17:45
Java нуждается в поддержке IDE, потому что она требует большого количества кода. Если Scala достаточно прост, вероятно, в IDE нет реальной необходимости.
 akarnokd09 июл. 2009 г., 21:14
@Bastien: сопоставление с образцом в Scala - это то место, которое нуждается в хорошей поддержке IDE.

Ответы на вопрос(8)

Размер сообщества небольшой. Поддержка IDE пока отсутствует.

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

 16 апр. 2010 г., 07:09
@Rayne, наведите курсор мыши влево, если oxbow_lakes & apos; комментарий, появится маленькая стрелка вверх. Нажатие на него скажет то, что вы только что сказали более кратко. И это не Scala много о кратком коде ;-)
 09 июл. 2009 г., 18:03
Я не думаю, что его масштабируемость является проблемой, но я также не жалею им работы, необходимой для поддержания чего-то, что не является обратно совместимым.
 09 июл. 2009 г., 17:31
Кто-то должен сказать EDF, твиттеру и мне, что он не готов для предприятия
 10 июл. 2009 г., 12:47
Что сказал oxbow_lakes.

-то новое после 12 лет работы Java в корпоративной среде, создавая очень большую систему для некоторых крупнейших мировых компаний.

Я пробовал Ruby on Rails в прошлом. После создания нескольких примеров приложений мне не понравилось ощущение этого или тот факт, что мне пришлось бы написать тонну модульных тестов, чтобы охватить вещи, которые обычно выполняются компилятором.

Groovy на Grails был моим следующим портом захода. Я должен сказать, что мне это нравится, но он страдает от тех же проблем динамической типизации, что и ROR. Не поймите меня неправильно, я не опускаю Grails, потому что это отличная структура, и я все равно буду ее использовать. У каждого свое место ИМО.

Затем я запрыгнул на Scala и теперь создал гибридное приложение на основе Scala и Spring MVC. Поначалу работать со Scala сложно, но это становится проще и продуктивнее, чем больше времени вы вкладываете в него. Я достиг переломного момента, когда теперь я хочу потратить время и на Лифт.

Сочетание «Программирование в Scala» и Дэвид Поллак "Начинающая Скала"; Книги хороши для изучения языка, последний с меньшей академической склонностью.

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

Я думаю, что дальнейшая работа по улучшению интеграции / упаковки Java API даст Scala импульс, необходимый для завоевания большего числа подписчиков. Базовая интеграция уже есть, но я думаю, что ее можно немного улучшить.

Да, поддержка IDE есть, но она является базовой на данный момент. Мощной рефакторинговой поддержки Intellij пока нет, и я очень по ней скучаю. Поддержка компилятора + IDE с набором других плагинов еще не закончена. Иногда я получаю очень странные внутренние ошибки компилятора, вызванные тем, как Scala работает с расширением JDO для механизма приложений Goggle. Однако это мелочи, которые можно легко исправить. Ранняя адаптация новых технологий и языков всегда сопровождается небольшой болью. Но эта боль может принести большое удовольствие в будущем.

Если посмотреть на возможности Scala по сравнению с ранней Java, то впереди ее. Когда я перешел с C ++ на Java, JVM еще не была готова в отношении масштабируемости. Раньше было много странных сбоев и прожогов дампов ядра JVM в разных ОС. Все это теперь исправлено в Java, и JVM отлично работает. Scals работает в JVM, поэтому он получил огромное преимущество в интеграции с родной платформой. Это стоит на плечах гигантов!

После многих лет создания и поддержки корпоративных приложений я голосую за язык, в котором компилятор может отлавливать большинство нефункциональных ошибок до того, как будут созданы даже модульные тесты. Мне нравится проверка типов в сочетании с мощью функционального программирования. Мне нравится тот факт, что я делаю OO ++.

Я думаю, что сообщество разработчиков решит, будет ли Scala будущим или нет. Недостаток принятия Scala сейчас был бы, если бы он не набирал обороты и адаптацию. Было бы очень трудно поддерживать кодовую базу Scala, когда вокруг очень мало разработчиков Scala. Тем не менее, я наблюдал, как Java пришла от скунса на предприятие, чтобы заменить C ++, и все это было разработано сообществом разработчиков снизу вверх. Время покажет для Scala, но в настоящее время у меня есть мой голос.

Решение Вопроса

что вы должны быть готовы к тому, что Scala будет немного грубоватой:

you'll get the odd cryptic Scala compiler internal error the IDE support isn't quite as good as Java (neither is the debugging support) there will be breaks to backwards compatibility in future releases (although these will be limited)

Вы также должны рискнуть, что Scala как язык потерпит неудачу.

Это сказало,I don't think you'll look back! Мой опыт в целом положительный; IDE пригодны для использования, вы привыкаете к тому, что означают загадочные ошибки компилятора, и, хотя ваша кодовая база Scala мала, разрыв с обратной совместимостью не является большой проблемой.

Это того стоитOption,monad функциональность коллекций,closures,actors модель, экстракторы, ковариантные типы и т. д. Это отличный язык.

Это также оченьpersonal полезно иметь возможность подойти к решению проблем под другим углом, что позволяют и поощряют вышеупомянутые конструкции.

 29 янв. 2012 г., 22:40
Плагин Scala для меня даже не установился в Eclipse Indigo - ему пришлось перейти на Eclipse Helios.
 24 июл. 2009 г., 06:38
Я использовал NetBeans 6.7 с плагином Scala, и это было довольно неплохо.
 15 июл. 2009 г., 16:41
Есть ли рекомендуемая бесплатная IDE?
 15 июл. 2009 г., 18:42
Майлз Сабин недавно выступил с лекцией в лондонской группе пользователей Scala, где сказал, что следующая версия плагина Eclipse (которая будет выпущена одновременно с Scala 2.8) будетmuch стабильнее, быстрее и лучше текущей версии.

как я обнаружил, что интегрировать Scala с существующими библиотеками Java было не так просто:

Я хотел начать с чего-то более легкого, и, поскольку я думал, что Scala очень хорошо подходит для научных вычислений, я хотел сделать небольшую оболочку вокруг JAMA (библиотеки Java Matrix) ... Мой первоначальный подход заключался в расширении типа Matrix с помощью Класс Scala, а затем перегружаем арифметические операторы и вызываем нативные методы Java, но:

The Matrix class doesn't provide a default constructor (without arguments) The Scala class needs one primary constructor I thought one good primary constructor could be the one accepting an Array[Array[Double]] (first thing that sucks, that syntax is much more verbose and hard to read than Double[][]) As far as I know by reading the manuals, the parameters of the primary constructor are also implicitly fields of the class, so I would end with one Array[Array[Double]] in the Scala subclass and another double[][] in the Java superclass, which is pretty redundant.

Я думаю, я мог бы использовать пустой первичный конструктор, который инициализировал суперкласс с некоторыми значениями по умолчанию (например, [[0]]), или просто создать класс адаптера, который использовал бы Jama.Matrix в качестве делегата, но если язык должен быть элегантным и бесшовным, интегрированным с другим, такого не должно происходить.

Это мои два цента.

 16 апр. 2010 г., 11:10
@fortran, короче говоря, добавив в сферу функцииimplicit adapter2matrix(a:Adapter):Matrix = a.innerMatrix заставит scala автоматически конвертировать вызов вINeedJavaMatrix(AdaptorClass) вINeedJavaMatrix(adapter2matrix(AdaptorClass) увидетьcodecommit.com/blog/scala/scala-for-java-refugees-part-6
 09 июл. 2009 г., 20:10
Пожалуйста, посмотрите на мой блог (dcsobral.blogspot.com), где я смотрю и решаю эти самые вопросы. В одном из таких случаев вы либо объявите частный конструктор, получающий матрицу, и основываете на этом другие, либо вообще не будете иметь параметров в частном конструкторе. Есть очень веские причины для этих функций, которые вас беспокоят, а также способы обойти их.
 16 апр. 2010 г., 07:07
@fortran, если вы создаете класс адаптера, вы можете использовать неявное преобразование, чтобы использовать его обратно в функциях Java.
 14 окт. 2009 г., 15:05
Наследование - не единственный способ реализовать обертку! Вы можете просто включить экземпляр типа Matrix в свой собственный класс.
 23 апр. 2011 г., 22:17
@Elazar: так я перенес много устаревшего кода в Scala; с помощью неявных преобразований типов. Он использует преимущества замечательных функций Scala.

что есть какие-либо недостатки. На самом деле изучение нового языка очень полезно для расширения ваших знаний в области программирования. Вы можете получить от Scala такие вещи, как универсальные классы, аннотации отклонений, верхние и нижние границы типов, внутренние классы и абстрактные типы в качестве членов объекта, составные типы, явно типизированные собственные ссылки, представления и полиморфные методы.

под которыми я имею в виду четыре самых больших недостатка, которые я вижу:

Many working as developers in the professional community aren't trained and are unwilling to learn how to use a functional language, they won't even give it a go so they can understand why it's a better approach. This means you'll always be fighting an uphill battle getting adoption until it's mandated at the corporate level.

RDBMS integration is still a bit spotty. Plenty of solutions, but nothing that really sticks out as becoming a standard. For me though, this might be an advantage rather than a disadvantage. JPA2 is a mess and causes more issues than problems it solves. Hibernate criteria queries aren't much better.

IDE support is still lagging, but mostly in the area of debugging at this point. Code inspection is doing pretty good (at least in IntelliJ).

You'll never want to write another line of Java again! Likely you'll want to punch a wall or break something when forced back into the awkward syntax of Java.

 29 янв. 2012 г., 22:42
В программировании есть только две сложные вещи - именование, аннулирование кэша и ошибки «один на один».
 31 дек. 2011 г., 16:33
Ты считаешь иначе, чем я.
 02 янв. 2012 г., 01:10
К сожалению, у меня было два, затем я добавил еще: D

s the downside to switching over to Scala?

Thinking, thinking, thinking..... nope, there is none :-)

остью языка. В конце концов, Scala имеет около 5 лет, а Java 5 лет сильно отличалась от своей собственной продолжительности жизни.

В частности, из-за того, что у Scala нет поддержки предприятия, которое считает его стратегическим приоритетом, ресурсы поддержки для этого довольно скудны. Например:

Lack of extensive tutorials Inferior quality of the documentation Non-existing localization of documentation Native libraries (Scala uses Java or .NET libraries as base for their own)

Другое важное отличие связано с тем, как Sun видел Java иEPFL видит Скала. Sun рассматривала Java как продукт для привлечения корпоративных клиентов. EPFL рассматривает Scala как язык, предназначенный для того, чтобы быть лучшим языком, чем существующие, в некоторых конкретных аспектах (в основном OOxFunctional интеграция и проектирование системы типов).

Как следствие, когда Sun сделала JVM ледяной стабильной, а Java - полностью обратно совместимой, с очень медленным устареванием и удалением функций (фактически, удалением?), JAR-файлы, созданные в одной версии Scala, вообще не будут работать с другими версиями. (серьезная проблема для сторонних библиотек), и язык постоянно получает новые функции, а также фактически удаляет устаревшие, как и библиотека Scala. История изменений для Scala 2.x, которой, как мне кажется, всего 3 года, впечатляет.

Наконец, из-за всего вышесказанного, поддержка Scala третьей сторонойзарождающийся, Но важно отметить, чтоJetBrains, что делаетmoney из продажиIntelliJ IDEA IDE уже довольно давно поддерживает Scala и постоянно совершенствует свою поддержку. Для меня это означает, что существует потребность в поддержке третьей стороны, и поддержка обязательно возрастет.

Я указываю на книжную ситуацию. Год назад на рынке не было книги о Scala. Прямо сейчас есть две или три вводных книги Scalaon the marketпримерно столько же книг должно быть выпущено до конца года, и есть книга об очень важной веб-среде, основанной на Scala,Лифт.

Бьюсь об заклад, мы увидим книгу оЭсме не так уж и далеко в будущем, а также книги о Scala и параллелизме. Издательский рынок, очевидно, достиг переломного момента. Как только это произойдет, предприятия будут следовать.

 10 июл. 2009 г., 08:23
Я думаю, что есть несколько очень интересных блогов о том, что будущее Scala, скорее всего, будет держать в терминах «предпринимательства». начать. К сожалению, они еще не написаны :-(
 10 июл. 2009 г., 12:47
Вы правы, о ней написано всего лишь 4 книги. Как можно научиться этому?
 10 июл. 2009 г., 16:29
Рейн, я думаю, ты упустил мою точку зрения. Я намеревался показать, что рынок книг Scala стремительно растет, прыгая с 0 до 5 или 6 в течение одного года.

Ваш ответ на вопрос