Подходы к программированию, созданию кода и всему с этим связанному у Странника не были профессиональными, он не стремился сделать идеально, кратко или удобно. Он делал одноразово – чтобы сделать и забыть. Ему было проще потратить кучу времени на какую-то рутинную задачу, например, ручками переправлять одно название переменной на другое во всех местах, чем придумывать скрипт, который сам бы всё заменял. Возможно, он бы меньше потратил времени на написание скрипта и его запуск, но он не хотел ради такой проходной, одноразовой и неинтересной работы загружать свой мозг изучением нового материала в той области, которую он считал ненужной для себя. Так что он учил болталку самыми простыми, топорными способами, в которых было больше настырности и упёртости, чем профессионализма и ловкого умения пользоваться знаниями.

И что же дальше? Просто общаться скоро стало скучно. Можно научить болталку другому языку, пусть переводит на английский тексты, но зачем? И получится ли с таким ограниченным функционалом. Самому боту, конечно, всё равно, хоть полностью меняй базу данных на английскую, он всё равно ничего не понимает и не помнит ничего вне этой базы. Странник придумал неожиданный ход.

Он стал учить болталку не новому естественному языку, а искусственному языку – языку программирования С++. Можно ли на нём говорить? Нет, но можно писать связный код, когда один из собеседников начинает логическую фразу, а второй продолжает. Страннику удалось найти код той самой болталки и он поставил своей целью воспроизвести его в диалоге – задача непростая, но после сотен убитых часов он её достиг. И начал развлекаться.

Эволюция кода. Странник начал менять код, но не руками, а с помощью самой болталки. Он сохранял диалог, компилировал его и запускал новую болталку с чуть-чуть изменённым кодом. Как всегда в эволюции большинство мутаций, изменений в коде, снижают приспособленность, делают организм нежизнеспособным, но иногда находится жемчужина. Чтобы было интереснее и быстрее, Странник заставлял двух ботов беседовать между собой: он запускал две программы и копировал сообщения первой в чат второй, а потом обратно. Человек замолчал, стал исключительно переносчиком высказываний. Перестал быть автором, только наблюдателем.

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

Использование эволюционных подходов привело к тому, что темп развития болталки сильно возрос. Если в начале на каждый этап, на каждое улучшение требовались сотни часов Странника, то теперь нужны были только десятки часов напряжённой работы компьютера, чтобы имплементировать не только компилятор, но и всю С++ в болталку. Программа стала на маленький шажочек более самостоятельной, очень скоро научилась даже перезапускаться. Пропала необходимость создавать код, используя язык программирования, можно сразу в двоичной системе, но как это объяснить боту?