Я уже намекнул в предыдущей главе, что "Путеводитель неофита по Scala" подходит к концу. На протяжении последних пяти месяцев мы познакомились со многими возможностями языка Scala и его библиотек. Надеюсь, что Вы стали гораздо лучше разбираться в особенностях языка и стоящими за ними идеями.
Надеюсь, что это пособие стало хорошим дополнением для любого базового материала по Scala, будь то курс на Coursera или какая-нибудь книга. Я попытался рассказать обо всех особенностях языка, на которых я набил шишки. Тех моментах, которым не было уделено должного внимания во всех доступных мне книгах. Надеюсь, что мои пояснения Вам помогли.
Мы успели погрузиться в такие продвинутые темы как классы типов и типы, зависимые от пути. Я мог бы продолжать углубляться дальше и дальше в более сложные темы, но это противоречит духу данного пособия. Оно предназначено для продолжающих новичков-неофитов.
Поэтому я завершу эти статьи напутствием в мир Scala. Я расскажу Вам, куда двигаться дальше. не переживайте, я продолжу писать о Scala, но вне контекста этого пособия.
То как продолжится Ваше путешествие в Scala зависит от Ваших потребностей. Возможно, вам бы хотелось научить других Scala или Вы в таком восторге от системы типов, что Вам хотелось бы изучить более продвинутые техники и погрузиться в программирование на уровне типов.
Самым простой метод освоения нового языка заключается в том, чтобы написать с его помощью что-нибудь полезное, настоящее приложение, выходящее за рамки простых HelloWorld-ов. Лично я многому научился, участвуя в проектах с открытым исходным кодом.
Далее я расскажу подробнее об этих четырёх дорогах, они конечно не исключают друг-друга. Также я дам Вам множество ссылок к дополнительным материалам.
После изучения этого пособия Ваш уровень должен быть достаточно высок для того, чтобы учить основам языка. Возможно вы работаете на Java или Ruby и хотите зажечь ваших коллег интересом к Scala и функциональному программированию.
Прекрасно, тогда почему бы Вам не организовать семинар по Scala? При этом лучше не просто говорить и показывать слайды, но учить на примерах, постепенно решая маленькие задачки вместе. Самое главное — активное участие учеников!
Если такой путь Вам по душе, обратите внимание на коаны по Scala, набор небольших уроков, каждый из которых предлагает решить проблему, так чтобы программа прошла заданный тест, который изначально не выполняется. Проект написан под впечатлением от коанов по Ruby. Это очень хороший способ объяснения языка, при совместном решении небольших задачек.
Scalatron — другой замечательный проект, который идеально подходит для семинаров и других событий. Это игра, в которой разные боты сражаются друг с другом на виртуальном поле битвы. Почему бы не изучить язык, через совместное создание игрового бота, который будет сражаться с компьютером? Как только все более менее освоятся с языком, устройте соревнование, в котором каждый участник создаст собственного бота.
Мы видели лишь малую часть всего того на, что способна система типов в Scala. Если проблеск этого волшебства пробудил в Вас сильный интерес к сакральному искусству программирования на уровне типов, блог Марка Харра программирование на уровне типов в Scala может Вам очень понравиться.
Кроме того, я рекомендую познакомиться с библиотекой Shapeless, в которой Майлс Сэбин изучает возможности Scala в обобщённом и политиповом программировании (polytypic programming).
Можно читать книги, разбираться в обучающих статьях, блогах. Это всё очень хорошо, но для того чтобы по-настоящему освоиться в новом языке, необходимо научиться на нём думать. Настоятельно рекомендую начать делать какое-нибудь полезное приложение — что-то выходящее за рамки тренировочных задачек (полагаю, что это справедливо для любого языка).
Попробовав свои силы в настоящей задаче, построив какое-нибудь полезное приложение, Вы получите представление об экосистеме языка, его библиотеках, поймёте в каких ситуациях они могут вам пригодиться.
Для поиска подходящих библиотек или обновлений рекомендую Scaladex.
Сейчас большинство приложений в Scala становятся серверными приложениями, зачастую с REST-интерфейсом с HTTP или веб-фронтендом.
Если модель акторов пришлась Вам по душе, а следовательно и билиблиотека Akka, прекрасным выбором для создания REST-приложений может стать библиотека Akka-http. Это прекрасный инструмент, если Вам не нужен веб-фронтенд или Вы планируете создать одностраничное приложение, которое будет общаться с сервером с помощью REST API.
Если Вам нужно что-то менее минималистичное, посмотрите в сторону Play. Этот фреймворк является частью платформы от Lightbend. Она широко распространена и имеет хорошую поддержку.
Если две главы об акторах и Akka убедили Вас в том, чтобы воспользоваться ими в следующем приложении, придётся узнать о них гораздо больше.
Хотя документация по Akka достаточно подробно и обстоятельно описывает все доступные возможности и может служить прекрасным справочником, на мой взгляд, если вы хотите понять Akka, места лучшего чем книга Дерека Вайата Akka Concurrency Вам не найти. Доступна PDF-версия для предварительного просмотра.
После углубления в Akka, Вам стоит подписаться на Let It Crash. Там Вы найдёте множество продвинутых трюков и техник относящихся к Akka.
Если акторы Вам не близки, хочется чего-то близкого по духу к Future
, библиотека от Твиттер Finagle
-- Ваш выбор. Она позволяет структурировать приложение в виде набора небольших удалённых сервисов.
Есть поддержка многих популярных протоколов.
Другой, по настоящему прекрасный способ изучения Scala, заключается в участии в проектах с открытым исходным кодом — предпочтительно в проектах, посвящённых библиотекам, которыми вы сами пользуетесь.
Опять, тут нет ничего специфичного для Scala, но об этом стоит упомянуть. Если вы только-только изучили Scala и у вас нет возможности пользоваться ей на работе, это единственный путь — учиться у более опытных Scala-разработчиков.
Этот способ принуждает Вас читать много кода на Scala, который написан совершенно разными людьми, Вы обнаружите как много есть способов делать одни и те же вещи и какие из них являются идиоматичными, а какие — нет. К тому же более опытные коллеги будут проверять ваш код в пул-запросах.
В большинстве своём я нахожу сообщество Scala очень дружелюбным и отзывчивым. Не стесняйтесь участвовать в чужих проектах, даже если вы всего лишь новичок.
У разных проектов могут быть свои стили разработки, всё же стоит познакомиться с общепринятыми нормами написания кода в Scala Style Guide.
Участвуя в проектах с открытым исходным кодом, Вы начинаете общаться со Scala-сообществом. Однако, у Вас может не хватать на это времени или Вы предпочитаете другие способы общения с близкими по духу людьми.
Попытайтесь найти клуб любителей Scala в вашей округе. Узнайте когда и где они встречаются. Обзор Scala-сообществ по всему миру можно найти в Scala Tribes. Стартовая точка входа для поиска комьюнити Scala
Если Вам не нравится общаться вживую заходите на Канал общения
Кроме того я бы хотел порекомендовать ещё несколько источников:
-
Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnason, книга доступна для предварительного просмотра. Она учит функциональной парадигме и о том как решать задачи в рамках функционального подхода.
-
The Scala Documentation Site, сайт документации по Scala, на который почему-то нет ссылки из главного сайта Scala, особенно хочу отметить доступные там пособия и обучающие статьи.
-
Resources for Getting Started With Functional Programming and Scala by Kelsey Innis содержит множество ссылок по некоторым вопросам затронутым в настоящем пособии.
Надеюсь, что Вы читали эти заметки с удовольствием и мне удалось увлечь вас. Несмотря на то, что мы подошли к концу, я всерьёз надеюсь, что это только начало вашего путешествия в удивительном мире Scala. Дайте мне знать о том, что происходит с вами на пути и куда вы движетесь.