Scalabook
О проекте
ScalaBook — это постоянно обновляемая рабочая тетрадь по функциональному программированию на Scala, охватывающая следующие темы:
- Основы функционального программирования
- Алгоритмы и структуры данных
- Классы типов и работа с типами в Scala
- Практические упражнения для закрепления материала
В эпоху многоядерных процессоров и параллельных вычислений ФП предлагает следующие преимущества:
- Безопасность данных: неизменяемость исключает гонки состояний.
- Предсказуемость: явное управление ошибками через типы (например,
Option,Either) вместо исключений.
Пример:
// Проблема императивного подхода: скрытые ошибки через исключения
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:

Обратная связь
Ваша обратная связь — топливо для развития проекта. Исправляете ли вы опечатки, предлагаете новые темы или просто говорите «спасибо» — каждый отклик важен.
Как можно помочь?
-
✏️ Исправить ошибку:
нажмите «Редактировать страницу» (в правом меню) и отправьте правку — даже запятая имеет значение! -
💡 Предложить улучшение:
оставьте комментарий — каждый объективный комментарий важен. -
⭐ Добавить в избранное:
если проект полезен, добавьте его в избранное на GitVerse — это лучший сигнал движения в верном направлении. -
📬 Связаться напрямую: контакты ниже.
Контакты
- Исходный код проекта: доступен на GitVerse
- Последние обновления Scalabook доступны на следующей странице
- А за будущими изменениями можно следить здесь
- Мои профили:
- Для связи: написать email
- Для совместной работы: вакансии ИТ-компании «Криптонит»