Я должен изучить Scala? [закрытый]

http://blah.winsmarts.com/2008-4-SharePoint_limits.aspx

для № 3: можно индексировать определенные столбцы в списке, но необходимо все еще подавить размеры.

32
задан nicael 21 May 2014 в 21:44
поделиться

6 ответов

  • Переносимость: надеюсь, Linux и Windows. А что насчет мобильных телефонов, кому-нибудь удалось заставить его там работать?

Да. В отношении Scala на Android наблюдается некоторое движение. Что касается J2ME, я кое-что видел в этом отношении, но не очень. В репозитории исходного кода есть некоторый код, относящийся к J2ME. Я не уверен, насколько это жизнеспособно, но мне кажется, что на это нет особого спроса.

Я также упомяну, что на Scala-Lang есть / был пул о желаемых целевых платформах, и J2ME был одним из них, очень низким на тотемном столбе.

  • Совместимость с C ++: могу ли я смешивать код C ++ со Scala? (JNI?)

Вы также можете смешивать C ++ с Java, чего бы это ни стоило. Если у вас нет опыта в этом, вы можете просто прочитать ресурсы Java, поскольку все в них будет применимо к Scala без изменений (кроме синтаксиса Scala).

  • Парадигма программирования: Я не чувствую себя комфортно, переключаясь на FP в настоящее время. Могу ли я сначала использовать объектно-ориентированный и процедурный методы с некоторыми FP, а затем менять пропорции по мере изучения?

Определенно, да. Scala делает все возможное, чтобы вам не нужно было программировать в функциональном стиле. Фактически, это основная критика Scala со стороны функциональных людей: некоторые не считают язык функциональным, если он не заставляет программиста писать в функциональном стиле.

В любом случае, вы можете продолжать делать все по-своему. Я уверен, что вы приобретете функциональные привычки, даже не осознавая их функциональности.

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

  • Зрелость цепочки инструментов: каков ваш опыт работы с IDE и отладчиками? Я использую Eclipse прямо сейчас, и мне кажется, что все в порядке.

IDEA (IntelliJ), NetBeans и Eclipse имеют хорошую поддержку Scala. Кажется, что IDEA - лучшая, а NetBeans / Eclipse продолжают прыгать друг с другом, хотя NetBeans определенно был более стабильным, чем Eclipse в последнее время. С другой стороны, поддержка Eclipse идет очень многообещающим путем, который должен дать результаты в ближайшие 6 месяцев или около того - просто это неровный путь. : -)

Некоторые интересные признаки инструментов Scala для этих сред - это тот факт, что плагин Eclipse в разработке использует AOP для более плавного слияния со всей IDE, что плагин NetBeans полностью переписывается на Scala, и что в IDEA есть пакет Scala Power Pack, который поддерживает, среди прочего, перевод кода Java в код Scala.

У сотрудников EMACS также есть обширные инструменты для Scala, и множество небольших редакторов также поддерживают его. Например, мне очень нравится поддержка jEdit небольших программ и скриптов.

Есть также хорошая поддержка Maven - фактически, стандартный способ установки Lift - это установить maven, а затем построить архетип Лифта. Это приведет к появлению соответствующей версии Scala. Существует цель scala: cc , которая также будет выполнять инициированную перекомпиляцию.

Говоря о перекомпиляции, ни Maven, и особенно Ant, не умеют хорошо определять, что нужно перекомпилировать. Из этой проблемы возникла SBT (Simple Build Tool), написанная на Scala, который решает эту проблему с помощью плагина компилятора Scala. SBT использует ту же структуру проекта, что и Maven, а также репозитории Maven / Ivy, но конфигурации проекта выполняются в коде Scala, а не в XML - также с поддержкой файлов конфигурации Maven / Ivy.

  • Скорость обучения: с учетом моего опыта Как вы думаете, насколько быстро я смогу достичь рабочего уровня с помощью Scala?

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

  • Развертывание: как именно вы это делаете. развернуть программу Scala? Это банка, это исполняемый файл?

То же, что и Java. Вы можете развертывать JAR, WAR или любые другие цели Java, потому что компилятор scala генерирует файлы классов. Фактически, вы используете Java jar для генерации файла Scala JAR из файлов классов, а цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов скриптов. Вы можете вызвать «scala», чтобы напрямую запустить исходный код Scala, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде с тяжелыми сценариями требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

Вы можете развертывать JAR, WAR или любые другие цели Java, потому что компилятор scala генерирует файлы классов. Фактически, вы используете Java jar для генерации файла Scala JAR из файлов классов, а цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов скриптов. Вы можете вызвать «scala», чтобы напрямую запустить исходный код Scala, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде с тяжелыми сценариями требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

Вы можете развернуть JAR, WAR или любые другие цели Java, потому что компилятор scala генерирует файлы классов. Фактически, вы используете Java jar для генерации файла Scala JAR из файлов классов, а цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов скриптов. Вы можете вызвать «scala», чтобы напрямую запустить исходный код Scala, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде интенсивного написания сценариев требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

потому что компилятор scala генерирует файлы классов. Фактически, вы используете Java jar для генерации файла Scala JAR из файлов классов, а цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов скриптов. Вы можете вызвать "scala", чтобы напрямую запустить исходный код Scala, аналогично сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде с тяжелыми сценариями требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

потому что компилятор scala генерирует файлы классов. Фактически, вы используете Java jar для генерации файла Scala JAR из файлов классов, а цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов скриптов. Вы можете вызвать «scala», чтобы напрямую запустить исходный код Scala, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде с тяжелыми сценариями требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

и цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов сценариев. Вы можете вызвать «scala», чтобы напрямую запустить исходный код Scala, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде с тяжелыми сценариями требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

и цели Maven для Lift поддерживают создание файлов WAR.

Однако есть альтернатива для файлов сценариев. Вы можете вызвать «scala», чтобы напрямую запустить исходный код Scala, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже при использовании демона компиляции для ускорения выполнения время запуска достаточно велико, поэтому для эффективного использования Scala в среде с тяжелыми сценариями требуется что-то вроде Nailgun .

Что касается недостатков Scala, взгляните на мой (и другие) ответ в этот вопрос о переполнении стека.

29
ответ дан 27 November 2019 в 20:30
поделиться

Парадигма программирования: Мне неудобно переключаться на FP в настоящее время. Могу ли я сначала использовать объектно-ориентированный и процедурный методы с некоторыми FP, а затем менять пропорции по мере изучения?

Scala полностью поддерживает императивное программирование, писать программы без элементов FP очень просто (однако FP полезен и стоит

Скорость обучения: учитывая мой опыт, как вы думаете, как быстро я смогу достичь рабочего уровня с помощью Scala?

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

6
ответ дан 27 November 2019 в 20:30
поделиться

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

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

2
ответ дан 27 November 2019 в 20:30
поделиться

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

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

5
ответ дан 27 November 2019 в 20:30
поделиться

Scala - развивающийся язык, в который стоит инвестировать, особенно если вы пришли из мира Java. Scala широко описана в Artima . См. Эту статью Билла Веннерса, а также прочтите о Twitter и Scal a.

Относительно ваших вопросов:

  • Java может работать везде, где есть JVM. Однако с мобильными телефонами не повезло. Вам нужна полная JRE, а не то подмножество, которое там доступно.
  • Это возможно с JNI. Если что-то возможно с Java, то это возможно с Scala. Scala может вызывать классы Java.
  • Функциональное программирование - сильная сторона Scala, вам нужно изучить его. Однако вы также можете начать использовать его, не используя его в полной мере, и поработать с ним.
  • Существует подключаемый модуль Eclipse. Это не лучший вариант, но сработает. Подробнее здесь .
  • Если у вас есть опыт, я бы сказал очень быстро. Я рекомендую вам найти книгу для начала.
  • См. Эту запись faq для развертывания.
16
ответ дан 27 November 2019 в 20:30
поделиться

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

Выбрать язык с уже известной парадигмой относительно легко задача при необходимости. Поскольку Scala - это FP (по крайней мере, вы упомянули об этом), а C ++ / Python - это ООП, я бы сказал, что это хороший язык для вас.

3
ответ дан 27 November 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: