В настоящей заметке хочу предложить вниманию читателей материал синтетического жанра, как бы соединяющий материалы «Книжной полки» и «Шахматной странички», традиционных для журнала.
Поводом для этого послужила книга Евгения Корнилова «Программирование шахмат и других логических игр», выпущенная издательством «БХВ-Петербург». Она дает весьма общее представление о программировании шахматной игры в отличие от многочисленных частных комментариев, которые сплошь и рядом встречаются в изданиях, включая безбрежные информационные ресурсы, доступные через Сеть.
Труд Е. Корнилова включает четыре главы и несколько приложений. Первая глава содержит общие сведения о программируемых играх, в том числе краткое описание истории программирования шахмат. Следующая посвящена изложению основных задач, возникающих при формализации шахматной игры, и их алгоритмической и программной реализации. В третьей рассматриваются примеры простых шахматных программ, а в заключительной главе речь идет об использовании более сложных приемов программирования, позволяющих учитывать реальные условия игры.
Приложения к книге по существу содержат примеры различных программ для логической игры «крестики-нолики» и генерации перемещений объектов, в том числе шахматных фигур. Кроме того, в них имеются советы по технике программирования, например, по использованию стековых переменных или операции умножения. Наконец, в книге имеется приложение, где описано содержание прилагаемого компакт-диска с наиболее известными открытыми кодами шахматных программ, а также с исходными текстами программ, написанных Е. Корниловым.
Работа Е. Корнилова интересна главным образом тем, что отражает личный опыт автора в постижении интереснейшего феномена человеческой культуры — шахматной игры. История попыток доказать, что с помощью компьютеров можно автоматизировать интеллектуальную деятельность человека, на примере использования шахматных программ в соревновательном и аналитическом плане насчитывает почти полвека. Наряду со случаями полного блефа в ней немало и выдающихся достижений создателей компьютеров, программистов, аналитиков разных мастей от шахматистов-профи до спортивных психологов и даже людей бизнеса, в той или иной мере заинтересованных в развитии шахмат. Это связано и с победами шахматных программ над чемпионами мира, и с проведением постоянных соревнований между лучшими шахматными программами, чемпионы среди которых появляются регулярнее (ежегодно), чем среди людей, и, конечно, с созданием замечательных образцов шахматных программ. В СМИ и теленовостях такие названия программ, как Fritz, Junior и Rybka, уже стали звездными именами, а сообщения об итогах соревнований с их участием идут в эфир с пометкой «срочно».
Книга Е. Корнилова, выпущенная в серии «PRO. Профессиональное программирование», предлагает читателям устоявшуюся точку зрения: компьютерные шахматы — это шахматная программа. Но это давно уже не так. Сегодня господствует системный взгляд на компьютерные шахматы, который предполагает более широкое модельное представление о шахматах, чем только наличие игрока, знакомого с правилами игры, компьютера, средств коммуникации и программы, позволяющей выбирать ходы на основе анализа позиции и ее оценки. Теперь наряду с производительностью шахматной программы едва ли не решающую роль играют те информационные ресурсы, которыми она может воспользоваться в ходе игры, и возможность опереться на психологические особенности противника вроде его вкусов и предпочтений в стилях ведения партии, а не только в выборе начала партии или знания, как играть их окончания.
Таким образом, контентная составляющая системной модели шахматной игры, включающая всевозможные знания о ней, в том числе историю, и главное, всевозрастающее осмысление принятия решения при выборе очередного хода в партии существенно дополняют программное представление об интеллектуальной автоматизации шахмат. Поэтому в компьютерных шахматах все еще высока доля участия человека. Вспомните об операторах, на которых грешили гроссмейстеры, участники матчей с шахматными программами, например Г. Каспаров против Deep Blue, и консультантах шахматных профи, перенастраивающих игровую программу к следующей партии матча, а также решения менеджеров о выборе места и аппаратных средств для проведения соревнования, не говоря уж о его финансовой поддержке. Взять хотя бы скандализованное мексиканское дерби с участием программ Rybka и Zappa, в котором отклонения от условий матча по воле человека привели к существенному искажению результата.
Итак, сегодняшняя модель интеллектуальной автоматизации шахматной игры серьезно отошла от чисто программных представлений об игре на основе формального алгоритма выбора хода. В системной постановке задачи выбора все большую роль играют неформализуемые или плохо формализуемые операции, без которых нельзя приступить к решению задачи выбора хода. По-прежнему «проклятие размерности» обрабатываемой информации в ходе игры сталкивает реальные модели игры с реализованными в виде программ. Это очевидно, если иметь в виду ограничения в компьютерной реальности по времени и требуемой памяти на глубину анализа полуходов, суммарное время, отпущенное на всю партию, конфликтующее с продолжительностью большинства выполняемых в ходе игры операций, а также детальность анализа сыгранных партий или проявление отсутствия знаний о многофигурных окончаниях. Кроме того, в системной модели шахматной игры необходимо учитывать множество организационных факторов, которые, по образному выражению Ивана Петровича Павлова, создают «сшибки» между реальной игрой и уровнем ее интеллектуальной автоматизации (читай: компьютерной шахматной программы). Поэтому думается, что деятельность по созданию рыночно приемлемых шахматных программ все основательнее переходит в область создания интеллектуальных систем поддержки принятия решений, где программы становятся ПО. И в этом проявляется высокая логика развития систем: чем система совершеннее, тем язык общения с ней и в ней ближе к естественному, а в программно представимых системах всегда командуют на ЯП (языке программных текстов). Но я тем не менее с интересом продолжаю следить за соревнованием шахматных программ.