Вероятно, существует миллиард способов начать изучать Scala. Все зависит от вашего предыдущего опыта, причины обучения, сколько у вас времени и т. Д. Этот пост покажет, как я подошел к проблеме и какие материалы я нашел наиболее полезными (из множества, которые вы можете найти в Интернете). Если вы сочтете их бесполезными - извините, если у вас есть лучшие - напишите о них в комментариях.

Я постараюсь обновить этот пост новыми ссылками.

Все ссылки внизу.

Почему я пишу этот пост?

Чтобы отслеживать, что я сделал, и писать что-нибудь на Medium.

Почему я начал изучать Scala?

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

Материалы

Вместо того, чтобы по-старому читать документы Scala, как будто это книга, я решил пойти на что-то более миллениальное - онлайн-курс. Очень простой и доступный способ, который позволяет вам сесть, расслабиться и написать код вместе с парнем на экране. Я выбрал этот https://www.safaribooksonline.com/library/view/practical-scala-for/9781491969472/ [1], потому что он просто звучал как то, что я искал (мягкий переход с земли Java на Scala земля). Я хорошо провел время, слушая двух умных парней. Джулиан, кажется, немного медлит со своими мыслями, но Бен неплохо справляется с настройкой микрофона и ускоряет его. Он не научит вас функциональному программированию, но вы получите основы синтаксиса и некоторые передовые практики с самого начала. Существует бесплатная 10-дневная пробная версия, так что планируйте выходные с умом.

Сразу после этого мне в руки попала легендарная Красная книга Scala - https://www.manning.com/books/functional-programming-in-scala [2]. Это, наверное, самая рекомендуемая книга по Scala. Он предлагает вам выполнить множество упражнений ТОЛЬКО с функциональным подходом (подробнее об этом позже). Вы начинаете реализовывать с нуля некоторые структуры, такие как List, Option или Either. Затем вы проектируете и реализуете несколько библиотек, а потом я не знаю - все еще во второй части. В любом случае, это обязательно, если у вас нет функционального фона.

Последний большой источник - это специализация Coursera на Scala - https://www.coursera.org/specializations/scala [3]. Некоторые теоретические части уже были бы занесены в Красную книгу, но упражнения здесь - золото. Также подчеркните функциональный подход с помощью некоторых советов от создателя Scala - Мартина Одерски. Курсы бесплатны, если вы подписываетесь и отказываетесь от подписки. Вы по-прежнему можете отправлять свои решения и отмечать их. Вы просто не получите сертификат, если не заплатите.

Ежедневные места для посещения

Есть и другие места, которые стоит регулярно посещать, например: комната Reddit (https://www.reddit.com/r/scala/ [4]), Twitter Scala School (https://twitter.github.io / effectivescala / [5]), а также на официальной странице документации Scala ( https://docs.scala-lang.org/ [6]).

Другие вещи, которые мне понравились - здесь будет больше промежуточных вещей

Этот курс под названием Промежуточные рецепты Scala (https://www.safaribooksonline.com/library/view/scala-intermediate-recipes/9781788397650/ [7]) содержит множество действительно интересных советов и приемов по сопоставлению с образцом, сбору и тестированию . Замечательно смотреть и делать заметки - очень полезно возвращаться во время кодирования!

Наблюдения в реальной жизни

  1. Сидеть и делать упражнения, как правило, очень весело, но в конечном итоге это никуда не приведет. Не нужно говорить, что вам нужно больше всего - реальный проект, старшие люди, которые гадят на ваш код и т. Д.
  2. Все в восторге от того, как Scala сочетает функциональную и объектно-ориентированную парадигмы, но похоже, что все мозги Scala на самом деле убегают от объектно-ориентированного программирования и пишут максимально функциональный код (и вы должны). Они даже пишут целые библиотеки, чтобы делать это все больше и больше (коты, скалязы).

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Ссылки:

[1] https://www.safaribooksonline.com/library/view/practical-scala-for/9781491969472/

[2] https://www.manning.com/books/functional-programming-in-scala

[3] https://www.coursera.org/specializations/scala

[4] https://www.reddit.com/r/scala/

[5] https://twitter.github.io/effectivescala/

[6] https://docs.scala-lang.org/

[7] https://www.safaribooksonline.com/library/view/scala-intermediate-recipes/9781788397650/