Вероятно, существует миллиард способов начать изучать 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]) содержит множество действительно интересных советов и приемов по сопоставлению с образцом, сбору и тестированию . Замечательно смотреть и делать заметки - очень полезно возвращаться во время кодирования!
Наблюдения в реальной жизни
- Сидеть и делать упражнения, как правило, очень весело, но в конечном итоге это никуда не приведет. Не нужно говорить, что вам нужно больше всего - реальный проект, старшие люди, которые гадят на ваш код и т. Д.
- Все в восторге от того, как 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/