- PVSM.RU - https://www.pvsm.ru -
В бытовом языке этот фразеологизм означает нечто заумное, переусложненное и бесполезное. Выражение восходит к роману писателя Германа Гессе [1], за который тот на минуточку получил Нобелевскую премию. В романе изображен вымышленный мир, устроенный таким образом, что посреди обычных государств в мире основана специальная страна интеллектуалов — Касталия. Живущие в ней люди могут, не задумываясь о куске хлеба, посвятить себя ответам на лишенные практической пользы гуманитарные вопросы вроде трактовки какой-нибудь строки древнего стихотворения. Все остальные государства терпят существование Касталии и регулярно скидываются на ее содержание (ну чисто как ООН), а сама Касталия немного воспитывает учителей языков, литературы, музыки и математики для внешнего мира, но по большому счету никому ничего не должна. Предельным выражением оторванности от практической жизни служит как раз та самая игра в бисер — самая авторитетная внутри Касталии, но мало кому понятная за ее пределами деятельность.
Привыкшим к бодрому экшону роман будет читать трудновато: там мало что происходит. Герой Йозеф Кнехт учится в разных заведениях, ходит туда и сюда, разговаривает разговоры, и сначала добивается больших успехов, продвигаясь наверх внутренней иерархии Касталии, становится самым главным по игре в бисер (а это значит — самым главным вообще), но потом разочаровывается во всем и покидает страну, сочтя, что лучше жить рядом с простыми людьми. Мораль, в общем, простая, но сформулированная немецким писателем в разгар Второй мировой войны (1943 год на дворе), она становится социально значимым высказыванием: интеллектуалам, несмотря на соблазн отгородиться от мира и погрузиться в свои манускрипты, не следует терять контакта с происходящим вокруг.
Правда, беспомощный в обычной жизни Кнехт (спойлер!) довольно быстро погибает за пределами Касталии, но это уже совсем другая история.
Роман дожил до наших дней и еще не сдан в глубокий архив не благодаря заложенным в сюжете простым истинам и не благодаря занудным монологам персонажей Гессе. Жемчужина произведения — как раз идея той самой игры. Как она выглядит и в чем заключается, автор нигде не пишет. И в этом, по всей видимости, одна из причин ее привлекательности. Опиши Гессе все в подробностях, игра тут же лишилась своего ореола таинственности и креативного потенциала. А сейчас читатель сам должен придумать, что там к чему, и это весело.
Я вижу игру в бисер как манипуляцию знаками (наличие собственно «бисера» в игре всего лишь метафора). Знаки — это такие объекты, у которых есть материальная репрезентация («означающее») и стоящие за ней смыслы («означаемое»). Означающее для буквы «А» — это то, как эта буква выглядит, а означаемое локализуется в пределах какой-нибудь конкретной семиотической системы, например, графической системы русского языка, где есть соответствующий этой букве звук.
Сам процесс игры скорее является игрой в том же значении, что и «игра на музыкальном инструменте», то есть это исполнение заранее составленного произведения, а не игра в смысле соперничества каких-то игроков. Хотя для Гессе первично то значение «игры», которое связано с деятельностью, не приносящей пользы, где процесс важнее результата.
Стало быть, у игры в бисер должен быть какой-то алфавит знаков, набор которых гораздо шире того, что входит в алфавит естественных языков. Помимо букв, туда точно должны входить музыкальные ноты, символы из математической нотации и бог знает что еще. Свои знаки, вероятно, должны быть не только для отдельных нот и звуков языка, но и для целых музыкальных пассажей и классических цитат — из античных авторов, древнеиндийской и японской поэзии и всего на свете, что доступно интеллектуалам Касталии.
Интерес игры, по всей видимости, в сочетаниях всех этих элементов и стоящей за ними традиции. Скажем, соединение какой-нибудь теоремы с мелодией сонаты ХѴІІ века должно восприниматься как остроумное, а пентатонический ряд с цитатой из Вергилия (пример условный) как нечто скучное и банальное. Некоторой аналогией могут служить правила рифмовки в русской поэзии: глагольная рифма типа «злиться — бриться» скучная, а «товарищи — товар ищи» звучит свежо, потому что каламбур. Кто сказал, что надо воспринимать именно так? Никто, просто сложилась такая традиция, и если ты с этой традицией не знаком, то разницы ты не видишь. Вот почему не понимали игру в бисер люди за пределами Касталии.
В процессе игры все эти сочетания знаков видоизменяются, преобразуются, перетасовываются, образуя новые неожиданные сочетания, а сами преобразования тоже подчиняются каким-то правилам, потому что нет ничего скучнее игры без правил.
Нужно всего лишь закодировать все культурное наследие человечества и придумать правила преобразования одного состояния разложенного на игровой доске «бисера» в другое. Есть ощущение, что это все-таки ту мач. Начнем с малого.
Что если в наш алфавит пока войдет только китайская письменность и смыслы, которыми мы будем жонглировать, заимствуем из китайской поэзии эпохи Тан [2]? С одной стороны, такое ограничение по сравнению со всей культурой человечества заставляет нас ужаться довольно сильно. С другой стороны, китайский «алфавит» большой, а китайская грамота поэзия — это достаточно заумно, чтобы появился компьютерный прототип игры в бисер.
Правила возьмем из самой статусной интеллектуальной игры — из шахмат. Да, надо было бы из го, но тогда в нашей схеме был бы слишком сильный крен в сторону Востока, а нужно выдерживать диверсификацию стран света.
У китайцев эпохи Тан есть стихи, в которых ровно 8 строк, а иероглифов в строке обязательно 7. В современных изданиях в конце строки ставится знак препинания (,или 。), в результате получаем матрицу 8х8 знаков, что как раз соответствует игровому полю шахмат. Плюс иероглифы выглядят вполне квадратно, что усиливает ассоциации с клетками на доске. С уже существующими танскими стихотворениями и будем работать.
Правила могут быть такими. Берем какую-нибудь реальную шахматную партию и каждый ее ход превращаем в преобразования китайского текста. При ходе фигуры мы будем менять местами иероглифы, которые соответствуют начальному и целевому полю хода. Например, если ладья идет с поля a8 на поле b8, то мы меняем местами первый и второй иероглиф в первой строке. При взятии фигур мы выбрасывать иероглифы не будем, потому что тогда разрушилась бы наша матрица 8х8 и мы не смогли бы играть дальше.
По ходу игры первоначальный поэтический текст будет непредсказуемым образом видоизменяться, а иероглифы вступать в новые неожиданные отношения, что нам и требуется.
Берем руководство [3] по созданию питоновских пакетов, отбираем из корпуса танских текстов [4] такие, которые подходят нам по формату 8х8 (8 полноценных иероглифов в 8 строках, увы, не бывает), прикручиваем умение читать формат PGN [5], в котором записываются листинги шахматных партий — и вот, пакет готов [6]. Роман Гессе называется по-английски «The Glass Bead Game», а у нас пока ограниченный по функциональности прототип, что мы и отразим в названии (тоже каламбурном): «Chess Bead Game».
Пакет умеет подгружать конкретное стихотворение (или случайное, если пользователь не знает, какое стихотворение ему нужно), знает, кто его написал и как оно называется:
import chess_bead as cb
g = cb.Game(poem_num=2000)
Пакет умеет подгружать шахматную партию в формате PGN:
import chess_bead as cb
g = cb.Game(pgn_file='/path/to/file.pgn', poem_num=2000)
Если у пользователя нет под рукой своего PGN-файлика, можно взять из готового набора. Но вообще-то архивы шахматных партий есть циклопические многогигабайтные [7].
Далее пакет может запустить игру и хранить все состояния «бисера», то есть положения иероглифов после каждого хода.
Вот стихотворение великого поэта Ду Фу до игры:
g = cb.Game(poem_num=1765)
verses = g.start_game()
verses[0].lines
initial_state =[]
for line in verses[0].lines:
initial_state.append(''.join(line))
initial_text = 'n'.join(initial_state)
print(initial_text)
風急天高猿嘯哀,
渚清沙白鳥飛回。
無邊落木蕭蕭下,
不盡長江袞袞來。
萬里悲秋常作客,
百年多病獨登臺。
艱難苦恨繁霜鬢,
潦倒新停濁酒杯。
В переводе [8] Наталии Азаровой:
Взбираясь наверх
ветром нервным взвивается к небу
обезьяний плач по умершим
у отмели белой брызги вращеньем
кругами птиц над водой
так беспрестанно теряют деревья
шуршанье шуршание листьев
так бесконечно катит янцзы
теченье течение встречи
в тысяче вёрст от дома чужой
печальной осенью долгой
годы прожиты болен и одинок
карабкаюсь всё же на башню
тяжко и трудно от горести нелюбви
на висках расцветает иней
странно гляжусь незадачливым старцем
но больше не пью вина
Стремителен ветер, и небо высо́ко.
В лесу обезьяны вопят.
Над чистой, осенней водою потока
Осенние птицы летят.
Осенние листья кружат, опадая,
Багряны они и легки,
И тянутся вдаль от родимого края
Просторы Великой реки.
(перевод А. Гитовича)
Теперь перемешаем эти прекрасные стихи, руководствуясь классической партией из матча Спасский-Фишер [9] 1972 года.
g = cb.Game(pgn_file='5152.pgn', chess_game=3, poem_num=1765)
verses = g.start_game()
В конце получилось так:
g.result # А чем закончилась партия?
'1/2-1/2' # ничья
final_state =[]
for line in verses[89].lines:
final_state.append(''.join(line))
final_text = 'n'.join(final_state)
print(final_text)
倒落長潦蕭,霜盡
無來悲蕭停酒木。
不邊杯猿鳥新下,
渚哀苦江臺飛回袞
艱里繁沙袞白天。
萬年難濁急清嘯,
百高客秋常作鬢。
病多獨恨登,風。
Что все это значит? Вот с этим не ко мне. Китайского я не знаю, в Касталии не учился. Могу только воспользоваться онлайн-переводчиком. Он отлично берет на себя функцию оракула [10]:
Мороз закончился
Никто не приходит оплакивать остановку винного дерева.
Чаши обезьян и птиц — новые.
И печальная платформа реки летит обратно в железную
Железо дня на твердом песке.
Миллиона лет недостаточно, чтобы создать свистящий звук.
У ста высоких посетителей осенью часто появляются бакенбарды.
Я болен и ненавижу ветер.
Честно говоря, я не удивлен, что никто не пришел оплакать остановку винного дерева, и про бакенбарды осенью тоже верю. Иными словами, я бы считал, что все сказанное в стихотворении — правда.
Но на буковки без визуализации смотреть скучновато. Прикрутим еще возможность создания картинок и анимации игры. Для этого нам нужен шрифт [11]. Лицензия предполагает, что поставлять его можно [12] только в составе программного обеспечения, что как раз наш случай. Получается так:
v = cb.Viz(verses, g.author, g.title)
v.gif()
Тут поле, на которое ходит фигура, обозначается красным, а поле, с которого она ходит, серым.
Теперь добавим документацию [13] и пакет готов.
Это наш вариант игры в бисер. Разумеется, это частный случай. Нужны другие варианты знаковых систем и другие игры, помимо шахмат, но общее направление теперь различимо.
Автор: Борис Орехов
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/369053
Ссылки в тексте:
[1] роману писателя Германа Гессе: https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%D0%B2_%D0%B1%D0%B8%D1%81%D0%B5%D1%80
[2] эпохи Тан: https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D0%B5%D1%80%D0%B8%D1%8F_%D0%A2%D0%B0%D0%BD
[3] руководство: https://antonz.ru/packaging
[4] корпуса танских текстов: https://github.com/snowtraces/poetry-source
[5] умение читать формат PGN: https://python-chess.readthedocs.io/en/latest/pgn.html
[6] пакет готов: https://pypi.org/project/chess_bead/
[7] циклопические многогигабайтные: https://github.com/rozim/ChessData
[8] переводе: http://natalia-azarova.com/pdf/DuFu.pdf
[9] классической партией из матча Спасский-Фишер: http://blog.kislenko.net/archives/5152.pgn
[10] берет на себя функцию оракула: https://www.deepl.com/translator#zh/ru/%E5%80%92%E8%90%BD%E9%95%B7%E6%BD%A6%E8%95%AD%EF%BC%8C%E9%9C%9C%E7%9B%A1%0A%E7%84%A1%E4%BE%86%E6%82%B2%E8%95%AD%E5%81%9C%E9%85%92%E6%9C%A8%E3%80%82%0A%E4%B8%8D%E9%82%8A%E6%9D%AF%E7%8C%BF%E9%B3%A5%E6%96%B0%E4%B8%8B%EF%BC%8C%0A%E6%B8%9A%E5%93%80%E8%8B%A6%E6%B1%9F%E8%87%BA%E9%A3%9B%E5%9B%9E%E8%A2%9E%0A%E8%89%B1%E9%87%8C%E7%B9%81%E6%B2%99%E8%A2%9E%E7%99%BD%E5%A4%A9%E3%80%82%0A%E8%90%AC%E5%B9%B4%E9%9B%A3%E6%BF%81%E6%80%A5%E6%B8%85%E5%98%AF%EF%BC%8C%0A%E7%99%BE%E9%AB%98%E5%AE%A2%E7%A7%8B%E5%B8%B8%E4%BD%9C%E9%AC%A2%E3%80%82%0A%E7%97%85%E5%A4%9A%E7%8D%A8%E6%81%A8%E7%99%BB%EF%BC%8C%E9%A2%A8%E3%80%82
[11] шрифт: https://github.com/l10n-tw/cwtex-q-fonts-TTFs
[12] можно: https://github.com/l10n-tw/cwtex-q-fonts
[13] документацию: https://chess-bead.readthedocs.io/en/latest/
[14] Источник: https://habr.com/ru/post/585142/?utm_source=habrahabr&utm_medium=rss&utm_campaign=585142
Нажмите здесь для печати.