ICFPC-2010: aftermath
2010-06-23 10:03 pmНу-с, отчет-репортаж написан, теперь можно дать волю эмоциям :)
Что мне понравилось?
Во-первых, команда. Все молодцы (и даже я :), все сражались, все боролись, никто не опустил рук и не дезертировал, все друг другу помогали и все такое прочее. Море позитива.
Во-вторых, задание бы нескучным и интересным (за исключением некоторых аспектов, о которых ниже).
В третьих, была конкуренция между русскими/украинскими/белорусскими командами, был азарт, связанный с этим и все такое прочее.
Я наконец-то почитал код на Scala, написанный для задачи, в которой я хорошо разбираюсь (и, соответственно, можно компенсировать незнание языка знанием предметной области). Scala оказалась прикольной, но не зацепила.
Мне понравилось пользоваться sync.in для совместного редактирования: проще, чем gobby (не надо ставить выделенный сервер и софт-клиент у каждого). Почему не etherpad? Не знаю. У меня на него есть какой-то зуб, настолько давний, что я его уже забыл :)
Ну и традиционно я доволен Haskell. Посмотрите, например, на функцию "eval" тут. Засунул все гейты в список, "соединил" входы и выходы, вытащил оттуда output gate, и благодаря lazy evaluation можно не устраивать "закат солнца вручную" по обходу гейтов в порядке номеров, рекурсивному распространению сигналов и т.п. Все произойдет "автомагически".
Что мне не понравилось?
Система подсчета баллов: это epic fail этого года. Во всех предыдущих ICFPC можно было 3 дня кропеть над Суперидеей, в третий день ее реализовать и попасть в top-10. Либо же можно было выбирать - решать много простых задачек или несколько сложных (2006-й год), и в любом из вариантов иметь шансы выиграть. В этом же году, кто не начал получать результаты на второй день - не имели шансов. Вообще. Нельзя было пропустить первый день, затем собраться, навалиться, и влезть в top-10. Это очень-очень-очень большой минус.
Да, безусловно, я говорю так в том числе и потому, что у нас основной прогресс попер на третий день, мы за ~3 часа наколотили ~300 очков (насколько можно было судить по постоянно подвисающему scoreboard-у), и если бы результаты отсылались не через сайт, а, скажем, по email после окончания конкурса - то у нас было бы на 300 решенных машин больше, чем есть (их мы просто не смогли залить). Плюс, учитывая, какой мы набрали темп - еще пару часов были бы для нас решающими. Короче, раньше такой фигни не было, и я протестую! :)
Далее. Условия конкурса подразумевали, что 200-800 команд будут постоянно засылать свои результаты. Slashdot-эффект для сервера организаторов был практически предопределен. Почему организаторы не сделали тупое API для заливки решений с basic http auth - это выше моего понимания. Вместо этого, мы имели дело с, кажется, сервлетами (я точно видел стандартную страницу ошибок от tomcat) и веб-мордой с развесистым JS внутри и вагоном отдельных CSS-файлов.
Затем, как говорят организаторы, тернарная кодировка в задании была "just for fun". Я первый соглашусь, что в ее реверсинге было много фана. И удовольствия от того, что ты в конце-концов понял и въехал, тоже было много. Но есть одно "но" - пресловутая зависимость очков от времени. Если бы ее не было - кодировка была бы очень в тему. А так - кодировка создавал достаточно высокий порог для входа, и если ты ко второму дню никак в этой области не продвигался, то можно было сливать воду и заканчивать участие. Что многие, как я понимаю, и сделали.
Ну, и моя традиционная больная мозоль: "надо больше общаться". Когда я в процессе составления отчета перечитывал наши чатлоги, я диву давался - сколько в них было умных и полезных мыслей, которые были высказаны слишком рано, а потом были успешно забыты. Плюс, где-то во второй день мы стали надолго замыкаться каждый на своей задаче, а надо было бы делать друг другу регулярные "доклады" - глядишь, кодировка фабрик далась бы нам раньше.
Спасибо за внимание :)
Что мне понравилось?
Во-первых, команда. Все молодцы (и даже я :), все сражались, все боролись, никто не опустил рук и не дезертировал, все друг другу помогали и все такое прочее. Море позитива.
Во-вторых, задание бы нескучным и интересным (за исключением некоторых аспектов, о которых ниже).
В третьих, была конкуренция между русскими/украинскими/белорусскими командами, был азарт, связанный с этим и все такое прочее.
Я наконец-то почитал код на Scala, написанный для задачи, в которой я хорошо разбираюсь (и, соответственно, можно компенсировать незнание языка знанием предметной области). Scala оказалась прикольной, но не зацепила.
Мне понравилось пользоваться sync.in для совместного редактирования: проще, чем gobby (не надо ставить выделенный сервер и софт-клиент у каждого). Почему не etherpad? Не знаю. У меня на него есть какой-то зуб, настолько давний, что я его уже забыл :)
Ну и традиционно я доволен Haskell. Посмотрите, например, на функцию "eval" тут. Засунул все гейты в список, "соединил" входы и выходы, вытащил оттуда output gate, и благодаря lazy evaluation можно не устраивать "закат солнца вручную" по обходу гейтов в порядке номеров, рекурсивному распространению сигналов и т.п. Все произойдет "автомагически".
Что мне не понравилось?
Система подсчета баллов: это epic fail этого года. Во всех предыдущих ICFPC можно было 3 дня кропеть над Суперидеей, в третий день ее реализовать и попасть в top-10. Либо же можно было выбирать - решать много простых задачек или несколько сложных (2006-й год), и в любом из вариантов иметь шансы выиграть. В этом же году, кто не начал получать результаты на второй день - не имели шансов. Вообще. Нельзя было пропустить первый день, затем собраться, навалиться, и влезть в top-10. Это очень-очень-очень большой минус.
Да, безусловно, я говорю так в том числе и потому, что у нас основной прогресс попер на третий день, мы за ~3 часа наколотили ~300 очков (насколько можно было судить по постоянно подвисающему scoreboard-у), и если бы результаты отсылались не через сайт, а, скажем, по email после окончания конкурса - то у нас было бы на 300 решенных машин больше, чем есть (их мы просто не смогли залить). Плюс, учитывая, какой мы набрали темп - еще пару часов были бы для нас решающими. Короче, раньше такой фигни не было, и я протестую! :)
Далее. Условия конкурса подразумевали, что 200-800 команд будут постоянно засылать свои результаты. Slashdot-эффект для сервера организаторов был практически предопределен. Почему организаторы не сделали тупое API для заливки решений с basic http auth - это выше моего понимания. Вместо этого, мы имели дело с, кажется, сервлетами (я точно видел стандартную страницу ошибок от tomcat) и веб-мордой с развесистым JS внутри и вагоном отдельных CSS-файлов.
Затем, как говорят организаторы, тернарная кодировка в задании была "just for fun". Я первый соглашусь, что в ее реверсинге было много фана. И удовольствия от того, что ты в конце-концов понял и въехал, тоже было много. Но есть одно "но" - пресловутая зависимость очков от времени. Если бы ее не было - кодировка была бы очень в тему. А так - кодировка создавал достаточно высокий порог для входа, и если ты ко второму дню никак в этой области не продвигался, то можно было сливать воду и заканчивать участие. Что многие, как я понимаю, и сделали.
Ну, и моя традиционная больная мозоль: "надо больше общаться". Когда я в процессе составления отчета перечитывал наши чатлоги, я диву давался - сколько в них было умных и полезных мыслей, которые были высказаны слишком рано, а потом были успешно забыты. Плюс, где-то во второй день мы стали надолго замыкаться каждый на своей задаче, а надо было бы делать друг другу регулярные "доклады" - глядишь, кодировка фабрик далась бы нам раньше.
Спасибо за внимание :)
(no subject)
Date: 2010-06-23 07:13 pm (UTC)Я сегодня перечитывал твой icfpc-2006, там та же фраза :)
(no subject)
Date: 2010-06-24 02:35 pm (UTC)(no subject)
Date: 2010-06-23 07:25 pm (UTC)(no subject)
Date: 2010-06-24 11:14 am (UTC)Вот, организовал. И, конечно же, все 72 часа прошли в ритме «быстрее-быстрее-быстрее» в ворохе бумаг и sync.in'а. Фактор «быстрее-быстрее» в этом году, кстати, был особенно значим.
(no subject)
Date: 2010-06-24 11:19 am (UTC)(no subject)
Date: 2010-06-24 11:36 am (UTC)(no subject)
Date: 2010-06-25 01:53 pm (UTC)(no subject)
Date: 2011-04-01 03:41 pm (UTC)Адепта это тоже касается.
(no subject)
Date: 2010-06-23 07:28 pm (UTC)(no subject)
Date: 2010-06-23 08:38 pm (UTC)(no subject)
Date: 2010-06-24 06:43 am (UTC)(no subject)
Date: 2010-06-24 08:07 am (UTC)Императивное решение с одним прямым проходом массива/списка проще и наглядней, никакого заката солнца и "рекурсивного распространения". Достаточно иметь массив "что у гейта на входе". Идем по гейтам последовательно, берем вход из этого массива, записываем результат гейт-функции в тот же массив в указанное гейтом место. Все задержки получатся сами собой, т.к. посланные вперед значения будут использованы на той же итерации, а посланные назад - на следующей.
(no subject)
Date: 2010-06-24 02:36 pm (UTC)(no subject)
Date: 2010-06-25 01:58 pm (UTC)Даже переписывая какую-то функцию поздней ночью ближе к утру, когда в голове остаётся место ровно для одной мысли одновременно - ничего не ломается!
Императивные решения этому критерию не удовлетворяют.
(no subject)
Date: 2010-06-25 05:28 pm (UTC)(no subject)
Date: 2010-06-25 06:52 pm (UTC)(no subject)
Date: 2010-06-26 07:09 am (UTC)Google Wave? :)
(no subject)
Date: 2010-07-04 04:31 pm (UTC)Вот вам и весь ICFPC.