dastapov: (Default)
Вот они, родимые.

Мы - на позорном 131 месте. Где-то за 20 минут до финиша, когда мои товарищи по команде вырубались после бессонной ночи, возник вопрос - какой же солвер сдавать в качестве финального?

У нас их было два - один реализовывал А* поверх А*, как описано вот тут, не умел бэктрекинга, шел только вперед и выводил части программы по мере достижения очередной лямбды.

Второй солвер запускал два треда, и в одном крутил первый солвер, подсчитывая набранные очки после каждого выданного куска программы и запоминая лучший полученный результаты. Во втором треде крутился тупой-тупой А* над игровыми состояниями, целевой функцией которого было найти программу с оценкой лучше текущей имеющейся, а эвристикой - сумма расстояний до лямбд.

На мелких картах второй тред успевал перебрать все (или почти все) и выбраться из практически любой ловушки. На больших же картах он рисковал со временем пожрать всю память и быть убитым OutOfMemory Killer-ом (который живет в ядре linux). Если бы это произошло, то мы бы на такой карте не набрали ничего. Осознание этой засады пришло слишком поздно, и сделать какой-то монитор/ограничитель мы уже не успевали.

Забоявшись out of memory, я убедил полусонных Женю и Ваню, что сдавать надо первый вариант. В результате мы вылетели в первом раунде.

Второй вариант набрал бы как минимум 7200 очков (я запускал его на оценочных картах с лимитом в 30 секунд, а за 150, думаю, он мог бы набрать и больше) и мы были бы где-то в районе 50-60 месте. Ну, как известно, если бы да кабы ... :) Мораль придумайте сами.

Посмотрим, что будет в следующем году.
dastapov: (Default)

Обязательное вступление: что это вообще такое?


Каждый год случается международная конференция ICFP - International Conference on Functional Programming. К этой конференции приурочен програмерский конкурс под названием ICFPC. Несмотря на название конференции, участвовать в контесте может любой желающий, и пользоваться можно любыми языками, не только функциональными, кроме того - участники могут объединяться в команды. ICFPC отличается от соревнований типа ACM и topcoder тем, что он менее "заточен" под какие-то конкретные языки или наборы навыков, а задачи в нем прикольные и позволяют получить удовольствие не только от победы, но и от участия.

Я стараюсь принимать участие во всех ICFPC, и о том, как это было в прошлые годы, можно почитать в этом журнале по тэгу icfpc.

Подготовка


В этом году я заранее вписал даты в календарик, взял на работе отгул, и договорился с Женей [livejournal.com profile] antilamer и Ваней [livejournal.com profile] _navi_ о том, что мы будем выступать одной командой и писать на Haskell.

Моя жена собиралась где-то в это же время поехать с детьми на историческую родину, и мы подгадали поездку так, что на время ICFPC я остался один-совсем-один. Если быть точным, за 4 часа до старта я был в аэропорту и провожал их на самолет, и вернулся домой за 5 минут до начала.

Подготовка, таким образом, свелась к заливанию ssh-ключей на bitbucket (где у нас был git-репозиторий) и обмену контактами с остальными участниками команды :)

Старт и условие

Read more... )
dastapov: (Default)
Работа моя нынешняя пригласила Саймона Пейтона-Джонса (того самого) прийти и рассказать нам что-то интересное.

Он согласился и пришел, рассказывал вариации на тему побега из башни из слоновой кости (кто не видел - пролистайте хоть слайды, они ржачные). Т.к. аудитория наполовину состояла из caml-программистов, позубоскалили на тему eager и lazy evaluation, и т.д. и т.п.

В процессе я узнал, что (извините за пиджин рашн):Read more... )
dastapov: (Default)
Я тут читал залежи в google reader и наткнулся на пост, озаглавленный "Окно в закабаленный мир". В нем были описаны какие-то жуткие ужасы о том, как сетапить окружение для разработки на Haskell, и я хотел бы рассказать, как это делал я. Писать буду только про Linux, т.к. с Windows у меня никакого опыта нет.
Read more... )
dastapov: (Default)
"Хвалить себя надо всегда: источник забудется, а информация останется".

Вот, хвалю: http://themonadreader.wordpress.com/2011/10/26/issue-19/
dastapov: (Default)
На своей нынешней работе я много пишу на OCaml. Не только на нем, но если это не SQL, и не простенькие скрипты, то это почти наверняка будет OCaml. И по результатам трех месяцев я решил сесть и записать свои негативные впечатления от, скажем так, перехода с Haskell. Про позитив писать особого смысла нет - ну, почитаете вы его, покиваете головой и все. А так, глядишь, кто чего посоветует :)

В этот раз, думаю, у меня получится лучше, чем в прошлый. let bitching = begin ... )
dastapov: (Default)
Чем сейчас занимаются люди, которые привыкли празновать Новый Год, а вынуждены праздновать Рождество?

Сейчас у них каникулы после Рождества, но праздник-то еще впереди. Поэтому они ... красят двудольные графы :)

"Резюмируя, мы описали проверку двудольного графа исходя непосредственно из определения. Получившийся код даже немного короче, чем рассмотренные примеры [...]."

(Предыдущие серии этой занимательной истории и ссылки на ее начало можно найти в моем посте)
dastapov: (Default)
Надысь один мой френд написал пост про проверку двудольности графа на Haskell. После чего другой мой френд взял его код и откомментировал. После чего третий мой френд разразился язвительным постом-комментарием на эту тему (именно в комментариях к этому посту есть эпический тред про вывод типов в PHP и иже с ними).

После этого тема была вытащена на Хабр и образцово отхабрена.

Так как весь базар-вокзал - про Haskell, я тоже хочу добавить пару слов.Точнее, два листинга )
dastapov: (Default)
Вышел второй номер журнала "Практика функционального программирования" - теперь с меньшим количеством теории и большим количеством практики ;)

Авторы статей: [livejournal.com profile] _adept_, [livejournal.com profile] thesz, [livejournal.com profile] gaperton, [livejournal.com profile] alexott, [livejournal.com profile] _darkus_, [livejournal.com profile] dmzlj  и Александр Самойлович.

Читаем на сайте: http://fprog.ru/2009/issue2/
Обсуждаем в ЖЖ: http://community.livejournal.com/fprog/3105.html
dastapov: (Default)
Вышел первый выпуск журнала, посвящённого практике функционального и декларативного программирования, чему я очень рад. В нем есть моя статья, и этому я рад еще больше.

http://fprog.ru/2009/issue1/.

Организатор процесса - [livejournal.com profile] lionet. Авторы статей: [livejournal.com profile] thesz, [livejournal.com profile] _darkus_, [livejournal.com profile] antilamer, [livejournal.com profile] kurilka и [livejournal.com profile] alexott.

Официальный анонс )
dastapov: (Default)
Когда-то давно на волне некоторого успеха в деле написания заметочек в блог и журнальных статей, мне подумалось - а почему бы не попробовать себя в следующей весовой категории? Мысль пришла в голову и ушла в подсознание. Осела там, окопалась и изредка напоминала о себе, впрочем - без особого результата.

Однако же, когда в начале этого года [livejournal.com profile] _darkus_ обратился ко мне с предложением стать соавтором книги, благодатная почва была уже подготовлена и обильно удобрена, и я сразу же согласился. И вот уже в течении трех месяцев мы пишем книгу о синтаксическом анализе и построении DSL (domain-specific languages) при помощи Haskell, и ищем экспертов-рецензентов для обсуждения черновых вариантов ее глав.

В настоящее время для прочтения выложены введение и первая глава книги. Вторая, третья и четвертая главы будут в самом ближайшем времени доступны тем, кто плотно заинтересовался процессом и вступил в закрытое community [livejournal.com profile] sa_in_haskell.

Вы уже заинтересовались? Дело за малым: для того чтобы попасть в сообщество, необходимо написать e-mail на адреса darkus.14 AT gmail.com и dastapov AT gmail.com, в котором в паре абзацев рассказать про себя и про свой опыт использования языка Haskell, ещё в паре абзацев рассказать о том, почему имеется интерес к книге и чем конкретно, как вам кажется, вы можете помочь или быть полезны. Речь не идет о том, что мы будем устраивать формальные интервью и делить желающих на "годных" и "негодных". Речь, скорее, о том, чтобы убедиться, что потенциальный рецензент способен связно выражать свои мысли на письме и хоть что-то слышал про Haskell или связанные с ним вещи. Эта мера, равно как и закрытие community - наш (возможно, неоптимальный) способ улучшить соотношение "сигнал-шум" в общении с вами.

Спасибо за внимание, ждем писем!
dastapov: (Default)
Этот пост был написан "в стол" и долгое время там лежал. В процессе переезда обычно наводишь порядок, в том числе - и в столе. Ненужное выкидываешь, нужно - приспосабливаешь для какой-то пользы. Раз уж пост был написал - надо его публиковать :)

О чем повествует сказка про репку, вы все наверняка в курсе.

Если кто забыл - напомню:

> module Main where

> import Prelude hiding (putStrLn, print)
> import System.IO.UTF8
> import Data.List (intersperse, find)

Вы скажете - в сказке такого не было? Погодите - скоро сказка сказывается, не скоро дело делается. Так вот, жили-были любители репы:Read more... )
dastapov: (Default)
Умные люди придумали много разных формальных нотаций для моделирования процессов и систем (например, UML и IDEFx) . Другие умные люди написали гору софта, который призван облегчать работу по созданию этих самых моделей в выбранной нотации.

Казалось бы, выбирай нотацию, подбирай софт поудобнее - и вперед, рисовать схемы по захвату мирового господства.Дальше интересно будет только тем, кому уже интересно :) )
dastapov: (Default)
Я сподобился написать еще одну статью о ФП на русском. На этот раз - о бесконечных списках и ленивых вычислениях (в стиле "Tying The Knot", если кто в курсе). Буду рад, если вы прочтете и покритикуете.
dastapov: (Default)
Прошел год с тех пор, как я в составе команды Lazy Bottoms боролся за победу в ICFPC-2006. Победить нам не удалось, но мы заняли достаточно почетное 18 место (среди 360 команд), причем упорная борьба шла до самых последних минут и в течении последнего часов соревнования top 10 достаточно сильно изменялся.

В этом году наша команда собралась в несколько измененном и расширенном составе и выступила под старым названием. Результат, увы, оказался не столь впечатляющим - 56 место среди 860 команд, из которых 500 не сделали вообще ничего.

История в трех частях с прологом и эпилогом про то, как мы дошли до жизни такой )
dastapov: (Default)
Написал еще одну статью про ФП для developers.org.ua. Читайте, ругайте.

UPD: в принципе, статья писалась под впечатлением известной статьи Walder-а (The essense of FP) и некоего поста в ЖЖ, который я долго пытался найти, и не мог. А вот сейчас получилось :) To give credit where credit is due: спасибо [livejournal.com profile] thesz за пост http://thesz.livejournal.com/326004.html :)

PS
normal blogging will resume shortly :)
dastapov: (Default)
Написал короткую статью про ФП для developers.org.ua. Читайте, ругайте :)
dastapov: (Default)
По чьей-то ссылке наткнулся на очередной сайт с загадками вида "вычисли URL следующей страницы". При ближайшем рассмотрении оказалось, что головоломка рассчитана на программистов и предполагает использование Python-а.

Just for fun я попробовал сделать ее на Haskell. И вот что получилось ... )
dastapov: (Default)
Оказалось, что реализовать $SUBJ довольно-таки лего, благодаря языку запросов Xtract, реализованному в HaXml.

В качестве демонстрации получился "бот", который умеет висеть в MUC-комнате, повторять сообщения, адресованные ему, и отвечать на iq:version.

Забавно.

Поглядим. что получится сделать из этого дальше.

Все желающие - "darcs get http://adept.linux.kiev.ua/repos/xmpp"
dastapov: (Default)
... на тему "Haskell как rapid development/prototyping tool in real life"?

Тут у жены на работе приключилась интересная история )

Profile

dastapov: (Default)
Dmitry Astapov

July 2017

M T W T F S S
     12
3456789
1011 1213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags