19:00-20:00
Илья Сергей
Статический анализ и оптимизация кода в GHC
Glasgow Haskell Compiler — самый популярный из существующих компиляторов языка программирования Haskell, в котором реализованы многочисленные оптимизации кода путём переписывания программ. Корректность такого переписывания опирается на результаты статических анализов, также производимых компилятором и предваряющих трансформации.
В этом докладе я расскажу про реализацию и теоретические основы наиболее интересных статических анализов, реализованных в GHC: анализа строгости (strictness analysis), использования (usage analysis) и явного построения структуры (constructed product result), а также приведу примеры использования выведенных результатов для построения оптимизаций. В рамках доклада я сделаю краткий обзор GHC pipeline, с акцентом на языке промежуточного представления Core, служащим платформой для анализов и трансформаций. Наконец, я опишу основной инструментарий из элементарной теории доменов, необходимой для формулировки и доказательства корректности анализов.
20:15-21:00
Андрей Бреслав
Функции и данные в Kotlin
Kotlin — современный статически-типизированный язык программирования, предназначенный для индустрии. Этот доклад посвящён тому, какими средствами мы делаем так, чтобы код, совместимый с Java, выглядел красиво (иногда даже "функционально"). Разговор пойдёт о некоторых особенностях системы типов, в частности о совмещении традиционной типизации с анализом потока данных и о способах объявления классов и функций.
21:15-22:00
Дмитрий Грошев
Reducers в Clojure
Без сомнения, списочные комбинаторы в Haskell удобны. Кроме того, они позволяют многим из нас участвовать в увлекательных соревнованиях в code golf. Однако в следующую версию Clojure 1.5 войдёт альтернатива традиционным абстракциям на списках под названием reducers. Библиотека предлагает бесплатный deforestation и ускорение существующего кода, использующего map/filter/reduce. В докладе рассматривается идея reducers, их внутреннее устройство и возможность применения идеи в других языках.