Skip to content

Latest commit

 

History

History
131 lines (119 loc) · 15.3 KB

index.md

File metadata and controls

131 lines (119 loc) · 15.3 KB
layout
default

Курс программирования на языке Scala

Темы курса:

  • Основы функционального программирования. Разберем принципы работы с неизменяемыми и персистентными структурами данных и устройство этих структур. Принципы моделирования данных - case-классы, алгебраические типы и pattern matching.
  • Рассмотрим более сложные техники функционального программирования: ленивые вычисления; часто используемые абстракции, такие как функтор, аппликатив и монада.
  • Научим использовать неявные значения и преобразования - будем создавать тайпклассы, а потом рассмотрим другие применения этого механизма. В качестве примера поговорим о том, как работать с JSON и как обрабатывать ошибки парсинга.
  • Расскажем о многопоточности - сначала разберем инструменты, которые нам дает виртуальная машина Java. Потом перейдем к высокоуровневым примитивам - поговорим о разных подходах к написанию конкурентного и параллельного кода. Подробно рассмотрим устройство Future/Promise, а потом перейдем к акторам Akka.
  • Изучим базовые примитивы функционального программирования из библиотеки Cats. Многопоточность и управление эффектами Cats Effect.
  • Расскажем об устройстве ввода вывода, о том, как построены асинхронные клиенты к веб-сервисам и базам данных, и о том, как совмещать ввод-вывод и асинхронный код.
  • Расскажем о том, как организовывать асинхронную обработку потоков данных на примере библиотеки Akka Streams.
  • Покажем как разрабатывать веб-сервисы с использованием Akka HTTP

Курс будет состоять из лекций, семинаров и домашних заданий. На семинаре будем совместно решать задачи по пройденной на лекции теме.

Лекции

  1. Орг вопросы.
  • Семинар: 3 марта
  • Семинар: Орг вопросы. Проверяем звук в Discord. Проверка IDEA Code With Me (ведущий - Максим)
  • Видео: Ставим JDK и Intellij IDEA
  1. Введение в Scala. Case классы и pattern matching.
  1. Иммутабельность и базовые структуры данных. Работа со списками.
  1. Vector. Ленивые вычисления. LazyList и View. Монады.
  1. Implicit значения и преобразования. Тайпклассы. Чтение и запись JSON в play-json.
  1. Базовые примитивы многопоточности.
  1. Cats и Circe.
  1. Архитектура обработки запросов. HTTP Протокол. REST и Akka HTTP.
  1. Акторы Akka, часть 1.
  1. Акторы Akka, часть 2.
  1. Akka Streams и реактивные потоки.
  1. Cats Effect и Http4s.
  1. Подведение итогов.
  • Семинар: 8 июня (Внимание! Перенос на 8 июня).

Материалы для большого практического задания

Начинаем после 3-й лекции.

Предыдущие курсы