Примерно раз в неделю кто-то из сабреддита Scala спрашивает совета, как изучить Scala. Ответы обычно самые разные, кто-то предлагает начать с книги Рунара, кто-то с курса Coursera. По моему опыту, большинству новичков в конце концов удается освоить язык, но это не значит, что они осваивают новый набор навыков наиболее эффективным способом.

Скала книги

Когда дело доходит до книг по Scala, очевидно, что это Программирование на Scala Одерского, Спуна, Веннерса.

Третье издание, выпущенное недавно, содержит Scala 2.12, но содержание в основном не изменилось по сравнению с предыдущим изданием. Это, вероятно, наиболее полное и авторитетное руководство по Scala. Мартин объясняет не только, как что-то сделать, но и почему он разработал язык таким образом. В книге почти 900 страниц, но читать ее несложно, лично мне удалось ее закончить примерно за три недели. Книга в основном концентрируется на особенностях языка и не погружается в экосистему Scala.

Когда я только начинал, я получил книгу Венката Программирование на Scala, и она мне очень понравилась. Вышедшее недавно второе издание называется Pragmatic Scala и содержит менее 300 страниц. Опять же, это в основном касается синтаксиса.

Изучение функционального программирования

Один из самых популярных курсов на Coursera — Принципы функционального программирования на Scala. Я даже встретил немало людей, которые познакомились со Scala именно на этом курсе. Тем не менее, я не рекомендую его для изучения языка. Если вам нужен Scala для работы, брать этот курс будет очень неэффективно. В конечном итоге вы потратите много времени и усилий, но получите очень мало с практической точки зрения. То же самое и с книгой Функциональное программирование на Scala. Хотя это, пожалуй, один из лучших когда-либо написанных учебников по CS, он не посвящен изучению Scala.

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

Фреймворки как часть учебного процесса

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

Итак, моя книга — Современная веб-разработка на Scala — включает в себя небольшой учебник по Scala, который учит основам, но в основном концентрируется на использовании реальных Scala-библиотек и фреймворков (в основном Play, но также и многих других) для создания полезных вещей. . Подробнее о книге можно прочитать на Leanpub.

Освоение Scala

Вопреки распространенному мнению, Scala не так уж сложно изучить. Конечно, есть несколько продвинутых тем, но большинство из них предназначены для дизайнеров библиотек, так что вы можете отложить их изучение как минимум на год. Я думаю, что самый быстрый способ стать мастером — это быстро изучить основы, а затем начать создавать собственное приложение на основе хорошо зарекомендовавшего себя фреймворка. В Scala есть много хороших фреймворков, но для меня Play сработал очень хорошо.

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