Смотреть видео

FPCONF — конференция
о функциональном программировании в России

Функциональное программирование — тема на острие развития современной разработки ПО. Erlang, Scala, Clojure, F#, Haskell, функциональные подходы в хорошо знакомых Ruby и Java, монады и лямбды, несколько лет назад были делом ученых и экспериментаторов. Сегодня они входят в нашу повседневную жизнь и становятся новым трендом в разработке. Присоединяйтесь, зажжем функциональным напалмом вместе! Любителям Scala и Clojure, Haskell и Erlang есть о чем пообщаться друг с другом.
Конференция однодневная, доклады идут в два параллельных потока.

Спикеры

Денис Шевченко
Haskell-энтузиаст и сооснователь сообщества ruHaskell. Автор книги "О Haskell по-человечески". Специализируется на веб-разработке.
Алекс Петров
Работает в DataStax в Cassandra Team, увлекается базами данных. Пишет на Clojure с 2011 года, работал над Open Source проектами с ClojureWerkz.
Алексей Фомкин
Технический директор в компании Data Monsters, проводит Scala-митапы, записывает подкаст scalalaz.ru, комитит на гитхаб.
Антон Гуща
Три года разрабатывает на Haskell production приложения, увлечён изучением FRP и type level программированием. Участник Haskell Summer of Code 2016.
Сергей Попов
Архитектор API Tinkoff.ru. Более 10 лет занимается разработкой приложений для финансовых организаций, пишет на Scala c 2011 года, преподает в Fintech School.
Денис Редозубов
Haskell-евангелист, CTO @typeable.io.
Никита Волков
Software engineer c 15-летним опытом, специализируется на функциональных языках, таких как Haskell, Clojure, Scala.
Алексей Пирогов
Любознательный писатель на функциональных языках, рассказчик докладов и водитель самоката, Typeable.IO.
Андрей Неверов
Руководитель разработки в компании Trucker Path, Clojure разработчик.
Виталий Брагилевский
Преподаватель, редактор и переводчик книг по функциональному программированию, член комитета Haskell 2020, контрибьютор компиляторов GHC и Idris.
Никита Соболев
Партнер студии разработки wemake.services, писатель кода, организатор elixir-lang.moscow.
Илья Беда
CEO компании bro.engineering. Продвигает функциональное программирование, проводит воркшопы и мастер классы.
Николай Кудасов
Технический директор и ко-фаундер GetShop.TV, преподаватель курса Haskell на ВМК МГУ, Haskell-энтузиаст с 2010 года.
Михаил Бахтерев
Работает в ИММ УрО РАН над конструктором компиляторов для нетрадиционных процессоров и сетевую ОС для суперкомпьютеров. Пишет на Clojure и Church прототипы AI для систем автопилотирования.
Алексей Романчук
10 лет опыта разработки backend-ов. Тимлид в 2ГИС. Scala - работа и увлечение.
Даниил Соболь
Архитектор и один из разработчиков fearlesslittle.com. Любит Erlang и C. В Erlang пришел через Haskell.
Антон Холомьёв
Автор книги "Учебник по Haskell" и музыкальной бибилиотеки для Haskell: csound-expression.

Программа

Первый поток

3 декабря, 10:00–19:00, Конференц-зал

9:00–10:00
Регистрация участников
10:15–11:00
Жизнь без фронтэнда

Не так давно мы вошли в эпоху одностраничных веб-приложений (SPA). Очень часто сервер превращается в прослойку между DBMS и "толстым" клиентом в браузере. Разработчики вынуждены писать десятки тысяч строк бессмысленного кода. Возможными решениями проблемы являются веб-ориентрованные DBMS (Firebase), или новые языки запросов (GraphQL).
Я предлагаю подойти с другой стороны и вернуться к идее тонкого клиента. В своем докладе я расскажу про свою разработку - библиотеку Korolev, которая дает возможность создавать современные одностраничные веб-приложения работающие целиком на стороне сервера, в функциональном стиле, на языке Scala.

Алексей Фомкин
11:00–11:45
Macro Cache - кэширование данных с помощью Scala Macros в сервисах Tinkoff.ru

Скоро опубликуем

Сергей Попов
Tinkoff.ru
11:45–12:30
Практическое применение Akka Streams

В своем выступлении я расскажу об опыте использования Akka Streams. Мы поговорим о том как использовать встроенные в библиотеку комбинаторы и как написать собственные. Еще я расскажу как адаптировать существующий API для использования в Akka Streams на примере zeromq и reactive kafka.

Алексей Романчук
2ГИС
12:30–13:30
Время ланча
13:30–14:15
Cyanite (Building Time-Series data store with Clojure)

Apache Cassandra - отличная база данных для многих вещей. Одна из них - это Time Series. Используя Cassandra и существующие Time Series инструменты (такие как Graphite), приводит к интересным результатам. Cyanite это Time Series аггрегатор, который использует Cassandra в качестве storage layer. Вы можете использовать Cyanite вместо Graphite, так как API идентичны. Cyanite написан на Clojure, вы узнаете больше о том как прототипировать интерфейсы, использовать Java библиотеки, делать pluggable части системы, как использовать новые Cassandra фичи для анализа Time Series и в общем о том чему мы научились пока разрабатывали Cyanite.

Алекс Петров
Data Stax
14:15–15:00
Простые вещи

Поговорим про то, почему в наш век атомной тяги мы по прежнему называем переменные "q"; на красном глазу возвращаем из функции null, пишем циклы и иногда используем (о боже!) указатели на указатели на указатели; делаем все это и многое другое со вполне себе уверенным видом и крепко спим при всем этом по ночам; а так же о том, как это все связано с функциональным программированием и зачем вообще это все.

Андрей Неверов
Trucker Path
15:00–15:45
Пропаганда Elixir для новых адептов

Elixir шагает по миру разработки, стремительно набирая популярность. Обзорный доклад познакомит с возможностями и сферами применения языка, с высокой концентрацией WOW фич и метрик.

Никита Соболев
15:45–16:45
Перерыв на кофе
16:45–17:30
The Elm Architecture: model, view and update your UI

The Elm Architecture (TEA) - подход к построению реактивного пользовательского интерфейса (UI), популяризируемый авторами языка Elm и уже позаимствованный авторами таких библиотек, как Redux и Choo для JavaScript и Pux (PureScript). Доклад призван дать представление о том, как TEA позволяет структурировать код Elm-приложений, а так же декомпозировать и масштабировать монолитный UI.

Алексей Пирогов
Typeable.IO
17:30–19:00
Воркшоп по ELM: пишем drag-and-drop

Язык програмирования Elm - одна из самых горячо обсуждаемых технологий во фронтенде. Кто-то уже использует его в домашних проектах, кто-то даже пишет на нем production код. Если вы хотели попробовать Elm для решения реальной задачи, то у вас есть прекрасная возможность.
Приглашаю вас на воркшоп, в процессе которого мы напишем перемещение фигур на шахматной доске с помощью drag and drop.
Поучавствовать смогут все желающие. Захватите с собой ноутбук и не забудьте установить Elm версии 0.18 https://www.npmjs.com/package/elm

Илья Беда

Второй поток

3 декабря, 10:00–19:00, Шоурум

9:00–10:00
Registration
10:15–11:00
Типы пишут тесты

Типы защищают программиста от множества ошибок ещё на этапе компиляции. К сожалению, даже продвинутые системы типов, такие как в Haskell, не могут уберечь от всех бед. Поэтому следующей линией обороны являются тесты. Но и в этом случае типы могут сильно облегчить работу и даже написать тесты за программиста — от тестирования свойств до масштабного тестирования целых программ. Я рассчитываю на средний уровень подготовки аудитории — базовые знания Haskell, общие представления о базах данных и Web. Доклад знакомит слушателей с методом написания тестов при помощи типов. Продвинутым слушателям будет интересно узнать о глобальном тестировании проекта.

Николай Кудасов
GetShop.TV
11:00–11:45
LiquidHaskell: изящные типы

Все мы любим Haskell за его выразительную систему типов, избавляющую нас от множества проблем. Но нельзя ли сделать наши типы ещё более впечатляющими? LiquidHaskell, статический верификатор Haskell-кода, предлагает нам свой ответ на этот вопрос.
В докладе будут рассмотрены основы работы с LiquidHaskell.

Денис Шевченко
11:45–12:30
Haskell 2020: проблемы и перспективы процесса стандартизации

В апреле 2016 года был сформирован комитет по разработке нового стандарта языка Haskell 2020. Этот доклад посвящён стоящим перед комитетом задачам и проблемам, с которыми он уже столкнулся и которые ещё предстоят. Также будет обсуждаться необходимость стандартизации для языков с одним компилятором и отношение сообщества к этому процессу и его роль в нём.

Виталий Брагилевский
12:30–13:30
Время ланча
13:30–14:15
Как победить функциональную кодобазу

Я расскажу о нескольких уроках, которые мы усвоили, и о нескольких решениях, которые мы приняли, для того чтобы сделать громадное количество рефакторингов и правок за несколько лет работы над Haskell кодобазой в typeable.io и не сойти с ума.

Денис Редозубов
14:15–15:00
Web-routing в Haskell: очевидно и просто

В Haskell есть множество библиотек и фреймворков для создания сайтов. Однако подавляющее большинство из них страдает от спорных дизайн-решений и неповоротливости. Как отдельное явление существует и качественная библиотека Servant, которая, к сожалению, в то же время, способна отпугнуть и бывалых программистов из-за использования подходов, требующих довольно углублённых познаний для понимания. Ниша простой и элегантной библиотеки до сих пор остаётся пустой. В своём выступлении я презентую новую библиотеку, претендующую эту нишу оккупировать.

Никита Волков
15:00–15:45
Фронтенд на Haskell и reflex-dom

Доклад охватит основы FRP в терминах библиотеки reflex-dom и создание простого веб приложения для расчёта хлебных единиц. На основе данного примера будут рассмотрены и объяснены типичные архитектурные решения для FRP приложений.

Антон Гуща
15:45–16:45
Перерыв на кофе
16:45–17:30
Распределённое программирование в системе RiDE

Несмотря на ощутимый прогресс в сетевых технологиях и технологиях построения распределённых вычислительных систем за последние 30 лет, методы программирования для таких систем остаются примерно в том состоянии, в котором они 30 лет назад оформились. Развиваются техники реализации тех или иных элементов API, но на уровне приложений, мы по-прежнему программируем обмены сообщениями, создаём пулы нитей с критическими секциями, «рисуем» различные вариации на тему сетей Петри. Всё это трудно кодировать, ещё тяжелее отлаживать и невозможно статически верифицировать. В последнее время эта проблема, в связи с развитием облачных платформ, стала особенно острой, и разработчики во всём мире активно взялись за её решение, в том числе и через разработку и исследование новых моделей программирования (можно взглянуть на список докладов ICFP-2016). Работа над системой RiDE ведётся в том же русле. Основная идея проекта заключается в том, чтобы дать программисту простой язык описания графа потока данных. Но не статичного с изменяемыми состояниями, как в традиционных системах, что ограничивает их выразительность и адаптируемость к условиям вычисления, а динамического с неизменными данными, потенциально бесконечного, рекурсивно генерируемого и открытого для взаимодействия с произвольными внешними системами. Такой DSL из 5 примитивов и 4 операций удалось придумать. Он позволяет описывать вычислительные процессы двукратно меньшим (в худшем из известных нам случае) объёмом кода.

Михаил Бахтерев
ИММ УрО РАН
17:30–18:15
Почему в вашем следующем проекте вам (скорее всего) нужно писать велосипеды на эрланге (с примерами)

На примере нашего проекта fearlesslittle.com рассмотрим то, как Эрланг может помочь вам меньше думать о реализации и больше о сути того, что вы делаете. Расскажу о том, почему не страшно и не плохо писать велосипеды и как это может сократить время разработки. Поговорим про очереди сообщений и о том, что не так с RabbitMQ и компанией. Какой формат сериализации выбрать и как реализовать протокол которого еще нет. Как быстро набросать базу данных для специфических задач. Почему публичный АПИ уж точно нужно писать на Эрланге. Поделюсь decision tree для определения того как вы можете использовать Эрланг в вашем проекте.

Даниил Соболь
18:15–19:00
Воркшоп: Сочиняем электронную музыку на Haskell

Участники семинара смогут научиться создавать электронную музыку на языке Haskell. Мы будем сочинять музыку прямо в интерпретаторе! Всего несколько строк кода достаточно для того чтобы порадовать ваших слушателей интересным звучанием. Мы научимся запускать MIDI-синтезаторы, писать барабанные партии в стиле IDM и glitch, записывать нашу музыку и создадим небольшой трек.
Неужели это возможно?
Конечно да, ведь мы будем делать это в Haskell!
Для активного участия в семинаре желательно взять с собой ноутбук и наушники (чтобы иметь возможность слушать примеры локально, что-то менять, не мешая соседям, запускающим свои примеры :) Также нам понадобится установить одну программу и несколько хаскельных библиотек. Лучше сделать это заранее, до семинара.
Мы будем делать музыку в библиотеке csound-expression (https://github.com/spell-music/csound-expression). Эта библиотека переводит хаскельный код в код языка Csound и потом сам Csound превращает код в музыку! Нам понадобятся три состовляющих:
* среда Haskell: ghc (версии 7.10 и выше), cabal-install для установки хаскельных библиотек. Если вы новичок в Haskell, но хотите поучаствовать в семинаре, не беда всё это можно установить вместе с Haskell Platform (https://www.haskell.org/platform/). Пожалуй, это самый простой для новичка способ быстрой установки среды Haskell. После установки у вас должны быть доступными в командной строке две новые команды: ghci (интерпретатор Haskell) и cabal (утилита установки библиотек).
* язык Csound. Ведь музыку мы будем получать именно из него. Язык Csound можно легко установить из официального сайта (http://csound.github.io/download.html). Там он доступен для всех платформ и установка не должна вызвать затруднений. После установки команда `csound` должна стать доступной в командной строке. Если этого не случилось, то необходимо добавить в список путей для программ (PATH) директорию с бинарником csound. * набор библиотек csound-expression. Это основная библиотека csound-expression, библиотека для создания музыки из сэмплов csound-sampler, набор готовых красивых синтов и драм-машин csound-catalog. Все они доступны на Hackage. И могоут быть установлены с помощью cabal. Проще всего набрать в командной строке
> cabal install csound-catalog
Все остальные библиотеки подтянутся по зависимостям. После установки можно проверить всё ли работает:
Запустим интерпретатор:
> ghci
Импортируем библиотеку:
> :m +Csound.Base
Послушаем чистый сигнал на частоте 440 герц:
> dac (osc 440)
Если всё хорошо работает и установилось, мы сможем услышать звук. Для остановки программы нажмите Ctrl+C.
Послушаем более интересный тестовый звук:
> dac (testDrone3 220)
Если что-то не получилось установить, то можете написать мне на почту и я подскажу. Найти почту можно здесь - http://hackage.haskell.org/package/csound-expression в строке maintainer.
До встречи на семинаре!

Антон Холомьев

Партнеры

Генеральный спонсор

Стратегический партнер

Информационные партнеры

Подкаст о программировании, IT и смежных темах (16+) Конференция о ФП в Минске Русскоязычного сообщества Haskell-разработчиков Elixir community в Москве

Контакты

Место проведения
Конгресс-центр Технополис Москва, Волгоградский проспект 42к5