Ответы пользователя по тегу Функциональное программирование
  • Изучение программирования путем Скалы?

    @a1go1ov
    Scala fan, Java developer
    Если в программировании вы 0 и хотите начать правильно вникать в программирование, то начните с классики - Structure and Interpretation of Computer Programs (SICP), эта книга закладывает хорошие основы, а так же познакомит вас с функциональным программированием:
    книга:
    web.mit.edu/alexmv/6.037/sicp.pdf
    вспомогательный сайт для самостоятельного изучения книги:
    https://mitpress.mit.edu/sicp
    sicp.sergeykhenkin.com/sicp-exercise-solutions
    перевод книги (не в курсе на счет качества)
    newstar.rinet.ru/~goga/sicp/sicp.pdf
    видео лекций по книге:
    ocw.mit.edu/courses/electrical-engineering-and-com...

    Конкретно по Scala:

    С точки зрения Scala, на мой взгляд самый оптимальный вариант это пройти курсы по Scala на coursera.org. Но ниже будут примеры и ссылки и других источников для иучения программирования на Scala..

    Интерактивные курсы

    cousera.org:
    Специализация по Scala - один из фундаментальных источников знаний о программировании на Scala. В составе - видео лекции, доп. материалы, вопросы на закрепление, задания на программирование, форум для вопросов и обсуждения (все опционально). В принципе можно вместо SICP сразу начинать со специализации на coursera.org, в частности первый курс в специализации как раз таки проектировался Мартином в стиле SICP (по крайней мере до создания специализации программа курса и задания были в духе SICP).

    https://www.coursera.org/specializations/scala

    Ссылки на курсы из специализации по отдельности (для бесплатной регистрации):
    1. Functional Programming in Scala
    2. Functional Program Design in Scala
    3. Parallel programming
    4. Big Data Analysis with Scala and Spark

    Курс стоящий немного в стороне, о reactive programming на scala:
    Принципы реактивного программирования

    ---
    Интерактивные упажнения по Scala от 47 Degrees (на данный момент 6 курсов std lib, cats, shapeless, doobie, scalacheck, FP in Scala)
    https://www.scala-exercises.org

    www.scalakoans.org - небольшие уроки для изучения
    ---
    Big data university (с уклоном в Data Science и Big Data):

    Introduction to Scala
    Scala for Data Science
    Spark Overview for Scala Analytics
    ------------------------------------------

    Если вас больше интересует не интерактивный стиль обучения, а вдумчивое чтение, то можно посоветовать следующие книги:

    Книги:

    На русском,к сожалению, есть только одна книга:
    Scala для нетерпеливых
    но для новичка в программировании она скорее всего не подойдет.

    также в 2016 вышла обновленная версия книги от Martin Odersky, Lex Spoon и Bill Venners, которая покрывает все вопросы связанные со Scala (859 стр), в том числе все нововведения на текущий момент (вплоть до Scala 2.12). Эту книгу можно также читать если вы новичок в программировании. Это наверно самый фундаментальный источник для изучения Scala:
    Programming in Scala, Third Edition

    После ознакомления с основами Scala для углубления именно функциональных аспектов программирования на Scala можно прочитать замечательную книгу от Paul Chiusano и Rúnar Bjarnason:
    Functional Programming in Scala

    Для изучения практических основ проектирования современных приложений с использованием возможностей Scala и ее экосистемы, с применением функциональной парадигмы, рекомендую отличную книгу от Debasish Ghosh
    Functional and Reactive Domain Modeling

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

    Также можно почитать перевод уроков Scala от Twitter:
    Scala Школа!
    ------------------------------------------

    Алгоритмы
    На счет алгоритмов, про которые вы упоминали, можете посмотреть прекрасный набор классических алгоритомов и структур данных, реализованных на Scala в чисто функциональном стиле:
    scalacaster от @vkostyukov(Twitter, Finagle)
    или
    scalgos от @pathikrit
    ------------------------------------------

    Остальное
    Ninety-Nine Scala Problems - набор небольших упражнений (с ответами) для изучения Scala

    Hands-on Scala.js - туториал по Scala.js от @lihaoyi

    Type-Level Programming in Scala - серия постов из десяти частей на тему продвинутого использования возможностей системы типов Scala от Rúnar Bjarnason (соавтор Functional Programming in Scala) и Mark Harrah (разработчик sbt)

    Scala Best Practices - колеекция хорощих практик программирования на Scala от Alexandru Nedelcu

    P.S. Также если хочется держать руку на пульсе о том, что происходит в экосистеме и community Scala, то можно посмотреть эту подборку блогов и новостных и видео ресурсов о Scala
    Ответ написан
    Комментировать