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

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

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

Спикеры

Денис Шевченко
Haskell-энтузиаст и сооснователь сообщества ruHaskell. Автор книги "О Haskell по-человечески". Haskell-разработчик в IOHK
Николай Рыжиков
Технический лидер команды «Health Samurai», активист питерского Ruby & Clojure сообществ и мета-сообщества Piter-united.
Михаил Лиманский
Программирует на Scala больше 5 лет, три из них в "Первый ОФД". Большой поток транзакций круглосуточно, хранение и обработка огромных объемов данных - эти рабочие задачт помогли полюбить Scala и Spark еще больше.
Arnaud Spiwack
Участвовал в разработке Coq Proof Assistant, реорганизовал тактический движок Coq и дал ему абстрактный интерфейс. Покинув академическую сферу, Арно остался частью команды core-разработчиков Coq Proof Assistant. Сейчас он старший архитектор в Tweag I/O и мечтает сделть мир лучше типизированным!
Юрий Сыровецкий
Хаскеллист в Лаборатории Касперского, активист сообщества RuHaskell, преподаватель в Московском Химическом Лицее.
Никита Волков
Эксперт по языку Haskell и автор множества open-source проектов для него.
Никита Соболев
Партнер студии разработки wemake.services, писатель кода, организатор elixir-lang.moscow.
Николай Кудасов
Технический директор и ко-фаундер GetShop.TV, преподаватель курса Haskell на ВМК МГУ, Haskell-энтузиаст с 2010 года.
Павел Аргентов
Практикующий fp-программист, любитель OCaml, разработчик в Evrone.
Александр Чичигин
Haskell-программист в Typeable.io. Занимался исследованиями в области формальной верификации в университете.
Сергей Ткаченко
Фронтэнд разработчик. Clojure интузиаст. Организатор московского Clojure сообщества.
Антон Холомьёв
Автор книги "Учебник по Haskell" и музыкальной бибилиотеки для Haskell: csound-expression.
Вадим Челышов
Работает в hydrosphere.io, один из ведущих в подкасте scalalaz.ru.
Катерина Галкина
Работает в GetShop.TV, магистрант ВМК МГУ, принимает участие в преподавании практикума на LISP на ВМК МГУ.
Николай Логинов
Ученик 11 класса Московского Химического Лицея, энтузиаст функционального программирования.
Дмитрий Волков
Хаскеллист за деньги, формальный верификатор и Coq'олюб за идею. Слегка Rust'оман. Организатор школ GoTo.
Алексей Пирогов
Любознательный писатель на функциональных языках, рассказчик докладов и водитель самоката, Typeable.IO.
Олег Нижников
Scala-разработчик в Tinkoff.ru.
Александр Вершилов
Haskell-разработчик в Tweag I/O.
Андрей Зайцев
Программист JetBrains, 7 лет работает над IDE.

Программа

Первый поток

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

9:00–10:00
Регистрация участников
10:15–11:00
Using Haskell to great effect

It is beyond cliché, nowadays, to say that testing is really important. This is even more so in I/O intensive applications because so many things can go wrong. Unfortunately, testing I/O intensive applications is particularly hard. We have to mock all our files, data-bases, and so on. But even so, we're only scratching the surface: so many things can go wrong. How do we test for absence of deadlocks? Of races?
I came to the conclusion that Haskell's insistence on purity made it, paradoxically, one of the best languages to write I/O intensive programs. The reason for this is that Haskell makes it very easy to mock every single aspects of the I/O fabric, hence testing is more powerful. Up to checking for the absence of deadlocks and races. This talk will discuss the programming patterns which emerge from this point of view, and, of course, encourage you do use them in your programs.

Arnaud Spiwack
Tweag I/O
11:00–11:45
Проектируем SaaS решение, запускающееся на ноутбуке

Если Вы задумываетесь как проектировать приложение, так чтобы оно работало локально, на слабом ноутбуке или было бы горизонтально расширяемым облачным приложением. То почему бы не получить все сразу, используя один и тот же код? Компаниям очень важно уметь быстро подстраиваться под изменяющиеся требования. Мощные абстракции в Haskell позволяют легко написать приложение, которое может как работать в облачном откуржении, так и быть испольняемым файлом в Windows.
В докладе мы рассмотрим архитектурные решения, позволилвшие это сделать. Мы рассмотрим структуру кода и инструменты позволившие нам легко получать платформоспецифичные решения, а так же о различных проблемах с которыми мы встретились при реализации.

Александр Вершилов
Tweag I/O
11:45–12:30
Функциональная виртуальная реальность: WebVR + Haskell

Виртуальная реальность доступнее, чем может показаться. При помощи Google Cardboard и WebVR каждый может создавать виртуальные миры. А с помощью GHCJS мы можем строить эти миры на Haskell, легко и безопасно! В этом докладе вы увидите, как начать разрабатывать под VR на Haskell, а также как взаимодействовать с существующими VR-компонентами. А именно, вы познакомитесь с WebVR фреймворком A-Frame и Miso, фронтенд-фреймворком на Haskell, похожим на Elm.

Николай Кудасов
GetShopTV
12:30–13:30
Время ланча
13:30–14:10
Полный стэк на "одном" языке или изоморфизм Рича Хикки

Вашему вниманию предлагается доклад про то, как возможно разрабатывать вдоль всего стэка от infrastructure до мобилок и верстки с css на одном языке - clojure.
Полайфкодим, б...я

Николай Рыжиков
Health Samurai
14:10–14:50
Abstract Reconciliation

Путь к функциональному управлению графами объектов. Напишем свой маленький функциональный React и поговорим о его теоретических основаниях и расширениях. Внимательный слушатель "унесет с собой" мета-библиотеку. Язык доклада - Clojure.

Андрей Зайцев
JetBrains
14:50–15:30
OOP for Brave and True

В последнее время очень часто поднимается тема битвы методологий ООП и ФП. Но на самом деле эти две методологии были созданы с одной и той же целью - избавиться от императивного (процедурного) стиля программирования. К сожалению, в какой то момент ООП методология осталась так до конца и не понятой. В этом докладе я попытаюсь пролить свет на то, что такое современный ООП код и как его использовать в таком функциональном языке, как Clojure. Этот доклад будет полезен не только Clojure разработчикам, но всем разработчикам, которые используют функциональные языки и, ошибочно считающие, ООП корнем всех зол.

Сергей Ткаченко
15:30–16:10
Язык Kotlin - остров сокровищ для ФП на Android

Если посмотреть на хронику конференций по ФП, то не трудно заметить, что главной темой докладов является WEB. Мобильная разработка обходится стороной. И неспроста! Функциональные языки корифеи с роскошным расходом памяти имоделью представления типичных для ФП конструкций плохо укладываются в ограничения мобильных приложений.
Но на небе ФП взошла новая звезда и свет её всё ярче! Мы поговорим о новом языке Kotlin и о том как применять его на Android. На примере живого рабочего кода мы посмотрим как делать это в функциональном стиле. Появление Kotlin может открыть двери в Android-разработку для многих любителей ФП и сделать это путешествие приятным и увлекательным.
* Язык Kotlin разработан русскими инженерами из JetBrains и назван в честь острова, на котором расположен город Кронштадт.

Антон Холомьев
16:10–16:45
Перерыв на кофе
16:45–17:30
Наши баги за два года разработки на Haskell

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

Катерина Галкина
GetShop.TV
17:30–18:15
Скриптуем и автоматизируем безопасно с Haskell

Всем нам приходится автоматизировать рутинные задачи - кому-то сборку, кому-то резервное копирование или обработку и сбор логов. Часто для подобных задач используются динамически типизированные скриптовые языки, ведь писать скрипты на них так быстро и просто! Но написание безопасных и предсказуемо работающих скриптов требует определенной дисциплины.
Данный доклад покажет, что те же задачи, которые мы обычно решаем с помощью Bash/Python/(ваш вариант), можно решать и на Haskell, получая при этом
- большую безопасность и предсказуемость;
- кроссплатформенность (написанный однажды скрипт будет работать и в unix-подобных системах, и на Windows);
- ту же скорость и простоту разработки (типы писать не придется, не нужно будет даже ничего компилировать - если не хочется!).

Алексей Пирогов
Typeable.IO
18:15–19:00
Cardano: Haskell идёт в мир криптовалют

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

Денис Шевченко
IOHK

Второй поток

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

09:00–10:00
Registration
11:00–11:45
Потоки. OTP. Elixir

В разных языках программирования используются разные модели асинхронности. В Erlang и Elixir существует целый фреймворк для работы с асинхронностью - OTP. Поговорим про его устройство, замерим скорость работы, рассмотрим типичные use-cases. Дополним все графиками и метриками!

Никита Соболев
wemake.services
11:45–12:30
Учимся играть в Unikernel 

Unikernel — это фреймворк для разработки приложения, которое будет запускаться в некоторой среде виртуализации по принципу “один компьютер — один процесс”. В некотором роде это возврат из мира многозадачных многопользовательских ОС общего назначения в мир “прошивок”. В ином роде — это выход на тот уровень создания приложений, когда программа живёт в своей маленькой очень-быстро-загружаемой, взломали-ну-и-ладно, упала-ну-и-не-жалко капсуле. Приложение является само себе операционной системой с “микроядром” — тоненьким загрузчиком/монитором на манер старинной MS-DOS. Разработанная на OCaml MirageOS — едва ли не первый успешный проект полностью зрелой «library OS». Я знаю OCaml, и потому эксперимент именно с продуктом на этом языке показался мне наиболее безболезненным. В докладе я пробегусь по основным моментам создания Mirage-приложения на простом учебном примере.

Павел Аргентов
Evrone
12:30–13:30
Время ланча
13:30–14:10
В поисках корректных трансформаций

Доклад для бывалых функциональных программистов, заинтересованных в формальной верификации программ. Поговорим про Isabelle proof assistant, equational reasoning, program transformation и доказательства без зависимых типов. Увидим во что обходится формальная верификация эквивалентных преобразований на примере оптимизации алгоритма сортировки списка и поспорим, стоит ли овчинка выделки.

Александр Чичигин
Typeable.IO
14:10–14:50
CRDT — корректно распределённые данные на Haskell

CRDT — инструмент надёжного хранения и синхронизации данных в распределённых системах. Конечно же, эту модель надо реализовать на самом надёжном языке программирования — Haskell! Мы расскажем, с какими проблемами столкнулись, как решали вопросы надёжности и доказательства корректности кода, основанного на классах типов.

Юрий Сыровецкий и Николай Логинов
14:50–15:30
High-Assurance Embedded

Сейчас почти каждый носит в своём кармане более 40 млн строк кода только на C, ездит в машине, управляемой бортовым *компьютером*, живёт в доме, подача воды к которому регулируется SCADA или на удалении менее 400 км от АЭС.
Я расскажу, что может пойти и идёт не так, как с этим жить и какие технологии разработки ПО используются для того, чтобы делать самолёты, которые (из-за сбоя электроники) не падают, машины, которые останавливаются при нажатии на педаль тормоза и ракеты, которые взлетают: в частности, речь пойдёт о memory-safe языках в embedded (Rust) и program extraction из Haskell (Ivory) и Coq + runtime verification à la Agda.

Дмитрий Волков
15:30–16:10
Новый Hasql: Проще и Быстрее

Доклад о самой быстрой библиотеке для интеграции с Postgres для Haskell от ее автора!

Никита Волков
16:10–16:45
Перерыв на кофе
16:45–17:30
Как я перестал бояться программирования на типах и полюбил бобовое пюре

Программируя на Scala, мы частенько используем разные библиотеки написанные на Java. Несмотря на то, что технически в этом нет проблемы, с идеологической точки зрения возникают разные трудности. Например, когда вы не хотите использовать мутабельные классы в вашем коде. Или при получении данных в виде JavaBeans из одной библиотеки, вам нужно использовать их в другой библиотеке, написанной на Scala и подразумевающей использование case class-ов. BeanPurée -- это библиотека позволяющая уменьшить страдания от использования JavaBeans в Scala. Она позволяет не только автоматически преобразовывать бины в case class-ы и обратно, но в первую очередь является соединяющим звеном между миром Java и shapeless. Я постараюсь сделать небольшой экскурс в программирование на типах в Scala, расскажу как использовать shapeless и BeanPurée, а также покажу как оно работает изнутри.

Михаил Лиманский
Первый ОФД
17:30–18:15
Безболезненный Fallback cache на Scala

В крупных (или микросервисных) архитектурах у Backend'а есть свои Backend'ы. И, если какой-то сервис очень важный, он не всегда очень производительный. Как сделать так, чтобы ваша система продолжала отвечать, даже если важные источники информации перестали отвечать?
Рассказываю о нашем опыте в Tinkoff:
1. Как мы выбирали СУБД и на чём остановились.
2. Как поддерживать версионность форматов данных.
3. Как понять, что ваш сервис умер или ожил.
4. Как встроить cache, не переписывая приложения на Scala.
5. Итоги и замеры.

Олег Нижников
Tinkoff.ru
18:15–19:00
Делаем пользовательский API на базе Shapeless

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

Вадим Челышов
hydrosphere.io

Партнеры

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

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

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

Контакты

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