Языки программирования

Учебник Scala для начинающих

22 урока · 6 разделов · бесплатно, без регистрации

Scala 3 объединяет два мира программирования: строгость объектно-ориентированного подхода и выразительность функционального стиля — всё это на проверенной виртуальной машине Java.

Этот премиум-курс ведёт от первой строчки кода до уверенной работы с паттерн-матчингом, неизменяемыми коллекциями, Option и Either. Каждый урок объясняет, как код работает под капотом JVM, разбирает частые ошибки и даёт лучшие практики. Концепции дополнены запускаемыми примерами на Python и наглядными схемами.

Курс «Scala: ООП и функциональное» состоит из 6 разделов и 22 уроков: Основы: значения, переменные и типы, Функции и методы, Классы, объекты и трейты, Паттерн-матчинг и case-классы, Коллекции и функциональщина и For-выражения, Option и что дальше. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Основы: значения, переменные и типы

    1. Что такое Scala и зачем она нужна

      Scala 3 — гибридный язык на JVM, объединяющий ООП и функциональное программирование. Знакомимся с философией языка.

    2. val и var: неизменяемость по умолчанию

      Разница между val (неизменяемое значение) и var (переменная). Почему Scala поощряет неизменяемость и как это влияет на код.

    3. Иерархия типов Scala

      Система типов Scala: Any в корне, AnyVal для примитивов, AnyRef для объектов, Nothing внизу. Единое дерево без разрыва.

  2. 2 Функции и методы

    1. Методы: def, параметры и возврат

      Объявление методов через def, типы параметров, выводимый тип возврата и тело-выражение в Scala 3.

    2. Функции как значения первого класса

      Функции-значения в Scala: лямбды, тип Function, сохранение функций в переменные и передача их в другие функции.

    3. Функции высшего порядка

      Функции, которые принимают или возвращают другие функции. Основа функционального стиля Scala — переиспользуемые абстракции поведения.

    4. Параметры по умолчанию и именованные аргументы

      Значения параметров по умолчанию, вызов с именованными аргументами и зачем это упрощает API в Scala 3.

    5. Рекурсия и хвостовая оптимизация

      Рекурсия в Scala, опасность переполнения стека и аннотация @tailrec для гарантированной хвостовой оптимизации.

  3. 3 Классы, объекты и трейты

    1. Классы и конструкторы

      Объявление классов в Scala 3, параметры конструктора, поля и методы. Лаконичный синтаксис без шаблонного кода.

    2. Объекты-одиночки и companion-объекты

      Ключевое слово object для одиночек, companion-объекты для классов и фабричный метод apply вместо статических членов.

    3. Наследование и трейты

      Наследование классов через extends, абстрактные методы и трейты — гибкая замена интерфейсов с реализацией.

    4. Sealed-иерархии и enum

      Запечатанные иерархии sealed для исчерпывающих проверок и новый enum в Scala 3 для перечислений и алгебраических типов.

  4. 4 Паттерн-матчинг и case-классы

    1. match: сопоставление с образцом

      Выражение match в Scala — мощная замена switch: сопоставление по значениям, типам и условиям с возвратом результата.

    2. case-классы: данные без шаблонного кода

      case class в Scala 3: автоматический apply, equals, hashCode, toString, copy и поддержка паттерн-матчинга из коробки.

    3. Исчерпывающие проверки sealed-типов

      Почему sealed-иерархии и enum дают исчерпывающий паттерн-матчинг и как компилятор предупреждает о пропущенных случаях.

  5. 5 Коллекции и функциональщина

    1. Списки, множества и словари

      Базовые неизменяемые коллекции Scala: List, Set, Map. Создание, обращение и почему неизменяемость — по умолчанию.

    2. map и filter: преобразование данных

      Главные функциональные операции коллекций: map преобразует каждый элемент, filter отбирает подходящие. Декларативный стиль.

    3. fold, reduce и агрегация

      Свёртка коллекции в одно значение: foldLeft с начальным значением, reduce, а также sum, count и другие агрегаты.

  6. 6 For-выражения, Option и что дальше

    1. for-выражения и yield

      for-выражения Scala: генераторы, фильтры и yield для построения коллекций. Сахар над map, flatMap и filter.

    2. Option: безопасная работа с отсутствием

      Тип Option (Some/None) вместо null: безопасное представление отсутствующего значения и методы getOrElse, map, flatMap.

    3. Try и Either: обработка ошибок

      Функциональная обработка ошибок: Try (Success/Failure) для исключений и Either (Left/Right) для двух исходов.

    4. Экосистема Scala и что дальше

      Обзор экосистемы Scala: sbt, ZIO и Cats для функционального программирования, Akka и Spark, и план дальнейшего изучения.