July 5th, 2012

glider

первый день меты

Сегодня был первый день конференции по метавычислениям META'2012 (http://meta2012.pereslavl.ru/).

Проходит мероприятие в городке Переславле-Залесском, в котором расположен Институт программных систем РАН. Прикольное место. Сам город очень небольшой, а институт вообще находится в нескольких километрах от города. Сегодня после докладов решил прогуляться пешком до отеля - солнце, речка, лес. Полная идиллия.

Развиртуализировались с @lambdamix и замечательно пообщались. Илья на пальцах рассказал мне про суперкомпиляцию и дистилляцию. Оказывается, суперкомпиляция очень полезна для анализа программ (я всегда думал, что область применимости лежит в задачах оптимизации). Например, при помощи суперкомпиляции можно определять эквивалентны ли программы. В общем случае эта проблема неразрешима в силу теоремы Райса, но в своей диссертации с помощью суперкомпилятора собственного изготовления Илья доказал несколько нетривиальных фактов. Например, проверил выполнение монадических законов для некоторых монад из стдлиба Хаскелла. Стыдно признать, но статью про суперкомпиляцию из седьмого fprog я в свое время ниасилил. Надо исправляться.

Наконец-то побывал на докладе Саши Слесаренко про политипический стейджинг (видео, слайды). И доклад, и Саша были на Scala Days, но я в то время отчаянно пытался пофиксить рефлекшен, чтобы зарелизить M3 пока идет конфа, поэтому доклад прощелкал. Если кто еще не читал про LMS, то крайне рекомендую - ого-го расширяет сознание. Саша про LMS читал и кроме того добавил туда новую прикольную штуку. Если вкратце, то LMS предоставляет фрейморк для написания DSL. Особенность этого фреймворка в том, что он помогает строить так называемые deeply embedded DSL. Это значит то, что компилятор хостового DSL служит просто парсером и тайпчекером, а DSL имеет возможность полностью переопределить семантику и кодогенерацию кода. Таким образом, хостовый язык программирования виртуализируется. Сразу после знакомства с LMS у меня возник вопрос: "а можно ли виртуализировать используемые структуры данных?". Это нужно потому, что часто бывает выгодно переупорядочить обрабатываемые данные для более эффективного представления в памяти. Саша отвечает: "да, можно" и на тайпклассах реализует виртуализатор произвольных структур данных (примитивы, sum types, product types, массивы и их комбинации) для модели nested data parallelism. tonsky, вот достойное применение имплиситов.

Немного поговорил про макросы и был удивлен услышать от нескольки человек, что макросы это на самом деле просто низкоуровневый хак, который нужен исключительно из-за несовершенства языков программирования. Крайне интересная аргументация, и я начинаю потихоньку в нее въезжать, завтра постараюсь узнать больше.

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

А! Еще узнал, что такое проекции Футамуры: http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html.