Мои впечатления от
участия в
ICFPC-14 Пришел в лабу за десять минут до начала, с кофеваркой и книгами "Жемчужины ФП" и "Параллельное и конкурентное программирование на Haskell". Особо подготовиться не успел.
Начинаем читать задание, оно огромное. На выходе - программа для SECD машины. Ясно, что нужно писать две виртуальные машины (SECD и более-менее обычную) и компилятор для SECD. Три часа выбираем, с какого языка компилировать. Варианты - Лисп в лиспе и лисп в хаскеле. В итоге выбираем второй.
Я пишу компилятор. В некоторый момент понимаю, что нужно всё выкинуть и начать заново. Выкидываю, получается лучше.
Наученный горьким опытом некоторых прошлых ICFPC, сразу пишу скрипт компиляции.
Lightning раунд мы пропускаем. К его концу мы ничего толкового не успели сделать.
Меняю компилятор для оптимизации рекурсивных вызовов и хвостовых вызовов. Это оказывается не так сложно, как я думал. Точнее, сделать простую реализацию несложно. Сложнее сделать так, чтобы она оптимизировала все варианты, когда оптимизация возможна. Но нам это особо и не надо. Будет тормозить - посмотрю.
С AI у меня ничего не получилось, скомпилированные программы упорно не хотели работать.
Падение ВК проходит сильно мимо меня.
За два часа до конца Габриэль находит странности в поведении лямбда-бота и выясняет, что при запуске скомпилированной версии вылезает runtime error. Я в это время помогаю Дмитрию писать AI (исправлять хаскелевские ошибки компиляции DSL). За час до конца мы этот процесс завершаем, а Габриэль пишет тест, на котором компилятор ломается. За полчаса до конца я нахожу баг и правлю его. Отправить заново скомпилированный код мы успеваем.
Правда, особого толку не будет, нормальный AI мы так и не успели написать. Ждём результатов, чоужтам
Итоги и выводы.
Своим участием в ICFPC я доволен. Компилятор я написал, и он даже более-менее ничего. На следующий год студентам дам его написать :)
Хорошо, когда начало рано. В начале не нужно много людей, не нужно большое обсуждение. Надо быстро сделать заготовку. Если начало часа в четыре утра - скорее всего, будет немного людей, и затраты на обсуждение будут невелики. Конечно, потом нужно больше людей.
В очередной раз понял, что писать тесты - очень хорошо :) Правильный режим - тоже хорошо. Правильный режим - это ложиться к четырем и вставать к девяти-десяти :) В очном, а не удаленном участии есть плюсы.