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

Функциональное программирование — тема на острие развития современной разработки ПО.
Erlang, Scala, Clojure, F#, Haskell, функциональные подходы в хорошо знакомых Ruby и Java,
монады и лямбды, несколько лет назад были делом ученых и экспериментаторов.
Сегодня они входят в нашу повседневную жизнь и становятся новым трендом в разработке.
Присоединяйтесь, зажжем функциональным напалмом вместе!
Любителям Scala и Clojure, Haskell и Erlang есть о чем пообщаться друг с другом.
Конференция однодневная, доклады идут в два параллельных потока.
2 декабря, 10:00–19:00, Конференц-зал
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.
Если Вы задумываетесь как проектировать приложение, так чтобы оно работало локально, на слабом ноутбуке или было бы горизонтально расширяемым облачным приложением. То почему бы не получить все сразу, используя один и тот же код? Компаниям очень важно уметь быстро подстраиваться под изменяющиеся требования. Мощные абстракции в Haskell позволяют легко написать приложение, которое может как работать в облачном откуржении, так и быть испольняемым файлом в Windows.
В докладе мы рассмотрим архитектурные решения, позволилвшие это сделать. Мы рассмотрим структуру кода и инструменты позволившие нам легко получать платформоспецифичные решения, а так же о различных проблемах с которыми
мы встретились при реализации.
Виртуальная реальность доступнее, чем может показаться. При помощи Google Cardboard и WebVR каждый может создавать виртуальные миры. А с помощью GHCJS мы можем строить эти миры на Haskell, легко и безопасно! В этом докладе вы увидите, как начать разрабатывать под VR на Haskell, а также как взаимодействовать с существующими VR-компонентами. А именно, вы познакомитесь с WebVR фреймворком A-Frame и Miso, фронтенд-фреймворком на Haskell, похожим на Elm.
Вашему вниманию предлагается доклад про то, как возможно разрабатывать вдоль всего стэка от infrastructure до мобилок и верстки с css на одном языке - clojure.
Полайфкодим, б...я
Путь к функциональному управлению графами объектов. Напишем свой маленький функциональный React и поговорим о его теоретических основаниях и расширениях. Внимательный слушатель "унесет с собой" мета-библиотеку. Язык доклада - Clojure.
В последнее время очень часто поднимается тема битвы методологий ООП и ФП. Но на самом деле эти две методологии были созданы с одной и той же целью - избавиться от императивного (процедурного) стиля программирования. К сожалению, в какой то момент ООП методология осталась так до конца и не понятой. В этом докладе я попытаюсь пролить свет на то, что такое современный ООП код и как его использовать в таком функциональном языке, как Clojure. Этот доклад будет полезен не только Clojure разработчикам, но всем разработчикам, которые используют функциональные языки и, ошибочно считающие, ООП корнем всех зол.
Если посмотреть на хронику конференций по ФП, то не трудно заметить, что главной темой докладов является WEB. Мобильная разработка обходится стороной. И неспроста! Функциональные языки корифеи с роскошным расходом памяти имоделью представления типичных для ФП конструкций плохо укладываются в ограничения мобильных приложений.
Но на небе ФП взошла новая звезда и свет её всё ярче! Мы поговорим о новом языке Kotlin и о том как применять его на Android. На примере живого рабочего кода мы посмотрим как делать это в функциональном стиле. Появление Kotlin может открыть двери в Android-разработку для многих любителей ФП и сделать это путешествие приятным и увлекательным.
* Язык Kotlin разработан русскими инженерами из JetBrains и назван в честь острова, на котором расположен город Кронштадт.
Наш бэкенд чуть менее, чем полностью, написан на Haskell. Большую часть потенциально фатальных ошибок находит за нас компилятор, но он не может спасти от всего. В своём докладе я расскажу, какие проблемы у нас возникали, почему это случалось и от каких серьёзных ошибок нас спасает Haskell.
Всем нам приходится автоматизировать рутинные задачи - кому-то сборку, кому-то резервное копирование или обработку и сбор логов. Часто для подобных задач используются динамически типизированные скриптовые языки, ведь писать скрипты на них так быстро и просто! Но написание безопасных и предсказуемо работающих скриптов требует определенной дисциплины.
Данный доклад покажет, что те же задачи, которые мы обычно решаем с помощью Bash/Python/(ваш вариант), можно решать и на Haskell, получая при этом
- большую безопасность и предсказуемость;
- кроссплатформенность (написанный однажды скрипт будет работать и в unix-подобных системах, и на Windows);
- ту же скорость и простоту разработки (типы писать не придется, не нужно будет даже ничего компилировать - если не хочется!).
Шум и волнение вокруг темы криптовалют не смолкают. Интерес к этой теме растёт день ото дня, ведь технология блокчейн уже доказала свою новаторскую эффективность. На наших глазах появляются новые криптовалютные системы, всё более удобные и безопасные. Cardano SL - первая из таких систем, написанная на Haskell. Об её особенностях, перспективах и о том, почему всё-таки Haskell, и пойдёт речь в моём докладе.
2 декабря, 11:00–19:00, Шоурум
В разных языках программирования используются разные модели асинхронности. В Erlang и Elixir существует целый фреймворк для работы с асинхронностью - OTP. Поговорим про его устройство, замерим скорость работы, рассмотрим типичные use-cases. Дополним все графиками и метриками!
Unikernel — это фреймворк для разработки приложения, которое будет запускаться в некоторой среде виртуализации по принципу “один компьютер — один процесс”. В некотором роде это возврат из мира многозадачных многопользовательских ОС общего назначения в мир “прошивок”. В ином роде — это выход на тот уровень создания приложений, когда программа живёт в своей маленькой очень-быстро-загружаемой, взломали-ну-и-ладно, упала-ну-и-не-жалко капсуле. Приложение является само себе операционной системой с “микроядром” — тоненьким загрузчиком/монитором на манер старинной MS-DOS. Разработанная на OCaml MirageOS — едва ли не первый успешный проект полностью зрелой «library OS». Я знаю OCaml, и потому эксперимент именно с продуктом на этом языке показался мне наиболее безболезненным. В докладе я пробегусь по основным моментам создания Mirage-приложения на простом учебном примере.
Доклад для бывалых функциональных программистов, заинтересованных в формальной верификации программ. Поговорим про Isabelle proof assistant, equational reasoning, program transformation и доказательства без зависимых типов. Увидим во что обходится формальная верификация эквивалентных преобразований на примере оптимизации алгоритма сортировки списка и поспорим, стоит ли овчинка выделки.
CRDT — инструмент надёжного хранения и синхронизации данных в распределённых системах. Конечно же, эту модель надо реализовать на самом надёжном языке программирования — Haskell! Мы расскажем, с какими проблемами столкнулись, как решали вопросы надёжности и доказательства корректности кода, основанного на классах типов.
Сейчас почти каждый носит в своём кармане более 40 млн строк кода только на C, ездит в машине, управляемой бортовым *компьютером*, живёт в доме, подача воды к которому регулируется SCADA или на удалении менее 400 км от АЭС.
Я расскажу, что может пойти и идёт не так, как с этим жить и какие технологии разработки ПО используются для того, чтобы делать самолёты, которые (из-за сбоя электроники) не падают, машины, которые останавливаются при нажатии на педаль тормоза и ракеты, которые взлетают: в частности, речь пойдёт о memory-safe языках в embedded (Rust) и program extraction из Haskell (Ivory) и Coq + runtime verification à la Agda.
Доклад о самой быстрой библиотеке для интеграции с Postgres для Haskell от ее автора!
Программируя на Scala, мы частенько используем разные библиотеки написанные на Java. Несмотря на то, что технически в этом нет проблемы, с идеологической точки зрения возникают разные трудности. Например, когда вы не хотите использовать мутабельные классы в вашем коде. Или при получении данных в виде JavaBeans из одной библиотеки, вам нужно использовать их в другой библиотеке, написанной на Scala и подразумевающей использование case class-ов. BeanPurée -- это библиотека позволяющая уменьшить страдания от использования JavaBeans в Scala. Она позволяет не только автоматически преобразовывать бины в case class-ы и обратно, но в первую очередь является соединяющим звеном между миром Java и shapeless. Я постараюсь сделать небольшой экскурс в программирование на типах в Scala, расскажу как использовать shapeless и BeanPurée, а также покажу как оно работает изнутри.
В крупных (или микросервисных) архитектурах у Backend'а есть свои Backend'ы. И, если какой-то сервис очень важный, он не всегда очень производительный. Как сделать так, чтобы ваша система продолжала отвечать, даже если важные источники информации перестали отвечать?
Рассказываю о нашем опыте в Tinkoff:
1. Как мы выбирали СУБД и на чём остановились.
2. Как поддерживать версионность форматов данных.
3. Как понять, что ваш сервис умер или ожил.
4. Как встроить cache, не переписывая приложения на Scala.
5. Итоги и замеры.
Scala-разработчикам довольно редко приходится иметь дело с зависимыми типами, хотя приличный пласт библиотек, с которыми мы работаем каждый день, используют их под капотом.
Цель моего доклада - сделать так, чтобы PR коллеги с добавлением shapeless в зависимости проекта больше не вызывал у вас паники.
- рассмотрим неочевидные моменты
- узнаем, как понимать подобный код
- выясним, какую пользу можно получить от практического использования shapeless
- поймем, зачем стоит тащить его в свой проект.