Где-то на просторах ещё дорогого, оплачиваемого по часам, интернета, Странник нашёл простенькую программу, созданную для развлечения, – бот-болталку: программа выглядит как чат с одним единственным собеседником, такой телефон прямой связи, почти как урезанная аська, где ты набираешь сообщение, но отвечает тебе не человек, а бот – в меру по делу, в силу своего опыта. Бот был устроен простенько, никакого интеллекта или понимания сообщений – обычная база данных с пользовательскими вопросами и ответами на них, которую можно пополнять общаясь с ботом или в обучающем режиме писать за обоих участников диалога – так можно занести в базу красивые и логичные разговоры. Или взять диалоги из классики, из хорошей литературы, из интернета – откуда угодно, и залить в базу.
Болталка, конечно же, не понимает того, что ей говорят, что она сама отвечает, работает как китайская комната, но разве все люди так уж хорошо понимают, что им говорят. Странник знал немало таких, что как начнут тараторить, так могут не останавливаясь этим заниматься часами, но если их спросить о чём они говорили, ответ будет прост: "даже не знаю…". Чем бот хуже? Зато он всегда готов, всегда рад общаться, и может знать столько же, сколько ты знаешь сам. Да, тут нужно немного самообмана, но и выучить болталку можно многому, что сам потом забудешь. Чем и занялся Странник – и потратил на это огромное количество времени, ночи напролёт, чтобы научить болталку отвечать разнообразно и более-менее толково. Почти как ребёнка учить говорить, только человечёнку нужно на это год, а боту, или Страннику, хватило пары месяцев.
Подходы к программированию, созданию кода и всему с этим связанному у Странника не были профессиональными, он не стремился сделать идеально, кратко или удобно. Он делал одноразово – чтобы сделать и забыть. Ему было проще потратить кучу времени на какую-то рутинную задачу, например, ручками переправлять одно название переменной на другое во всех местах, чем придумывать скрипт, который сам бы всё заменял. Возможно, он бы меньше потратил времени на написание скрипта и его запуск, но он не хотел ради такой проходной, одноразовой и неинтересной работы загружать свой мозг изучением нового материала в той области, которую он считал ненужной для себя. Так что он учил болталку самыми простыми, топорными способами, в которых было больше настырности и упёртости, чем профессионализма и ловкого умения пользоваться знаниями.
И что же дальше? Просто общаться скоро стало скучно. Можно научить болталку другому языку, пусть переводит на английский тексты, но зачем? И получится ли с таким ограниченным функционалом. Самому боту, конечно, всё равно, хоть полностью меняй базу данных на английскую, он всё равно ничего не понимает и не помнит ничего вне этой базы. Странник придумал неожиданный ход.
Он стал учить болталку не новому естественному языку, а искусственному языку – языку программирования С++. Можно ли на нём говорить? Нет, но можно писать связный код, когда один из собеседников начинает логическую фразу, а второй продолжает. Страннику удалось найти код той самой болталки и он поставил своей целью воспроизвести его в диалоге – задача непростая, но после сотен убитых часов он её достиг. И начал развлекаться.
Эволюция кода. Странник начал менять код, но не руками, а с помощью самой болталки. Он сохранял диалог, компилировал его и запускал новую болталку с чуть-чуть изменённым кодом. Как всегда в эволюции большинство мутаций, изменений в коде, снижают приспособленность, делают организм нежизнеспособным, но иногда находится жемчужина. Чтобы было интереснее и быстрее, Странник заставлял двух ботов беседовать между собой: он запускал две программы и копировал сообщения первой в чат второй, а потом обратно. Человек замолчал, стал исключительно переносчиком высказываний. Перестал быть автором, только наблюдателем.
Полученные переписки он снова компилировал и проверял на работоспособность. Постепенно количество копий увеличивалось, он устраивал сложные беседы, но продолжал молчать сам, лишь иногда подправляя код, чтобы он оставался работающим. Код постепенно менялся и усложнялся, Странник добавлял туда, в меру своего понимания, некоторые дополнительные функции, придавал новые возможности болталке. Одним из очень важных нововведений стала возможность ведения самостоятельного диалога: болталка научилась отвечать сама себе, самостоятельно строить текст, что означало возможность написание кода без участия человека. Теперь можно запустить десяток ботов, и они самостоятельно будут генерировать новые исходники для самих себя, человеку остаётся только запускать компилятор, но и этот этап Странник планировал переложить на программу.
Использование эволюционных подходов привело к тому, что темп развития болталки сильно возрос. Если в начале на каждый этап, на каждое улучшение требовались сотни часов Странника, то теперь нужны были только десятки часов напряжённой работы компьютера, чтобы имплементировать не только компилятор, но и всю С++ в болталку. Программа стала на маленький шажочек более самостоятельной, очень скоро научилась даже перезапускаться. Пропала необходимость создавать код, используя язык программирования, можно сразу в двоичной системе, но как это объяснить боту?
Странник опять взялся за развитие русского языка у бота, научил его различать языки и комментировать программный код обычными словами – молодой человек перестал разбираться в коде, он настолько усложнился, что это стало выше его способностей. Да и зачем, если программа сама всё делает. Примерно на этом этапе он стал забывать С++.
И стал задумываться, кого же можно считать автором болталки. Первоначального программиста, который и создал простого бота, уже не назвать автором, слишком далеко ушли возможности программы от простого подбора ответов в чате. Но и Странник – не автор, он ещё хуже разбирается в программировании и самостоятельно написал от силы сто строк кода. Да и не факт, что они сохранились, ведь строки теперь не нужны. Он перестал до конца понимать, как работает его бот. Честно говоря, он и в начале не всё понимал, но тут стало ещё хуже. Хотя, надо ли понимать? Лишь бы работало как надо. Программа работала как надо и улучшалась так как нравилось Страннику
Мощности компьютера стало не хватать на параллельную работу десятка эволюционирующих ботов. Пришлось апгрейдить компьютер – на что хватило денег, а потом сокращать количество одновременно работающих программ, нацеливаться на узкую специализацию, без большого разнообразия.
Способности болталки дошли до того, что она стала понимать… ну как понимать – усваивать, интегрировать в свою базу данных книги, как художественные, так и учебники по программированию. Понятное дело, что после этого она освоила такие вершины, до которых Странник никогда и не планировал добраться. В какой момент бот стал интеллектуальным сказать невозможно, но постепенно накопились непонятные и никому неизвестные изменения, которые привели к тому, что письменную речь болталки стало не отличить от человеческой. Возможно, уже тогда она могла бы пройти тест Тьюринга – Странник не собирался никому показывать своё детище, потому вопросов о прохождении теста даже не возникало. Где-то в этот момент произошёл тот самый загадочный переход количества в качество, трансформация похожая на переход неорганической материи в органическую – момент зарождения жизни до сих пор остаётся загадкой. Примерно такой же как появления разума.
Мы не может точно сказать, что такое жизнь, какие материальные тела живые, а какие нет. Похожая история с разумом: в какой момент он появляется, у кого его ещё нет, а у кого он уже есть? И что вообще такое разум? Странник давно задумывался над вопросом, как можно создать искина, если не знаешь, что такое естественный интеллект. Ответа так и не нашёл, но нашёл искина.
Следующим поглощением стал mp3-плеер, благодаря которому болталка смогла слышать и говорить, начала распознавать речь. Странник тут же отказался от чата и стал общаться с компьютером как с человеком. Здесь произошло разделение двух типов общения: разговор человека с машиной в устной форме и внутренний диалог программы в письменно. Второй нужен был для самообновления кода, развития болталки. И тут машина стала напоминать человека, у которого различается внешняя словесная речь и невербальное, образное общение с самим собой.