ВПЕРЕДИ ПЛАНЕТЫ ВСЕЙ

Конкурсы программистов - явление уникальное. И, между прочим, начали их проводить именно у нас в Красноярске. Это потом пошли клоны и подражания. Бессменный организатор конкурсов - Валерий Иванович Хвостенко, отвечает на вопросы корреспондента ONLINE.

- Когда и как возникла идея конкурсов программистов?

Эта грандиозная эпопея началась в 1977 году. Идею предложил Володя Шайдуров. Он перешел на ВЦ СОАН из новосибирского Академгородка. Оттуда и привез эту идею.

- И что же первый конкурс был не у нас, а в Новосибирске?

Вот это я точно не могу сказать. Кажется, какие-то попытки там были. Надо бы спросить об этом у Володи. Правда, он уже не Володя, а Владимир Викторович, членкор, профессор и директор. А тогда, если мне не изменяет память, он был председателем Совета Молодых Ученых (СМУ) института. Вот под эгидой этого СМУ все и происходило первые годы. Но могу тебя заверить, ни в Новосибирске, ни в Москве, ни "в мировом масштабе" ничего подобного не было. Конкурсы стремительно завоевали популярность в среде программистов. В 1978 и в 1979 годах мы провели так называемые открытые конкурсы с приглашением программистов из университета и институтов СО АН. Но потом этого стало мало. С 1980 года начали дополнительно проводить городской конкурс, который с 1986 года перерос в краевой. Кое-где в городе стали проводить районные конкурсы. Приезжали люди не только из городов края, но из Новосибирска, Томска, Иркутска, Улан-Удэ. Зараза наша пошла по Сибири. И если бы не пришествие персоналок, быть бы нам теперь Нью-Красноярском. За 13 лет, по 1989 год, мы провели свыше двадцати конкурсов разного ранга. По 100-130 приглашений рассылали в организации, имеющие ЕС ЭВМ. По 30-40 команд выступало в заочном туре, по 50-60 человек враз соревновалось очно. Это был триумф технологии пакетного режима. Вряд ли сейчас молодежь знает, что это такое.

Процедура конкурса имитировала тогдашние условия профессиональной работы. Четыре часа на обдумывание задачи и программирование. Текст программы записывался на специальные бланки и сдавался на перфорацию. Колода перфокарт перемещалась в машзал, и начинался процесс отладки "в 3 захода". Потом "контрольный прогон на Большом Тесте Жюри". И знаменитая зачетная формула:

t + s

----- + 8n + 2m , где

10

t - время написания программы в минутах,

s - время выполнения программы в секундах,

n - число отладочных заходов на ЭВМ,

m - число исправлений в программе.

Процедура была отработана до мелочей. Информационное обеспечение конкурса включало, ни много, ни мало 24 документа: положения, планы, инструкции, расписания, графики, экраны, протоколы... Как вспомню, так вздрогну. Под конец ребята даже небольшое АСУ сгородили. Все службы в этот великий день работали по 10-12 часов в очень жестком режиме. Прямо учения МЧС, да и только. И за все годы ни одного серьезного сбоя. Приятно вспомнить соратников-организаторов Валеру Ефремова, Наташу Пивоварову, Сережу Голушко, Нину Лазареву, Валеру Жукова, Федотова Анатолия Михайловича... Жаль, всех не перечислить - столько людей прошло через эту кухню. Да и Вы ведь от звонка до звонка...

- Да, член жюри - "подопытный кролик - средний участник". Одна из должностей. На мне частенько апробировали задачу. Так, если Леша решил за четыре часа, значит, большинство решит за четыре часа, а Киперман - за сорок минут. Если лешина программа работает тридцать секунд, у большинства будет столько же, а у Чекудаева - две.

Ох, не говорите: какие люди! Готовился к беседе, поднял пыльные папки с архивами, протоколы с фамилиями - волна тепла прошла от воспоминаний. Асы, профессионалы, личности... Многие десятки людей прошли через эту школу. А начало было такое робкое. Быстрой сортировки не знали, списков не знали, Кнута не нюхали... Мы-то чувствовали себя как боги. Обложился литературой - и ищи идейку, мусоль задачку, доводи до ума, шлифуй. А участник пусть попотеет за партой. Были и тогда, конечно, самородки. Женя Киперман, не зная стандартного алгоритма, мог его придумать не сходя с места. А в последние годы жюри уже приходилось тяжко - квалификация участников выросла очень сильно.

-Не в последнюю очередь благодаря конкурсам...

Вероятно. Кстати, хорошую задачу всегда было трудно придумать. Помнится, однажды я сформулировал 18 критериев, которым должна была удовлетворять хорошая конкурсная задача.

- Причем трудно было не только придумать задачу, но и ее сформулировать правильно, чтобы не было никаких двусмысленностей. Это тоже был элемент профессиональной работы, н о уже не для участников конкурса, а для жюри как постановщиков задачи. Кстати, не видел в жизни более въедливого постановщика, чем Вы.

Были у нас, Леша, и "успехи", и "отдельные недостатки", но были и просто классные задачи. Помните "Задачу о застройке"? А "Острова в океане"? Я уж не говорю про "Экран с буквами"! Помню, как мы сидели безнадежно у Вас в университете, чиркали на листочках какие-то фигуры, все куда-то уходило не туда... Вдруг, эврика! Правда в начале казалось, что задача потерпела фиаско. У участников были очень большие тексты программ, до 200 строк. Говорили, что задача интересная, но уж больно громоздкая. Потом был феерический финал всего этого, когда программу в итоге свели к двум операторам! Через несколько дней после конкурса я встретил в автобусе Андрея Чекудаева, и он мне сказал: ему, Иванову и Кролю удалось ужать программу до 20 операторов. У жюри было операторов 40-50. Я взвился - как это так, написали программу лучше, чем у жюри! Сел, и сократил до 19. Потом еще несколько человек продвинулись, и, наконец, был большой прорыв у Люды Ноженковой - 11 операторов. Семь, шесть, пять, четыре, ТРИ! Точнее, выполняемых операторов три. Если не считать операторов ввода и печати. Вот тебе и громоздкая! Как всегда, особый кайф - после конкурса, когда на задачу набрасываются люди, не скованные лимитом времени. Приятно вспомнить Люду Ноженкову, которая всегда находила нестандартные решения. Если бы собраться "старикам" за чашкой кофе, можно было бы раскрутить эту тему.

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

-Тем более, что конкурсы не были омрачены привходящими мотивами и обстоятельствами...

Вернее, так: там были совковые моменты, особенно, когда дело взял в свои руки крайком ВЛКСМ.

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

Вряд ли я так смотрел на конкурсы. Хотя они будили в народе какую-то энергию. Конечно, мы мимикрировали. Чем бы ни был конкурс по сути, по форме это было "мероприятие". Приходила какая-нибудь... лицо...

-Какая-нибудь лицо! Это точно!

...произносила вступительное слово. Все сидели, терпеливо ждали, когда это кончится. Все абсолютно всё понимали. Что якобы проходит конкурс типа "Лучшая доярка" или "Лучший токарь".

-На ихней комсомольской фене им это было понятно.

И мы все делали вид, что происходит именно это. Совет молодых ученых, крайком ВЛКСМ, конкурс "Лучший программист". Я думаю, функционеры много поимели от этого - они ж составляли всякие отчеты, им за это давали лычки. Мероприятие-то было грандиозное, опять-таки впервые в стране... И не слесаря соревнуются - интеллектуалы... Интеллигенты по тому же ранжиру все как один, в одном строю с рабочими и крестьянами. Ну, мы терпели все это десять минут в начале и десять минут в конце, а в середине ловили свой кайф.

Все-таки человеческие страсти, которые там кипели, больше запомнились. Народ начинал вибрировать за месяц до конкурса. Как в спортивной борьбе - взлёты, падения, досадные провалы: пропустил запятую в тексте, и вылетел... Тут же и амбиции человеческие. Помнишь Сережу Кухтецкого - сильный парень, великий программист, а на первом конкурсе досадно вылетел по какой-то мелкой ошибке, не перенес этого и не стал больше участвовать. А шансы у него были очень большие... Были, наоборот, люди, нечувствительные к поражениям. Из конкурса в конкурс терпят фиаско, но участвуют. Им, может быть, нравился сам процесс. Или тот же Андрей Чекудаев - вечно второй. Он никогда не спускался ниже третьего-четвертого места, но и первое место никак не получалось - каждый раз, фатально, какая-нибудь досадная мелочь... Зато после конкурса, когда время не довлело, он брал реванш.

Все, о ком я говорю - профессионалы. Но конкурс слишком специфическое состязание, чтобы обходиться только профессиональными навыками. Это было не совсем честно по отношению к программистам - ставить их в такие условия. На самом деле никто никогда не требует, чтобы программа была написана за 4 часа и отлажена за три прохода. Зато на заочном туре были чисто профессиональные критерии.

Очень интересно было за характерами наблюдать. Были люди погруженные - их ничто не сбивало, и они всегда получали хоть какой-нибудь результат. А были - трепетные лани, которые то взлетали, то падали. Были еще и болельщики, как и в любом состязании. Были случаи некрасивых поступков, были примеры благородства, когда люди сами заявляли: вы вот не заметили, а у меня тут ошибка... У каждого свои понятия о том, что можно, а что нельзя. Коллизий было много, и нелегко было решить, и бывало, принимали неправильное решение...

-Не находите ли Вы, что конкурсы программистов прекратились потому, что изменилось само понимание программирования? Те программистские качества, которые в конкурсах выставлялись на первый план, теперь не так важны.

И это тоже. Коренным образом изменилась технология работы. Конкурсы ушли вместе с ЕС ЭВМ и пакетным режимом.

-Пофантазируем, как мог бы выглядеть конкурс сейчас. Дворец спорта, пара сотен компьютеров, рекламные щиты на стенах. Дается старт - и кто вперед придет к финишу.

Тогда машины должны быть одинаковой мощности...

-Пишут все кто на чем захочет. Софт инсталлируют сами.

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

-Нет, все равно, что-то не так.

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

Кто возьмется повторить результат в 3 оператора?


 

Знаменитая задача о буквах на экране.

Прямоугольная клетчатая таблица представляет из себя экран, на котором белые клетки образуют фон, а черные - изображение. На экране прямыми линиями изображены буквы Г, Е, Н, Р, С, Ь, L. Буквы не соприкасаются. Подсчитать количество букв каждого вида на заданном экране. Размер экрана задается двумя числами.


Опубликовано: ON LINE N1 1996 г.
© Алексей Бабий 1996