iknowКак программист я раскачивался в конце 1970х в МГУ, который окончил в 1980. Сейчас этот опыт имеет только исторический интерес
К 2008 у меня был достаточный опыт, так что специально к Intel® Threading Challenge 2008 я не готовился. Должен предупредить, что придерживаюсь умеренно консервативных взглядов, как на "софт", так и на "железо": не склонен каждые полгода менять комп, только потому, что появились более быстрые модели, обновлять версии инструментальных программ, потому что они теперь и кофе варить научились (т.е. появились опции, которые мне не нужны). Жалко не денег, но времени на сборку, установку, конфигурацию, отладку и привыкание. В начале 1980х работал на Искрах, Электрониках, СМ-4 (аналог PDP-11), ЕС ЭВМ (IBM 360/370). В середине 1980х постепенно перешел на IBM PC, где работал под MS DOS версии 3 до 1990 г. Потом 10 лет работал в основном на Макинтошах. И на Windows перешел только тогда, когда они достаточно улучшились в 2000 г. Сейчас у меня два десктопа Pentium-4 под Windows XP (иногда, когда нужно, работаю под Линуксами, их у меня целая куча). Современный многоядерный покупать не тороплюсь - опять же жалко времени, хотя чувствую, что пора
В отношении языков программирования мое глубокое убеждение, что ничего лучше ОО Паскаля и ничего лучше IDE Delphi-7 (Kylix 2 для Linux) пока не придумали (когда нужно, использую встроенный ассемблер). Так как в основном занимаюсь научными исследованиями, то такой консерватизм вполне сочетается с известным консерватизмом, принятым в фундаментальной академической науке
Из сказаного будут понятны принципиальные проблемы, с которыми я осознанно столкнулся на интеловском конкурсе. Этим международным конкурсом устроители преследовали цель продвижения многопоточных технологий, в частности, своего пакета TBB. За его использование в решениях начисляли дополнительные очки. Очки начислялись и за использование другого интеловского софта. Т.о. все, кто работал на С
и Фортране, получали фору. Хотя на Фортране, сколько помню, никто из участников не работал. Один из участников (был в группе лидеров) делал задания на оригинальном С-образном языке, продвигаемым его фирмой. Ограничение в условиях конкурса на язык было только одно - компилятор должен быть доступен разработчикам, такое же ограничение было и на использование сторонних библиотек. Думаю, что при организации олимпиады устроители обязательно должны рассмотреть вопросы о допустимых языках и библиотеках в качестве первоочередных.
Конкурс длился целый год: в начале каждого месяца на сайтах ISN (Intel Software Network - см. Википедию) публиковалось очередное задание, которое надо было отослать в виде исходного кода в конце месяца. Оценки выставлялись за скорость счета и по нескольким другим критериям (если интересно, посмотрю в своих архивах их список). Мне было интересно убедиться, что Delphi-7 не медленнее интеловского С
. К десятому заданию я прочно держался на пятом месте - подняться выше мешала упомянутая фора других лидеров гонки.
Устроители предоставили очень интересную возможность обсуждать конкурс в форумах на сайтах ISN (русском и английском, про другие не знаю), при этом за активность в этих форумах также начислялось небольшое количество очков. Активность была очень высокой. Правда, устроителей и, в частности, судей несколько раз припирали к стенке, и им приходилось оправдываться. К такому надо быть готовым, организуя олимпиаду. Так как мои проф. интересы лежат в области теории графов, мне наиболее интересны были задания из этой области. Кажется, шестое задание (если интересно, попробую найти список заданий) состояло в том, чтобы определить, является ли граф грациозным. Большинство, как порядочные тормоза, решили эту задачку полным перебором, но нашелся один умный участник, применивший эвристику, взятую им с потолка (сам на форуме признал). Для набора тестовых графов эвристика сработала, и он занял первое место в этом туре. Судьям пришлось попотеть, объясняясь с возмущенными участниками. При этом не первый раз возникал вопрос - это конкурс по программированию или по математике? Т.к. не все задания были прозрачны с математической точки зрения, некоторые требовали серьезной мат. подготовки и нетривиальной математической проработки решения. (Это очень серьезные вопросы для любой подобной олимпиады).
Пожалуй, пока все, что вспомнил с ходу, если интересно и по теме, то продолжу. А может, будет лучше, чтобы я отвечал на вопросы? В заключение назову известные мне источники, где можно найти интересные на мой взгляд задания для олимпиад:
1) Ч.Уэзерел, Этюды для программистов, М.: Мир, 1982.
2) С.Окулов, Программирование в алгоритмах, М.: Бином, 2004.
3) M. I. Trofimov. An optimization of the procedure for the calculation of Hosoya’s index. J. Math. Chem., 8:327–332, 1991. (Эту мою статью о труднорешаемой машиной задаче главный судья конкурса выбрал для задания на региональный конкурс в Индии, не знаю, состоялся ли он
).