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

Теперь можно начинать!

Интернет-ресурсы

Видео Курсы

  1. Мартин Одерски - Принципы функционального программирования в Scala

Https://www.coursera.org/learn/progfun1/home/welcome

Я не могу называть себя настоящим парнем, специализирующимся на Scala, если не ставлю курс Мартина Одерски (изобретателя Scala) на первое место. Думаю, многие начинают с этого момента. Я должен признать, что это не так просто, но, на мой взгляд, в какой-то момент вашей карьеры разработчика Scala стоит отказаться от него. Это также хорошая идея для людей, которым нужна дополнительная мотивация, поскольку у вас есть крайние сроки для тестирования программирования на этом 6-недельном курсе.

2. Марк Льюис - Введение в программирование на Scala

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

3. Курсы Udemy: Stairway to Scala Applied, Part 1, Stairway to Scala Applied, Part 2 и Stairway to Scala Applied, Part 3.

Эти курсы Удеми великолепны. Они начинаются с синтаксиса языка и заканчиваются действительно низкоуровневыми функциями SBT (Scala Build Tool). Что дает вам весь спектр того, чего вы можете достичь с помощью Scala.

4. Еще курсы Udemy: Rock the JVM! Scala и функциональное программирование для начинающих , Rock the JVM! Advanced Scala и функциональное программирование , Rock the JVM! Основы Akka на Scala

Я бы порекомендовал Rock the JVM series немного более продвинутым людям, которые уже умеют программировать, поскольку они могут быть слишком сложными для того, кто только начинает. Также предоставляет вам множество разнообразных вещей, от функциональных библиотек до параллельного программирования.

5. https://www.fp-tower.com/courses/foundations

Удивительный курс по функциональному программированию на Scala, проведенный Жюльеном Трюффо. Жюльен поможет вам перейти от объектно-ориентированного мышления к функциональному. Если вас начинает трясти, когда кто-то говорит eta extension, этот курс определенно для вас!

6. https://www.youtube.com/c/DevInsideYou

Youtube канал, где автор публикует Scala, а не только видео плейлисты. Отличный ресурс для разработчиков, которые хотят получить некоторые знания об основах Scala, а также о некоторых более продвинутых концепциях, таких как tagless final и т. Д.

7. https://www.youtube.com/channel/UCRS4DvO9X7qaqVYUW2_dwOw

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

8. https://scala.zone /

Бесплатный онлайн-ресурс для изучения Scala 3. Конкретные видео-уроки, проведенные Jon Pretty и Virtus Labs.

9. https://leobenkel.com/category/scala/

Короткие уроки с примерами из реальной жизни, сделанными Лео Бенкелем, могут стать хорошей отправной точкой или местом, где вы можете пересмотреть некоторые концепции и отточить свои навыки.

Электронные книги

  1. Https://underscore.io/books/

Набор бесплатных электронных книг по различным темам и экосистемам Scala, таким как Play или Slick.

2. Упрощенное функциональное программирование Элвин Александер

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

3. Введение в программирование и решение проблем с использованием Scala Марк К. Льюис, Лиза Лачер

Продолжение упомянутого ранее курса Scala Марка К. Льюиса.

4. Проекты программирования Scala: создавайте реальные проекты с использованием популярных фреймворков Scala, таких как Play, Akka и Spark. Микаэль Валот, Николас Джоранд

Введение в язык с точки зрения создания веб-приложения. Может быть хорошим выбором для людей, которые хотят видеть больше, чем вывод на консоль.

5. https://www.lightbend.com/ebooks

Еще один агрегатор книг по разным вещам Scala. Люди, знакомые с языком, могут найти для себя что-нибудь полезное. Много говорится о многих мощных инструментах и ​​методах.

6. Головоломки Scala. Веселый путь к более глубокому пониманию Эндрю Филлипс, Нермин Шерифович

Сборник ответов о том, что именно происходит за компилятором и как он работает. Сообщает вам о ловушках и подводных камнях, которые ждут вас.

7. https://riptutorial.com/ebook/scala

Бесплатная электронная книга по основам в упакованном виде от авторов StackOverflow.

Блоги

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

  1. Https://scalac.io/blog/
  2. Https://blog.softwaremill.com
  3. Https://www.lightbend.com/blog/scala
  4. Https://alvinalexander.com/scala/how-to-use-sortInPlaceBy-method-mutable-sequences-arraybuffer/
  5. Https://www.reddit.com/r/scala/
  6. Https://medium.com/disney-streaming
  7. Http://www.lihaoyi.com
  8. Http://kubuszok.com
  9. Https://blog.rockthejvm.com/
  10. Https://scala.monster/

Если вы не хотите подписываться на все упомянутые блоги, просто отметьте это: https://scalatimes.com. Он объединяет самые последние сообщения в блогах из мира Scala.

Кодирование практики

Вы, наверное, уже знаете, что без практики не бывает программирования. Итак, код, код и код. Если вы хотите начать с некоторых основ синтаксиса Scala с объяснениями и со временем углубиться, я бы выбрал:

  1. Https://www.scala-exercises.org

Ниже вы можете найти список веб-сайтов, на которых вы можете попробовать себя и решить небольшие алгоритмические проблемы.

2. http://exercism.io

3. https://www.codewars.com

4. https://tourofscala.com/

Или вы можете найти список катов кодирования и опубликовать их на github.com после их взлома. Это обогатит вашу карьеру!

Другие типы

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

  1. Https://github.com/hjhuney/An-Intro-to-Scala
  2. Https://github.com/dehun/learn-fp/

Первый - о начале со Scala, а второй - о функциональном подходе. (Спасибо, капитан, очевидно! 😂)

Следующие из самого Твиттера:

  1. Https://twitter.github.io/scala_school/
  2. Http://twitter.github.io/effectivescala/

И эти два ниже помогут вам ознакомиться с передовыми практиками и ответами на наиболее распространенные вопросы Scala.

  1. Https://nrinaudo.github.io/scala-best-practices/
  2. Https://kubuszok.com/2018/scala-fud-faq-for-newbies/#i-heard-scala-has-poor-ide-support---is-it-true

Книги

Наконец, пришло время для бумажных книг (кстати, вы все еще можете скачать их как электронные книги 😂), но если вы хотите почувствовать бумагу в своих руках, вы можете взять их осязаемые версии.

  1. Scala для нетерпеливых Кей Хорстманн

Хороший момент для начала, поскольку К. Хорстман - один из гуру JVM. В книге представлены ключевые концепции Scala, которые вам нужно знать, чтобы начать продуктивно работать с языком. Все предоставляется пользователю в сжатом виде.

2. Изучение Scala: практическое функциональное программирование для JVM Джейсон Шварц

Еще одна книга, которая познакомит вас с основами, поскольку кажется, что вам не нужно быть специалистом по распределенным системам или специалистом по данным, чтобы широко использовать Scala. Книга демонстрирует, почему изучение Scala с кратким синтаксисом и статической типизацией может улучшить ваше мастерство как разработчика Ruby или Python.

3. Программирование на Scala, масштабируемость = функциональное программирование + объекты Дин Уэмплер, Алекс Пейн

Как сказано в названии, он объединяет две парадигмы программирования, чтобы показать вам красоту Scala. Отличное введение в язык и экосистему.

4. Программирование на Scala: подробное пошаговое руководство Мартин Одерски

Тот, что выше, очень хорошо подготовлен с точки зрения обучения. Новые концепции вводятся на основе предыдущих. Указывает на лучшие части и довольно легко объясняет новые функции.

5. Функциональное программирование на Scala Пол Кьюзано

Многие называют Библией функционального программирования на Scala. Объясняет, как применить этот подход и использовать его в повседневных бизнес-задачах, а также как включить его в свой код. Автор ведет читателей от почти очевидных концепций к более сложным темам в логической и правильно структурированной форме.

6. Программирование на Scala: преодоление многоядерной сложности на виртуальной машине Java Венкат Субраманиам

Венкат Субраманиам - широко известный и довольно популярный автор вводных книг в мире JVM. Вы можете проверить его на YouTube, где он дает вам широкое вступление к Scala менее чем за 2 часа. Вышеупомянутая книга представляет собой серьезное руководство по основам Scala.

7. Scala в действии Ниланджан Райчаудхури

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

8. Scala in Depth Джошуа Д. Суэрет

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

Конференции и встречи

За каждым прекрасным языком стоит большое сообщество. Это верно и для Scala, поскольку он по-прежнему имеет открытый исходный код, и компания Lightbend поддерживает и развивает его. Приятно посещать местные встречи или конференции рядом с вами. Почему? Потому что это дает вам возможность познакомиться с такими людьми, как вы, которые только начали учиться программировать или переходят с другого языка. В будущем вы можете сотрудничать с ними в своем проекте, написанном на Scala, или, может быть, вы сможете вместе ставить цели и мотивировать друг друга. На конференциях или встречах вы глубже погрузитесь в язык. Вы узнаете много нового о том, как люди преодолевают трудности в своих проектах или как использовать новейшие функции Scala. Вы также можете встретить людей, которые могут стать вашими наставниками в будущем. Безусловно, это гораздо более широкая тема, но, возвращаясь к Scala, вы можете найти конференции здесь: https://www.scala-lang.org/events/ и встречи здесь: https://www.meetup.com/ .

Самое лучшее, что вы можете найти в конференциях, - это то, что вы можете найти множество лекций, которые уже размещены на их каналах YouTube! Вы должны их попробовать!

Вы можете найти гораздо больше источников для ваших знаний, но они проверены и рекомендованы не только мной. Я не стал слишком подробно описывать каждый элемент, чтобы не делать этот список ресурсов слишком длинным. Вам не нужно идти за каждым. Просто начните и наберитесь терпения!

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

И последнее, но не менее важное: помните, что обучение в целом требует времени. Это не спринт, это марафон. Для уверенности. Знайте, что это займет время, вы проиграете, но будьте терпеливы, будьте последовательны, делайте один маленький шаг каждый день и помните о призе в конце.

По прошествии некоторого времени и достижения приличного уровня программирования вы можете проверить, что делать дальше на своем карьерном пути, здесь: ЧТО ДАЛЬШЕ? (Я знаю, что речь идет не только о Scala, но принципы примерно такие же).

Если вы все еще не знаете, как начать путешествие по Scala в вашем случае, например вы новичок в программировании или новичок в функциональном языке или в чем-то еще, просто дайте мне знать, и я помогу вам структурировать свой путь к тому, чтобы стать мастером Scala. Напишите мне сообщение в LinkedIn, Twitter или по электронной почте [email protected]. Я буду более чем счастлив помочь вам и поделиться некоторыми мыслями.

Также я рекомендую вам подписаться на мою рассылку https://brandingfordevs.substack.com/.