Я недавно озирался для изучения нового языка в течение моего свободного времени, и Scala, кажется, очень привлекателен.
У меня есть несколько вопросов относительно него:
Разве знание Java не наложит проблему в изучении его? Это будет большой недостаток позже? (т.е. Как часто люди полагаются на определенные для Java библиотеки?)
Как большой из различия это сравнивается с Ruby? (Кроме того, чтобы быть со статическим контролем типов) это вводит много новых терминов, или я буду знаком с большинством механизмов языка?
Какие ресурсы Вы рекомендовали бы? Я положил глаз Programming Scala
и Beginning Scala
книги
Хотя субъективный, действительно ли Scala является забавой запрограммировать в?: P
Спасибо
Я собираюсь предупредить вас о том, сколько знаний Java требуется, потому что я не согласен с тем, что это вообще не проблема. В Java есть вещи, которые имеют прямое отношение к scala и которые вам следует понимать.
Модель памяти Java и какие механизмы платформа предоставляет для параллелизма. Я говорю о синхронизации, потоках и т. Д.
Разница между примитивными типами (double, float и т. Д.) И ссылочными типами (т.е. подклассами Object
) .Scala предоставляет несколько хороших механизмов, чтобы скрыть это от разработчика, но при написании кода, который должен быть производительным, очень важно знать, как они работают
Это работает в обоих направлениях: среда выполнения Java предоставляет функции, которые (я подозреваю, хотя я может ошибаться) недоступны в Ruby и принесут вам огромную пользу:
Эти пункты №1 и №2 не являются непреодолимыми препятствиями, и я думаю, что другие сходства, упомянутые здесь, будут работать в вашу пользу. О, и Scala, безусловно, доставляет массу удовольствия!
У меня нет опыта работы с Ruby, но, тем не менее, я мог бы вам помочь.
Я не думаю, что незнание Java - это недостаток, но это может помочь. На мой взгляд, библиотеки Java используются относительно часто, но даже обученный кодировщик Java не знает их всех, так что здесь нет недостатка . Вы узнаете некоторые части библиотеки Java, изучая Scala, потому что даже библиотеки Scala используют их.
-
Я начал с чтения Programming Scala
и перешел к чтению исходного кода библиотеки Scala. Последнее очень помогло понять язык. И как всегда: Код, Код, Код. Чтение без программирования ни к чему не приведет, но я уверен, что вы это уже знаете. : -)
Еще одним полезным ресурсом являются блоги. См. https://stackoverflow.com/questions/1445003/what-scala-blogs-do-you-regularly-follow для компиляции хорошие блоги о Scala.
Это так! Как вы сказали, это очень субъективно. Но для меня, когда я имел опыт работы с Java, это было очень весело.
Вот мое мнение:
Не говоря уже о незнании Java.
Scala во многом полагается на библиотеки Java. Это вообще не имеет значения. Конечно, у вас могут возникнуть проблемы с чтением некоторых примеров, но этого недостаточно, чтобы стать помехой. Немного времени, и вы даже не заметите разницы между чтением документа Java API и документа Scala API (ну, за исключением совершенно другого стиля новейшего скаляра).
Однако часто предполагается знакомство со средой JVM. Если я могу дать здесь один совет, то сначала избегайте Maven и используйте SBT в качестве инструмента сборки. Для небольших программ в этом не будет необходимости, но это упростит решение многих проблем в мире Java-lang. Если вам нужна внешняя библиотека, познакомьтесь с SBT. С его помощью вам не придется иметь дело с каким-либо XML: вы пишете свои правила сборки на самом Scala.
Вам может быть трудно понять концепции и термины типа. Scala не только статически типизирован, но и имеет одну из самых мощных систем типов для неакадемических языков. Держу пари, это будет для вас источником наибольших затруднений. Другие концепции имеют другую терминологию, но вы быстро проведете параллели с Ruby.
Это не такое уж большое препятствие - вы можете преодолеть его, если хотите. Основным недостатком является то, что вы, вероятно, почувствуете, что любой другой статически типизированный язык, который вы выучите впоследствии, неуклюж и ограничен.
Вы не упомянули , Programming Scala на которую вы смотрели. Их два плюс один Программирование на Scala.Последняя была написана, среди прочего, создателем языка и широко считается отличной книгой, хотя, возможно, немного медленной. Один из Programming Scala был написан парнем из Твиттера - Алексом Пейном - и бывшим руководителем Object Mentor Дином Уэмплером. Это тоже очень хорошая книга. Начальная версия Scala была написана Дэвидом Поллаком, создателем Lift, и люди отзывались о ней хорошо. На самом деле, я не слышал, чтобы кто-нибудь жаловался ни на одну из книг Scala.
Одна из этих книг, безусловно, будет вам полезна. Кроме того, поддержка вопросов о переполнении стека для Scala очень хороша - я прилагаю все усилия, чтобы обеспечить это! :-) Есть список рассылки scala-users, где тоже можно получить ответы (пока люди не очень заняты), и есть IRC-канал #scala на Freenode, где вы также получите хорошую поддержку. Иногда людей просто нет рядом, но, если они есть, они вам помогут.
Наконец, есть блоги. Лучшим вариантом для начинающих, вероятно, является Daily Scala . Вы можете найти многие, многие другие: Planet Scala . Среди них мой собственный Algorithmically Challenged , который в последнее время не пользуется особой популярностью, но я вернусь к нему. : -)
Scala вернула мне удовольствие в программировании. Конечно, я занимался Java, и это не так, имхо. Одна из причин, по которой я трачу так много времени на ответы на вопросы о переполнении стека, заключается в том, что мне нравится находить решения для заданных вопросов.
Есть много концепций, которые разделяют Ruby и Scala. Я давно не писал Ruby, так что это не исчерпывающий список.
people.map (_. Name)
объект Foo {}
] и обновляют методы
. Re. пункт 1. Незнание Java и языка не обязательно является проблемой. Сторонние библиотеки в значительной степени легко интегрируются в Scala. Однако некоторая осведомленность о различиях в коллекциях может быть хорошей (например, список Scala не является традиционным списком Java, и API-интерфейсы могут ожидать последнего).
Навыки, связанные с Java, которые переносятся, связаны с Java платформой . т.е. вы все еще работаете с JVM, которая выполняет загрузку классов, сборку мусора, JIT-компиляцию и т. д. Так что опыт в этом полезен. Но совсем не обязательно.
Обратите внимание, что Scala 2.8 неизбежен, и в него внесены некоторые несовместимые изменения. 2.7. Поэтому любая книга и т. Д., Которую вы покупаете, должна знать о таких различиях.