Scalabook

О проекте

ScalaBook — это постоянно обновляемая рабочая тетрадь по функциональному программированию на Scala, охватывающая следующие темы:

В эпоху многоядерных процессоров и параллельных вычислений ФП предлагает следующие преимущества:

Пример:

// Проблема императивного подхода: скрытые ошибки через исключения
def divide(a: Int, b: Int): Int =
  if b == 0 then throw new Exception("Division by zero") else a / b

// Решение ФП: то, что функция определена не для всех входящих значений,
// явно отражено в типе
def divide(a: Int, b: Int): Option[Int] =
  if b == 0 then None else Some(a / b)

Использование Option делает невозможные состояния (например, деление на ноль) видимыми на этапе компиляции, что снижает количество runtime-ошибок.

Алгоритмы и структуры данных

В мире больших данных неэффективные алгоритмы приводят к значительным затратам ресурсов.

Пример:

Проверка list.length > 0 связанного списка на не пустоту требует O(n) операций — для списка из миллиона элементов это миллион лишних действий. В то время как list.nonEmpty - это одна операция.

Даже с развитием ИИ, который может описать и разъяснить код, понимание алгоритмов позволяет осознанно выбирать решения (например, HashMap vs List для поиска) и оптимизировать код в высоконагруженных системах.

Практическая направленность

Теория без практики бесполезна. Scalabook включает:

Основные разделы

Раздел Описание
Функциональное программирование Основные концепции и принципы функционального программирования
Классы типов Изучение классов типов и теории категорий
Алгоритмы Реализация классических алгоритмов в функциональном стиле
Структуры данных Функциональные структуры данных
Cats effect Обзор Cats effect - чистой асинхронной среды выполнения
Инструментарий Обзор популярных Scala-библиотек
Практикум Создание приложения на Scala, используя принципы функционального программирования
Переводы Переводы на русский язык статей, учебных материалов и докладов. Решение заданий из различных книг и сайтов с упражнениями
Ресурсы Полезные ссылки на книги, статьи, онлайн-курсы и видеоматериалы для углубленного изучения

Цель проекта

Практика показывает, что у Scala - высокий порог входа. Это цена за его выразительность, гибкость и мощь. Но высокий порог входа - проблема ли это разработчиков, только начинающих изучать Scala и ФП? Скорее это проблема тех, кто уже знает Scala, кто перепрыгнул через пропасть, но не может или не хочет построить через эту пропасть мост. А кричит следующему: "Прыгай и ты! Я же смог!"

Цель ScalaBook — построить "мост". Высокий порог входа - это не повод для гордости "а я смог!", а повод задуматься: а что ты сделал, чтобы этот порог снизить?

Строительство Manhattan Bridge, 1909:

Manhattan Bridge

Обратная связь

Ваша обратная связь — топливо для развития проекта. Исправляете ли вы опечатки, предлагаете новые темы или просто говорите «спасибо» — каждый отклик важен.

Как можно помочь?

Контакты