Приглашаем на FPConf.ru
Привет!
15 августа состоится FPConf — первая в России конференция по функциональному программированию. В двух потоках однодневной конференции будут доклады о Scala, F#, Erlang, Clojure, Haskell и функциональных подходах в привычных Ruby, Python и Java.
Мы искренне считаем, что функциональные подходы сегодня — новый мэйнстрим, точка развития отрасли и полезный инструментарий, который нужен высококлассному разработчику для решения сложных и интересных задач. Прошло время, когда можно ограничиться одним технологическим стеком и быть востребованным. Большие данные, возрастающие нагрузки, профессиональное любопытство и желание развиваться приводят все больше людей к изучению монад, лямбд, замыканий и иммутабельности.
Поэтому, мы приглашаем как опытных функциональщиков, так и тех, кто только хочет получить вдохновение и обзор тем для первого изучения :)
Доклады от представителей JetBrains, Лаборатории Касперского, 2ГИС, Mail.ru, Mashine Zone, Luxoft, Sputnik и многих других.
Цена билета сейчас — 7000 рублей. Регистрация тут.
Программа:
Эдвард Кметт, Chair of the Haskell Core Libraries Committee
LENSES AND PRISMS
Functional programming shows us that working with immutable structures makes it easy to reason about parallelism, non-determinism, and other effects, but along the way we lose the familiar notion of a field accessor. «Getters and setters» don’t make sense as such in an immutable world. Lenses provide us a way to regain that lost functionality and more besides, acting as a form of «functional reference».
On the flip side, in the process of constructing the lenslibraryfor Haskell, I’ve found a related notion, that of a Prism, to be equally useful for working with case matching on ADTs, handling extensible exceptions, as well as working with semi-structured data such as JSON, XML and the like. However, surprisingly little has been said about them before now.
This talk will explore the roles each of these abstractions play and why you as a developer should care about them.
Николай Рыжиков, Health Samurai
CLOJURE DATA DSL’S ДЛЯ WEB РАЗРАБОТКИ
Сеанс live coding!
Код и данные, как Инь и Янь, и граница между ними при пристальном взгляде начинает исчезать. На примере web стэка для clojure мы познакомимся c Data DSL — hiccup, honeysql, prismatic schema, в режиме реального времени попробуем написать свои DSL и познать Дао.
Никита Прокопов
ФРОНТЭНД БЕЗ ГРУСТИ
Писать веб-приложение — то еще занятие: медленно, сложно, да и платформа скорее мешает, чем помогает. В докладе мы ответим:
* Как функциональный подход помогает делать веб-приложения?
* Может ли база данных быть иммутабельной?
* Зачем вообще на фронте база данных?
* Что интересного можно сделать с такими инструментами?
Причем не вообще, а на конкретных примерах ClojureScript и DataScript.
Александр Гранин, Лаборатория Касперского
ДИЗАЙН БОЛЬШИХ ПРИЛОЖЕНИЙ В ФП
Как проектировать большие приложения на традиционных языках — мы знаем. Inversion of Control, SOLID, GRASP, шаблоны проектирования, high cohesion, low coupling, абстракции, интерфейсы, бывает даже — UML. Но хочется-то использовать функциональные языки!
В докладе я расскажу, что:
* многие практики — справедливы и в ФП-мире;
* в ФП имеются свои изящные решения тех же проблем;
* многие шаблоны проектирования — искусственные и становятся не нужны;
* вместо шаблонов проектирования ФП предлагает новые подходы проектирования — функциональные идиомы.
Будут названы конкретные проблемы проектирования, и будут показаны различные решения этих проблем на языке Haskell — как одном из ярчайших представителей ФП-мира.
Доклад для широкого круга разработчиков, которые сталкиваются с необходимостью создавать большой, хорошо поддерживаемый, надежный, структурированный, тестируемый код на функциональных языках.
Александр Пашков
КРАТКИЙ ОБЗОР ПРИЁМОВ ПАРАЛЛЕЛЬНОГО И КОНКУРЕНТНОГО ПРОГРАММИРОВАНИЯ НА HASKELL
Рассказ о возможностях некоторых инструментов параллельного/конкурентного программирования в современном хаскеле: от форсирования ленивых структур данных при помощи спарков до высокоуровневых примитивов типа Async и STM. Всё на примере нетривиальной прикладной переборной задачи, которую не очень-то просто грамотно распараллелить в императивных языках с мьютексами.
Ренат Идрисов, Machine Zone
РАСПРЕДЕЛЁННОЕ ИЗМЕРЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ РАСПРЕДЕЛЁННЫХ ПРИЛОЖЕНИЙ
На сегодняшний день количество пользователей интернет составляет около трёх миллиардов, любой потенциально популярный сервис может сломаться завтра, став популярным по причине того, что просто не хватит мощности обслуживающих серверов. Полезно знать заранее, как это произойдёт и насколько скоро наступит тот день, когда ваш сервис перестанет работать нормально. Мобильные игры, такие как Game of War, поддерживают миллионы пользователей и состоят из большого количества компонентов на различных языках. Практически каждый день код игры обновляется, и каждый день увеличивается количество пользователей.
В Machine Zone мы используем свой собственный инструмент MZBench — это распределённое приложение на Erlang, которое автоматически разворачивается на кластере, создаёт необходимую нагрузку, собирает результаты и оформляет их для дальнейшего использования людьми или системами Continuous Integration. Для описания различных сценариев используется собственный DSL, который позволяет создать необходимую модель и профиль нагрузки на основе модулей и статистических примитивов.
В докладе планируется рассмотреть основные особенности нашего инструмента, а также сравнить MZBench с tsung и basho bench.
Максим Лапшин, Erlyvideo
ERLANG В ПРОДАКШНЕ
В своём докладе я хочу поглубже рассказать о нашем опыте использования Erlang в компании Эрливидео. Мы делаем сверхвысоконагруженное ПО, работающее на критических для компьютера нагрузках и Erlang нам в этом очень помогает.
Почему мы выбрали Erlang и какие его концепции помогают программировать. Какие паттерны и антипаттерны мы видим при построении надежного и производительного ПО.
Будут освещены такие тонкости, как отладка ПО на Erlang, борьба с утечками ресурсов, интеграция с библиотеками на C и работа с ограниченными внешними ресурсами типа диска.
Денис Редозубов, Antorica
КРАТКИЙ ЭКСКУРС В СИСТЕМЫ ТИПОВ ИЛИ КАК ИЗБЕЖАТЬ ДЕЗИНТЕГРАЦИИ
Современные программы невероятно сложны и гарантировать их корректность — задача не из простых. Системы типов — инструменты, помогающие программисту в этом.
* Как сделать так, чтобы типы помогали разработчику?
* Какие гарантии мы можем получить?
* Почему языки и программисты разбились на несколько лагерей по отношению к этой теме?
* Почему ФП на гребне волны в плане type programming?
Также в докладе я рассмотрю спектр систем типов в языках функционального программирования от lisp/clojure до haskell/ocaml и мы мельком заглянем в загадочный мир зависимых типов в таких языках как Idris и Agda.
Илья Беда, Bro.agency
ФУНКЦИОНАЛЬНЫЕ ЛИНЗЫ
Иммутабельные структуры данных пришли к нам из мира функционального программирования. Они принесли нам профит в виде безопасного разделения ссылок между потоками, простотой тестирования и возможностью писать чистые функции. Но вместе с этим они принесли и немного боли.
Если описывать ваше приложение единым иммутабельным состоянием — как изменить элемент на произвольном уровне вложенности? Ведь для изменения состояния нужно создать новый объект с измененным значением. А если объект сложный и состоит из других объектов — это реальная проблема, нужно копировать все уровни вложенности объекта.
Один из способов решения этой проблемы — предложенная Эдвардом Кметтом концепция линз. В своем докладе я расскажу что такое линзы. Как работает композиция линз. Как их применить в реальных задачах для работы с иммутабельными данными.
Предполагаемая аудитория: Фронтенд программисты использующие react.js узнают о новом инструменте для работы со стейтом приложения.
Кому будет интересен доклад: Scala программисты увидят как можно использовать привычную им из Java точечную нотацию для работы с иммутабельными данными. Программисты увлекающиеся функциональным программирование узнаю об одной из интересных абстракций позволяющей работать с иммутабельными данными в императивном стиле.
Елена Денисенко, Luxoft
РАСПРЕДЕЛЕННЫЕ ВЫЧИСЛЕНИЯ С BIG DATA ПРИ ПОМОЩИ ОБЛАЧНЫХ МОНАД НА F#
Современная концепция функционального программирования может кардинально упростить задачи по обработке больших объемов данных и организации масштабируемых вычислений благодаря инновационному подходу применения монад, открывающимся в F# MBrace. Доклад акцентирует внимание и описывает на продвинутом уровне уникальные возможности F# — определять особые правила, позволяющие нужным образом контролировать поток выполнения и обрабатывать сайд эффекты. На базе вычислительных выражений F# детально рассматривается концепция облачных монад, которая реализована в программной модели open source фреймворка MBrace. Представляется модель распределенной системы для облачных вычислений и выполнения высоконагруженных задач над большими данными неблокирующим способом, управляя состоянием на уровне кластера машин одной сети. Рассматриваются все возможности и архитектура MBrace, а также различные методы создания кластера, в том числе с использованием Azure IaaS и Brisk Engine. В результате, станут очевидны преимущества использования абстракций функционального программирования в работе с интенсивными вычислениями над данными, обработке значительных объемов данных в облачной среде, не зависящей от облачного провайдера.
Михаил Муцянко, JetBrains
МАКРОСЫ SCALA
В докладе я постараюсь сделать введение в тему макросов для людей не знакомых с темой, расскажу какие возможности появляются благодаря макросам: генерация термов, типов, имплисит макросы, материализаторы, создание DSL. Расскажу про проблемы при поддержке макросов в IDE.
Сделаю небольшой обзор будущего макросов в Scala.
Сергей Лобин, Sputnik.ru
САМУРАЙСКИЙ ПУТЬ МОЛОДОГО SCALA-ПРОГРАММИСТА
История о том:
* Как в «Спутнике» появилась Scala.
* Как написать функциональный поиск.
* Какие мы набили шишки на пути в бой.
* Правда ли что Scala такая прожорливая.
* Плюсы и минусы разработки на Scala.
Роман Гребенников, Sociohub.ru
SCALA PERFORMANCE ДЛЯ СОМНЕВАЮЩИХСЯ
Язык Scala нынче модный: тут вам и паттерн матчинг, и рекурсия, и коллекции, обильно приправленные лямбдами, а также много других страшных слов из мира функционального программирования, для понимания которых не нужна ученая степень по математике. И все эти плюшки органично переплетены в такой язык, начав писать на котором, очень тяжело перестать.
Но волшебство функциональной легкости заканчивается с фразой «а почему я переписал 100 строк лапши на Java в однострочник на Scala, но оно стало работать в 3 раза медленнее?», и мечта о прекрасном языке превращается в тыкву. Суровая реальность грязным сапогом как бы говорит нам, что абстракции языков высокого уровня могут скрывать монстров и всё удобство имеет свою цену. И если вы делаете на Scala не простое CRUD-приложение, а что-то, хоть отдаленно связанное с нагрузкой, необходимо хорошо понимать, во что именно вам обходятся все вот эти монады-шмонады.
Доклад может открыть глаза на возможные подводные камни производительности людям, практикующим программирование на Scala. В процессе будет рассказано:
* об интеграции jmh и sbt;
* о том, как заставить scalac рассказывать о том, что он там наоптимизировал;
* о тайнах паттерн-матчинга, хвостовой рекурсии и scala-коллекций;
* об умном HotSpot, который геройски все это оптимизирует.
Алексей Романчук, 2ГИС
РЕАКТИВНЫЕ ПОТОКИ В BACKEND-Е
Реактивные потоки это стандарт асинхронной обработки потоковых данных от Netflix, Twitter, Pivotal и других. Я расскажу зачем и как использовать реактивные потоки для построения backend-ов:
* в чем проблемы построения современных асинхронных backend-ов
* что такое реактивные потоки и как они помогают строить backend-ы
* принципы работы реактивных потоков
* основы работы с реактивными потоками на примере Akka Stream
Арсений Жижелев, Мэйл.Ру Геймз
РАСПРЕДЕЛЁННЫЕ ФУНКЦИОНАЛЬНЫЕ СИСТЕМЫ НА SCALA
В докладе рассматривается библиотека SynapseGrid, относящаяся к классу FRP (functional reactive programming/data flow programming).
В первой части описывается простой элегантный DSL для конструирования систем на основе SynapseGrid. Приводится пример простой системы.
Во второй части описываются имеющиеся варианты исполнения готовой системы:
* превращение системы в обычную функцию;
* использование RX-интерфейса;
* запуск в параллельном режиме на пуле потоков (как в parallel collections);
* запуск на системе экторов Akka на одном хосте;
* запуск на системе экторов Akka на нескольких хостах.
В третьей части рассказывается о модульной архитектуре библиотеки и возможностях её расширения.
В заключении описывается класс систем, реализуемых с помощью библиотеки. А именно, системы потоковой обработки данных с ветвлением. Приводятся примеры применения библиотеки в реальных проектах.
Что кроме докладов:
— Много профессионального общения.
— Вкусная еда.
— Афтепати, на которой у вас будет возможность неформально пообщаться с участниками и спикерами.
Присоединяйтесь!
Цена билета до 5 августа — 7000 рублей.
Зарегистрироваться можно тут.
Бонус — видео с прошлогоднего митапа.