Scala для начинающих
https://t.me/lilfunctorДисклеймер: дальше идут абсолютно дилетантские советы, к которым можно прислушиваться только на свой страх и риск. Я предупреждал. Текст является шаблонным ответом на вопрос “Миша, как вкатиться в скалу?”. Наибольшую ценность представляют ссылки в разделе “Ресурсы для самостоятельного изучения”.
Нет времени на курсы от EPFL, а вкатиться в скалку хочется? Не проблема! Надо просто установить компилятор и начать делать небольшой проектик, изучая всё на ходу.
В качестве проекта отлично подойдёт относительно небольшой бэкенд, общающийся с окружающим миром json-ами, идущими по http и, желательно, вебсокетам. В качестве предметной области можно взять хотя бы CRM для кофейни, которая должна уметь отдавать меню, принимать заказы, мониторить официантов и... делать ещё что-нибудь прикольное.
Лучше даже не заморачиваться с веб-страничками, давайте представим, что в нашей кофейне есть ещё фронтендщик, которому нужно просто предоставить апи. Хотя можно и заморочиться, хуже не будет.
Стоит всегда держать в голове, что цель проекта не сделать оптимальную CRM, а познакомиться с технологиями. Поэтому ниже будут перечислены инструменты, которые являются абсолютным оверкиллом для такой предметной области, но всё равно рекомендуются к использованию.
Ресурсы для самостоятельного изучения
1. https://twitter.github.io/scala_school/ru/
2. https://github.com/anton-k/ru-neophyte-guide-to-scala
3. http://twitter.github.io/effectivescala/
4. http://exercism.io
Первые две ссылки — абсолютные мастриды, [3] можно прочитать по диагонали, а на экзерцизме советую основательно позалипать.
Что использовать в пет-проджекте
0. Система сборки — sbt, IDE — Intellij IDEA;
1. Для выстраивания архитектуры проекта — Akka (и акторы, и стримы);
2. Для веб-роутинга — Akka-http / http4s (но, раз уже есть остальная акка, http тоже лучше взять из неё);
3. Для коннекта к реляционной БД — Quill для любителей орм / doobie для любителей plain sql;
4. Для сериализации — json4s / circe;
5. Если очень хочется сделать сайт с веб-страничками, и жить не можем без фреймворков — scalatra (лучше) / Play (хуже);
6. Тестирование — scalatest.