Re[17]: ICFP 2007 начинается сегодня
От: Трурль  
Дата: 24.07.07 05:29
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Понимаешь, реально на это расчёта не было. Если кто-то так и делал, то в последние часы от отчаяния (freaks unidos, например).

По крайней мере один дурак нашелся.
Re[18]: ICFP 2007 начинается сегодня
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 24.07.07 06:54
Оценка:
Т> нашелся.

И что удалось сделать?
Re[6]: ICFP 2007 начинается сегодня
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 24.07.07 10:10
Оценка: 6 (1)
K>А, нашел. Но опять же непонятно. Всё это — случайная догадка. Как мне в этом мог помочь Haskell, ума не приложу.

А ФП и Хаскель (или что-то вроде) там все же есть:


Куча найденных картинок:
http://psha.org.ru/p/icfp/doc/
Re[4]: ICFP 2007 начинается сегодня
От: Gaperton http://gaperton.livejournal.com
Дата: 25.07.07 10:55
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, D. Mon, Вы писали:


КЛ>[]



КЛ>

DM>>Я зопрогал на шарпе виртуальную машину и потом построил поверх неё дебаггер и компилятор ассемблера (ну типа такая вот запись паттернов/темплейтов) в коды. И декомпилятор, соответственно. И ваще!


КЛ>Может я че не понимаю, но вот сделать это за несколько часов Либо я не осознаю сложность задачи, либо я младенец по сравнению с ними Послушаешь, так они вм'ы клепают в нотепадах в перерыве между затяжкой сигареты и глотком пива


Помню, на втором курсе универа я за двое суток сделал SQL-сервер . С виртуальной машиной, компилятором в нее подмножества SQL (что требовалось условием задачи), и все такое. Причем, он умел много клиентов обслуживать. Как вспомню — так вздрогну, ужас какой-то. Сейчас так не смогу.

На самом деле, стековую "виртуальную машину" я сделал где-то за час с небольшим (парсер грамматики SQL рекурсивным спуском и генерация кода тоже заняла немного времени). Все перечисленное реально очень просто, здесь нет никакого креатива — тут надо тупо знать некоторые вещи, и все. У меня получилось сделать машину за час потому, что я знал язык ФОРТ, а это знание позволяет делать "виртуальные машины" на языках типа С/С++ чрезвычайно быстро. Это некоторый угол зрения на проблему, под которым все становится очень просто — ключевое слово "шитый код". Собственно, при таком подходе код состоит из адресов, а интерпретатор тупо передает управление по текущему адресу и инкрементирует счетчиу команд. Язык ФОРТ показывает, как при таком подходе сделать чрезвычайно компактную и гибкую "виртуальную машину". Это знание меня не раз выручало, кстати.

Вот тебе интерпретатор "шитого кода" — код не очень хороший, но иллюстрирует идею:

while( *context.PC ) // останавливаемся на команде с кодом 0
{
context.PC -> Execute( context ); // команда — это указатель на класс-наследник базового класса "команда", с виртуальной функцией execute
context.PC++; // контекст мы передали, чтобы команда могла менять PC. Так делаются команды условных переходов, например.
}

Вот и весь фокус.
Re[5]: ICFP 2007 начинается сегодня
От: Константин Л. Франция  
Дата: 25.07.07 11:33
Оценка:
Здравствуйте, Gaperton, Вы писали:

[]

G>На самом деле, стековую "виртуальную машину" я сделал где-то за час с небольшим (парсер грамматики SQL рекурсивным спуском и генерация кода тоже заняла немного времени). Все перечисленное реально очень просто, здесь нет никакого креатива — тут надо тупо знать некоторые вещи, и все.


[]

ну может быть. А то у меня уже комплекс неполноценнсоти развился
Re[5]: ICFP 2007 начинается сегодня
От: BulatZiganshin  
Дата: 25.07.07 12:13
Оценка: :)
G>Помню, на втором курсе универа я за двое суток сделал SQL-сервер .

недавно, когда отдельные товарищи стали меня уверять какая это сложная вещь — GUI-программирование я сделал за час файл-менеджер. на delphi. 7 строчек кода, всё остальное — натасканные из палитры готовые компоненты
Люди, я люблю вас! Будьте бдительны!!!
Re[6]: ICFP 2007 начинается сегодня
От: Gaperton http://gaperton.livejournal.com
Дата: 25.07.07 12:35
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, Gaperton, Вы писали:


КЛ>[]


G>>На самом деле, стековую "виртуальную машину" я сделал где-то за час с небольшим (парсер грамматики SQL рекурсивным спуском и генерация кода тоже заняла немного времени). Все перечисленное реально очень просто, здесь нет никакого креатива — тут надо тупо знать некоторые вещи, и все.


КЛ>[]


КЛ>ну может быть. А то у меня уже комплекс неполноценнсоти развился


Никаких "может быть". Держи ссылку, здесь пример кода на С++. Реализован интерпретатор "байт-кода" и три команды. Строчек 30 кода примерно .
http://rsdn.ru/Forum/message/638235.1.aspx
Автор: Gaperton
Дата: 13.05.04
Re[19]: ICFP 2007 начинается сегодня
От: Трурль  
Дата: 25.07.07 13:59
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>И что удалось сделать?


Да практически ничего. Я в субботу как посмотрел, что на форумах обсуждают, так и забросил с досады.
А вот эти ребята смогли перестроиться.
Re[10]: ICFP 2007 начинается сегодня
От: Mckey Россия  
Дата: 26.07.07 05:55
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Секрет фирмы . Вообще, в мануале в конце есть советы, как это делать. Типа, очень тонкий намёк. Моя первая реализация могла делать не более 50-ти итераций/сек, но потом marvin обратил моё внимание на раздел, и я пошёл по правильному пути. Если за 22 часа не воткнёшь, я тебе вышлю свой код, на Nemerle.


А можно посмотреть на ваш код н Nemerle?
Делай добро и бросай его в воду...
Re[11]: ICFP 2007 начинается сегодня
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 26.07.07 07:41
Оценка:
Здравствуйте, Mckey, Вы писали:

M>А можно посмотреть на ваш код н Nemerle?


А зачем тебе? Хочешь узнать, как вообще можно оптимизировать симуляцию ДНК? Тогда лучше посмотри код на C#, который я написал уже после контеста и который очень сильно оптимизирован. Если же просто хочешь посмотреть какой-нибудь код на Nemerle, то здесь, только он жутко криво написан да ещё и жутко тормозной.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: ICFP 2007 начинается сегодня
От: Mckey Россия  
Дата: 26.07.07 13:08
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>А зачем тебе? Хочешь узнать, как вообще можно оптимизировать симуляцию ДНК? Тогда лучше посмотри код на C#, который я написал уже после контеста и который очень сильно оптимизирован. Если же просто хочешь посмотреть какой-нибудь код на Nemerle, то здесь, только он жутко криво написан да ещё и жутко тормозной.


Просто тоже пробовал кое-что написать (уже после окончания).. Но все равно тех цифр про которые тут говорили достич не удаеться... хотелось бы посмотреть как можно решить проблему...
Делай добро и бросай его в воду...
Re[13]: ICFP 2007 начинается сегодня
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 26.07.07 13:48
Оценка:
Здравствуйте, Mckey, Вы писали:

K>>А зачем тебе? Хочешь узнать, как вообще можно оптимизировать симуляцию ДНК? Тогда лучше посмотри код на C#, который я написал уже после контеста и который очень сильно оптимизирован. Если же просто хочешь посмотреть какой-нибудь код на Nemerle, то здесь, только он жутко криво написан да ещё и жутко тормозной.


M>Просто тоже пробовал кое-что написать (уже после окончания).. Но все равно тех цифр про которые тут говорили достич не удаеться... хотелось бы посмотреть как можно решить проблему...


А что тут непонятного? В мануале в конце есть раздел с несколькими советами. Там делается намёк на то, что чаще всего производятся операции skip на много шагов и protect большого кучка ДНК, но с protection-level = 0 (т.е. просто копирование). Вместо копирования мегабайтных кусков можно просто делать блочный ДНК, и при копировании создавать блоки, указывающие на кусок уже ранее существующего ДНК. Но таким макаром через несколько итераций получается уж очень длинная цепочка блоков, что опять же замедляет работу. Так что время от времени нужно делать дефрагментацию, т.е. склеивание многих маленьких блоков в один.

Как раз от периодичности срабатывания дефрагментатора очень многое зависит. В том симуляторе, что я написал для контеста, дефрагментация делается просто с определённым периодом. Однако, это не дало хорошего результата. После контеста я примел другой подход: дефрагментатор вызывается настолько часто, насколько необходимо для поддержания "оптимального" количества блоков. Если же количество блоков растёт быстро, то время от времени производится более агрессивная дефрагментация (это даёт некоторый прирост в худших случаях).

Но вообще можно было на форум для этого не лезть. См. ссылку на discussion на сайте ICFP Contest. Там есть посты, объясняющие, как правильно пишется симулятор ДНК. Заодно некоторые команды дают ссылки на собственные реализации.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: ICFP 2007 начинается сегодня
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.07.07 16:41
Оценка:
А из-за чего код на Nemerle тормозной? Вроде с блоками работает, строки не копирует..
И с какой скоростью работают оба варианта? (у меня компилятора N нет, не на чем проверить)
Re[13]: ICFP 2007 начинается сегодня
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 26.07.07 17:11
Оценка: 8 (1)
Здравствуйте, D. Mon, Вы писали:

DM>А из-за чего код на Nemerle тормозной? Вроде с блоками работает, строки не копирует..


Ну, во-первых, в коде на Nemerle, как я уже объяснял, я не сильно заморачивался с дефрагментацией, в результате, она происходила слишком часто, когда не нужно, и слишклм редко, когда нужно. Во-вторых, в C# я занялся элементарным битовыжиманием. Например, в Nemerle сдуру сделал два вида блоков, и match'ил их, а pattern matching разворачивается в цепочку if'ов с проверкой is, что не очень быстро. Ещё неслобое ускорение получилось заменой if'ов (или match'а) на case'ы, последовательным чтением-проверкой при распозвнавании pattern'ов и template'ов, использовании, где возможно, не списков, а массивов, unchecked и т.д. На Nemerle практически всю эту оптимизацию можно сделать, за искл. case, аналогов которого я не нашёл, а match не разворачивается в case'ы в тривиальных случаях (потому что времени ни у кого нет эту фичу добавить).

DM>И с какой скоростью работают оба варианта? (у меня компилятора N нет, не на чем проверить)


С какой скоростью работал вариант на Nemerle, точно сказать не могу. Выводил время только после каждых 10К итераций, а общее время было особо не нужно. Тестировал неа двух компах. На одном пиковая скорость была 3000 и/с, наименьшая — 300 и/с. Исходная картинка генерилась где-то полчаса, так что скорость была приблизительно немногим более 1К и/с. На втором компе всё было быстрее примерно в 3 раза, а исходная картинка генерилась 12 минут. Мне, честно говоря, было не до хардкорных оптимизаций, тем более, что за время конкурса я нашёл только 4 префикса, и оптимизации были просто не актуальны.

Вариант на C# на медленном компе исходную картинку генерит 1.5 минуты, со средней скоростью примерно 20К и/с. На быстром компе — чуть меньше 40 секунд, со скоростью около 50 и/с.

Компилятор N вместе с интеграцией с VS периодически выкладывают в форуме "Интеграция Nemerle", в топиках с соотв. названием.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re: ICFP 2007 начинается сегодня
От: Shota  
Дата: 30.07.07 13:54
Оценка: 32 (3)
Адепт написал о своих впечатлениях от прошедшего ICFP 2007: http://users.livejournal.com/_adept_/67233.html
Re[2]: ICFP 2007 начинается сегодня
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 30.07.07 14:55
Оценка: 25 (3)
Мой рассказ:
http://about.thedeemon.com/texts/icfpc/
Re: ICFP 2007 начинается сегодня
От: Plague Россия 177230800
Дата: 31.07.07 07:31
Оценка:
Так кто победил? я так и не понял...
Re[2]: ICFP 2007 начинается сегодня
От: no4  
Дата: 31.07.07 07:34
Оценка:
Здравствуйте, Shota, Вы писали:

S>Адепт написал о своих впечатлениях от прошедшего ICFP 2007: http://users.livejournal.com/_adept_/67233.html


еще
yole: ICFP Postmortem: Team ryba
yole: ICFP Postmortem: Team ryba, part 2
yole: ICFP Postmortem: Team ryba, part 3
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: ICFP 2007 начинается сегодня
От: Andir Россия
Дата: 01.08.07 10:24
Оценка:
Здравствуйте, Plague, Вы писали:

P>Так кто победил? я так и не понял...


Объявят в октябре на конференции, а пока достоверно известен только top 15.

С Уважением, Andir!
using( RSDN@Home 1.2.0 alpha rev. 690 ) { /* Работаем */ }
Re: ICFP 2007 начинается сегодня
От: Petrovv  
Дата: 02.08.07 15:03
Оценка:
Здравствуйте, Andir, Вы писали:

А jabber-ru это не BulatZiganshin?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.