- Переносимость: Linux и Windows по крайней мере я надеюсь. Как насчет мобильных телефонов, кто-нибудь преуспел в том, чтобы заставить его работать там?
Да. Scala на Android. Что касается J2ME, я видел что-то в этом отношении, но не так много. Существует некоторый код, относящийся к J2ME в репозитории исходного кода. Я не уверен, насколько это жизнеспособно, но мне кажется, что на это не так много спроса.
Я также упомянул, что есть/был пул на Скала-Ланге о желаемых целевых платформах, а J2ME был одним из них, очень низким на полюсе тотема.
- Совместимость на C++: можно ли смешивать код C++ с Scala? (JNI?)
Как и вы можете смешивать C++ с Java, что бы это ни стоило.Если у вас нет опыта с этим, вы можете просто прочитать ресурсы Java, поскольку что-нибудь в них будет применимо к Scala без изменений (кроме синтаксиса Scala).
- Парадигма программирования: Я не чувствую себя комфортно с переключением на FP в это время. Могу ли я использовать OO и процедурный с некоторыми FP вначале, а затем изменить пропорции по мере того, как я узнаю?
Определенно, да. Scala выходит из своего способа убедиться, что вам не нужно программировать в функциональном стиле. Это основная критика Scala от функциональных людей, по сути: некоторые не считают функциональность языка, если только это не заставляет программиста писать в функциональном стиле.
В любом случае, вы можете идти прямо на все, что вам нужно. Моя ставка, однако, заключается в том, что вы получите функциональные привычки, даже не осознавая, что они функциональны.
Возможно, вы можете посмотреть серию Matrices в своем собственном блоге о написании класса Matrix. Несмотря на то, что он выглядит как стандартный OO-код, он, по сути, очень функциональный.
- Срок службы цепочки инструментов: как вы общаетесь с IDE и отладчиками? Я использую Eclipse прямо сейчас, и все выглядит нормально.
IDEA (IntelliJ), NetBeans и Eclipse имеют хорошую поддержку для Scala. Кажется, что IDEA является лучшим, а NetBeans/Eclipse поддерживают лягушку, прыгая друг с другом, хотя NetBeans, безусловно, был более стабильным, чем Eclipse в последнее время. С другой стороны, поддержка Eclipse использует очень перспективный маршрут, который должен давать результаты в течение следующих 6 месяцев или около того - это просто трассировочный маршрут. :-)
Некоторые интересные признаки инструментария Scala для этих сред являются тем фактом, что плагин Eclipse в разработке использует AOP для более плавной интеграции со всей средой IDE, что плагин NetBeans полностью переписан в Scala и что есть Scala Power Pack на IDEA, который поддерживает, среди прочего, перевод 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?
Очень быстро. В качестве чисто OO-языка Scala уже представляет некоторые интересные функции, сравнимые с некоторыми вещами, которые присутствуют на C++, но не с Java, хотя они работают по-разному.В этом отношении, как только вы поймете, для чего такие функции связаны и связаны с C++, вы намного опережаете программистов Java, поскольку вы уже знаете, что с ними делать.
- Развертывание: как именно вы развертываете программу Scala? Это банка, это исполняемый файл?
То же самое, что и Java. Вы можете развернуть JAR, WARs или любые другие цели Java, потому что компилятор scala генерирует файлы классов. Фактически, вы используете jar Java для генерации файла JAR Scala из файлов классов, а Maven для поддержки Lift поддерживает создание WAR-файлов.
Существует альтернатива для файлов сценариев. Вы можете вызвать «scala», чтобы запустить исходный код Scala напрямую, подобно сценарию Perl of Shell. Это также можно сделать в Windows. Однако даже с использованием демона компиляции для ускорения выполнения время запуска достаточно медленное, чтобы эффективное использование Scala в среде с тяжелыми сценариями нуждалось в чем-то вроде Nailgun.
Что касается недостатков Scala, взгляните на мой ответ (и другие) в this Вопрос переполнения стека.
Книга:. Программирование в Scala, Одерски и др Artima, 2007 – akarnokd
Спасибо всем за ваши ответы и рекомендации. Я решил поближе познакомиться с Скалой. – rpg
Лучшей книгой для меня была «Скала для нетерпения» Кей Хёрстманна. Первые 9 глав свободно доступны. – Jabba