8 812 320 13 03
  • Новости
  • Расписание
  • Курсы
  • Организациям
  • Летняя Школа
  • Перезвоните мне

    Курс Scala Developer. Level UP

    Курс Scala Developer

    NEW
    Курс Scala Developer
    Начало курса
    23.01.2018
    Продолжительность
    1,25 месяца (40 ак. часов)
    Расписание
    Вт 19:00 - 22:00
    Пт 19:00 - 22:00

    либо 

    Ср 19:00 - 22:00
    Сб 11:00 - 14:00
    Семинар
    (11 мест)
    17900 записаться
    Вебинар(17 мест) 15970 записаться
    свернуть

    Описание курса

    Язык программирования Scala — мультипарадигмальный язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения, сочетающий возможности функционального и объектно-ориентированного программирования.

    Курс Scala Developer даст участникам возможность познакомиться с мощнейшим языком программирования Scala, на реальных примерах из практики разработки понять, где, как и когда лучше использовать все его практически бесконечные возможности.

    Почему Scala стоит того, что писать на нём?

    • Scala даёт огромный рост продуктивности по сравнению с Java/С/С++. Практически любая задача, решаемая средствами Java, решается на Scala более быстро и компактно
    • Разработка на Scala позволяет быстро реализовывать сложную функциональность. Особенно большие преимущества получаются в реализации достижения бесперебойной работы высоконагруженных распределенных сервисов
    • Качественно разработанные Scala хорошо поддерживаемы и масштабируемы
    • Совместимость с Java и другими платформами. Переход на Scala никак не мешает пользоваться библиотеками и фреймворками, разработанными для Java
    • Akka -фреймворк дает возможность распараллеливать вычисления
    • Play и Lift - мощные инструменты веб-разработки
    • Akka-Http использует механизмы распараллеливания для создания http клиентов и серверов
    • slick и scalikejdbc - позволяют работать с базами данных интуитивно понятным образом
    а также:
    • В новой версии с компилятора Scala - Dotty, имеющего другую структур, проблемы медленной компиляции окончательно решены
    • Новый оптимизатор Dotty Linker, позволяющий компилировать код исключетельно для тех типов, которые реально используются, что позволяет серьёдно уменьшить количесто кода
    • Scala JS компилирует код на Scala в высокопроизводительный Javascript код. В совокупности с Scalatags и ScalaCSS полноценная разработка фронтенда для веб-приложений становится возможной
    • Scala Native позволяет писать на Scala мгновенно запускающийся код и использовать низкоуровневые структуры данных
    • Разработка под Android. Cпециализированная библеотека Macroid, предоставляет удобное для использования Android API
    • Разработка под iOS. Scala код компилируется под iOS с помощью RoboScala
    • ScalaFX- обёртка вогруг JavaFX для разработки десктопного софта
    • Scala считается очень перспективным языком с большим будущим
    • В данный момент очень мало хороших разработчиков на Scala

    Требования к участникам:

    • Знание Java или другого с-подобного языка на уровне написания несложных приложений
    • Желателен опыт коммерческой разработки

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


    Занятие 1. Введение. Экосистема

    • Часть 1. Экосистема JVM
      • JVM как открытая платформа
      • Обзор экосистемы
      • Крупные проекты, связанные со Scala
      • Примеры кода в сравнении с Java8
      • Инструментарий разработчика
    • Часть 2. Введение в Scala
      • REPL: read/evaluate/print/loop
      • Сборка проекта. maven. sbt. IDE.
      • "Hello, world"
      • Приложения с использованием Java API: GUI, java.net
      • Базовое Scala API. Обращение к веб-сервису, подсчет вхождений заданного слова в ответе.

    Занятие 2. Scala. Функциональная и ОО парадигмы

    • Часть 1. Scala как язык функционального программирования
      • Функции без побочных эффектов
      • Рекурсия
      • Функция как объект первого класса
      • Работа с коллекциями в функциональном стиле: filter/map/reduce
      • Примеры реализации базовых алгоритмов в функциональном стиле
    • Часть 2. Scala как сочетание функциональной и объектно-ориентированной парадигм
      • Особые коллекции: Option, Either, Try, Future
      • Синглтоны
      • Трейты
      • Case-классы
      • Сопоставление с образцом

    Занятие 3. Scala в проекте. Тестовый проект 

    • Часть 1. Scala в высоко-нагруженных системах
      • Ленивые переменные и параметры
      • Ленивые коллекции
      • Асинхронность
    • Часть 2. Тестовый проект. Бекенд аггрегатора блогов и новостей
      • Общее описание
      • Выделение задач реального времени и фоновых
      • Разбиение на микросервисы
      • Структура данных
      • Кеширование
      • Раcпределение подзадач участникам

    Занятие 4. Akka-фреймворк

    • Часть 1. Akka. Введение
      • Простое приложение на акторах
      • Акторы. Очереди сообщений
      • Супервизоры
      • Таймеры
      • Примеры программирования
    • Часть 2. Фреймворки
      • Persistense
      • Кластеры
      • Распределенная система акторов
      • Шаблоны

    Занятие 5. Работа с данными 

    • Часть 1. Неявные переменные, шаблон "pimp my library"
      • Неявные переменные
      • Неявные преобразования
      • Расширение чужих классов
      • Практика программирования
    • Часть 2. Работа с данными
      • Работа с xml
      • Библиотека Json4s
      • Библиотека spray-json

    Занятие 6. Дополнительные инструменты. DSL

    • Часть 1. Средства разработчика. Инструменты тестирования
      • sbt
      • Scalacheck
      • Scalatest
      • Scalamock
    • Часть 2. Domain specific languages
      • Что такое DSL и зачем они нужны
      • DSL как расширение синтаксиса Scala
      • DSL как независимый язык

    Занятие 7. Под капотом. Взаимодействие с Java.

    • Часть 1. Под капотом
      • Реализация сопоставления с образцом
      • Реализация функций как объектов первого класса
      • Реализация значений, обычных переменных и ленивых переменных
      • Реализация синглтонов
      • Реализация коллекций
    • Часть 2. Взаимодействие с Java-библиотеками
      • Примеры использования Java-библиотек
      • Преобразование коллекций
      • Особенности создания смешанной иерархии классов Scala и Java
      • Особенности работы со Spring

    Занятие 8. Spray и Akka-http

    • Часть 1. Spray и akka-http. Клиенты
      • Пример простого клиентского приложения
      • Работа на трех уровнях: соединение, хост, запрос
      • Преобразование данных.
      • Создание конвейеров
    • Часть 2. Spray и akka-http. Серверы
      • Пример простого сервера
      • DSL для обработки запросов
      • Директивы
      • Тестирование серверного приложения

    Занятие 9. Работа с БД. Система типов

    • Часть 1. Система типов
      • Рефлексия, манифесты
      • Параметризация типов.
      • Ковариантность, контравриантность
      • Структурные типы
      • Отложенные вычисления и бесконечные структуры
    • Часть 2. Работа с базами данных
      • Простое приложение на основе slick
      • Простое приложение на scalikejdbc
      • Добавление и изменение данных
      • Чтение данных
      • Транзакции

    Занятие 10. Веб-приложения. Другие применения Scala

    • Часть 1. Web-приложения
      • Разработка простого сайта на Play Framework
      • Обработка HTML-форм
      • Кеширование ответов
      • Простой сайт на Lift
      • Карта сайта
      • Сеансы
    • Часть 2. Другие примеры применения
      • shapeless
      • cats
      • kafka
      • spark

    свернуть

    Преподаватель

    Сергей

    Профессиональный разработчик с 1996 года. 

    Окончил мат-мех СПбГУ.  Начинал карьеру в компании "Ланит-Терком". В то время основным языком разработки был C++. 
    С 2003 года работал в компаниях Sun Microsystems и Oracle.

    С этого времени начал активно работать с Java. Участвовал в работе над разработкой Java-платформы.

    С 2015 года  Сергей работает в компании "Яндекс". Отвечает за разработку и поддержку ряда RESTful-сервисов в бекенде. 
    Последние два года основной язык разработки - Scala. 

    "IT-профессионал высокого уровня должен владеть разнообразием языков. Не просто выучить правила, а чувствовать стиль языке, понимать задачи, на которые он нацелен, отдавать себе отчет, как реализованы конструкции языка" - говорит Сергей.
    свернуть

    Фотографии

    Курсы программирования, тестирования, мобильных и веб-технологий от Level UP!
    Учитесь с профессионалами в сфере IT-образования!