Вчерашний день

Jul 29, 2014 02:00

Мои впечатления от участия в ICFPC-14



Пришел в лабу за десять минут до начала, с кофеваркой и книгами "Жемчужины ФП" и "Параллельное и конкурентное программирование на Haskell". Особо подготовиться не успел.

Начинаем читать задание, оно огромное. На выходе - программа для SECD машины. Ясно, что нужно писать две виртуальные машины (SECD и более-менее обычную) и компилятор для SECD. Три часа выбираем, с какого языка компилировать. Варианты - Лисп в лиспе и лисп в хаскеле. В итоге выбираем второй.

Я пишу компилятор. В некоторый момент понимаю, что нужно всё выкинуть и начать заново. Выкидываю, получается лучше.

Наученный горьким опытом некоторых прошлых ICFPC, сразу пишу скрипт компиляции.

Lightning раунд мы пропускаем. К его концу мы ничего толкового не успели сделать.

Меняю компилятор для оптимизации рекурсивных вызовов и хвостовых вызовов. Это оказывается не так сложно, как я думал. Точнее, сделать простую реализацию несложно. Сложнее сделать так, чтобы она оптимизировала все варианты, когда оптимизация возможна. Но нам это особо и не надо. Будет тормозить - посмотрю.

С AI у меня ничего не получилось, скомпилированные программы упорно не хотели работать.

Падение ВК проходит сильно мимо меня.

За два часа до конца Габриэль находит странности в поведении лямбда-бота и выясняет, что при запуске скомпилированной версии вылезает runtime error. Я в это время помогаю Дмитрию писать AI (исправлять хаскелевские ошибки компиляции DSL). За час до конца мы этот процесс завершаем, а Габриэль пишет тест, на котором компилятор ломается. За полчаса до конца я нахожу баг и правлю его. Отправить заново скомпилированный код мы успеваем.

Правда, особого толку не будет, нормальный AI мы так и не успели написать. Ждём результатов, чоужтам

Итоги и выводы.



Своим участием в ICFPC я доволен. Компилятор я написал, и он даже более-менее ничего. На следующий год студентам дам его написать :)

Хорошо, когда начало рано. В начале не нужно много людей, не нужно большое обсуждение. Надо быстро сделать заготовку. Если начало часа в четыре утра - скорее всего, будет немного людей, и затраты на обсуждение будут невелики. Конечно, потом нужно больше людей.

В очередной раз понял, что писать тесты - очень хорошо :) Правильный режим - тоже хорошо. Правильный режим - это ложиться к четырем и вставать к девяти-десяти :) В очном, а не удаленном участии есть плюсы.

icfpc, программирование

Previous post Next post
Up