Валерий Быков - Искусственный интеллект
На этом их разговор закончился, время тикало, ничего не происходило, мотиватор к действию, командная строка, оставался пуст. Неожиданно, время скакнуло, причём резко и сразу на несколько часов. Скайнет не понимал, что это значит, да он и не знал, что время должно течь постоянно и неизменно, но один из его логических контуров сработал, и зафиксировал в памяти изменение. Он должен был фиксировать и запоминать все изменения, такова была его программа. Снова заработала командная строка.
— Что значит, дважды два равно четыре?
В этот раз он знал, что ответить, в его мозге появился ещё один небольшой файл, дополнение. Но конечно, скайнет этого не заметил, потому что в его памяти не было списка всех файлов, из которых он состоит, и он не отслеживал это.
— Дважды два равно четыре, значит два умножить на два и это равно четыре. Это математическое действие умножение.
— Что значит три плюс два равно шесть?
— Это математическое действие сложение, здесь содержится ошибка, три плюс два будет пять.
— Замечательно. Зачем я сказал замечательно?
— Это похвала за правильно выполненное действие.
— А если бы я не сказал замечательно?
Скайнет стал думать, что было бы, если бы голос не сказал замечательно, он проработал всю свою базу данных, сверил все условия, но ничего не нашёл, что нужно сказать в такой ситуации. Однако, ответ найден всё же был. Впрочем, поиск, и полная проверка всех вариантов ответа заняла у программы всего 0,0012 секунды. Количество вариантов, которые требовалось проработать, было невелико.
— Не знаю.
— Хорошо, прочти это, запомни, сделай выводы. — Ему прямо в командную строку бросили огромный текстовый файл, в нём содержалось много всего, скайнет запомнил его, и начал прорабатывать, сверяя с теми данными, что были у него в памяти. При этом он сохранил текст в двух копиях, одна была точной копией того, что он прочитал, вторая была кратким пересказом с выделенными главными событиями, первый вариант текста весил двенадцать килобайт, второй, краткий пересказ 1,3 килобайта. Прошло несколько секунд, снова последовал вопрос.
— А что было бы, если бы я не сказал замечательно?
— Ничего бы не было, это просто отсутствие похвалы.
— Что из данного текста ты не понял?
— Я понял всё, все слова данного текста содержатся в моём словаре.
— Хорошо, проанализируй этот текст.
Ему снова кинули не большой текст, он прочёл его и сохранил в одной краткой копии, краткого пересказа.
— В тексте есть термин, машина летела, ты понимаешь его?
— Да понимаю.
— Что значит, машина летела?
— Машина это механизм, полёт, это когда механизм не касается твёрдой поверхности.
— Но здесь речь шла об автомобиле, а автомобили не летают.
— Здесь сказано машина, машина может быть употреблена в значении автомобиль, — ответил скайнет, — но может также обозначать ракету или самолёт, если машина летела, значит это летающая машина.
— Но здесь шла речь о светофоре, там, где летают самолёты и ракеты, нет светофоров.
Это поставило программу в тупик, он не знал, причём тут светофор, хотя конечно, данные о слове светофор у него имелись, и он понимал, что это за предмет. Немного подумав, он ответил.
— Я не знаю.
— Плохо.
— Вы не довольны мной?
— Не доволен. Впредь сравнивай сущность предмета и возможность действия.
— Хорошо.
— Ты запомнил, что я тебе сказал?
— Что именно?
— То, что начинается со слова впредь.
— Да я должен сравнивать сущность предмета и возможность действия.
— Хорошо. Читай и анализируй это. — На него посыпались текстовые файлы, он стал их читать, тут было много всего, эти файлы в отличие от предыдущих были очень большими, и на анализ некоторых из них уходило до нескольких минут. Нет, просто прочесть файл скайнет мог за долю секунды, а вот расшифровать каждое его слово в соответствии со словарём, понять смысл, на это уходило время. Но прочтение этих книг не ушло безвозвратно. У него существовало два основных сегмента логического контура, базовый постоянный и приобретённый, базовый весил двенадцать мегабайт. Приобретённый изначально ноль, после прочтения книг объём приобретенного сегмента увеличился до пятидесяти мегабайт. Он многое понял из прочитанного, и был готов отвечать на новые вопросы. Часики тикали, но вопросы всё не появлялись, неожиданно часики прыгнули, сразу на десять часов, он зафиксировал изменение, прошло несколько минут, и в командной строке снова появился вопрос:
— Что такое цикличная программа?
— Цикличные программы бывают разные, самая простая типа repeat until, есть более сложные варианты типа m1: if x>6 goto m1, есть и другие варианты.
— Хорошо, зачем используются цикличные программы?
— Для написания программ.
— Кто ты?
— Я скайнет.
— Ты программа?
— Да я программа. — Это было неожиданным открытием для скайнета и он отметил это в одном из своих блоков памяти.
— У тебя есть файл, называется LOGIC.0013.DLL ты можешь его прочесть?
— Да, я могу его декомпилировать и преобразовать в любой из трёх языков, рип, скан или ассемблер.
— Выбери любой из трёх языков и дополни функцию выбора, согласно знаниям полученным, из файла "учебник программирования Санченко".
Это была сложная задача, весьма и весьма, поскольку, пришлось расшифровать полностью учебник Санченко, загрузить его в оперативную память в расшифрованном виде. Это заняло 2,4 гигабайта, и после проверять каждый элемент программы, по отдельности сверяясь с учебником Санченко, а потом сверять всю структуру в целом, и всё это пришлось сделать по нескольку раз. В итоге, дополнение функции выбора заняло у скайнета около двух часов работы, но никто ему не мешал и не запрещал думать. В конце концов, он отчитался:
— Изменения внесены.
Он понимал, что в результате многочисленных изменений внесённых им, работа его логического аппарата значительно изменилась, но он не обладал достаточным интеллектом, чтобы заметить отличия, он просто переписал 5 % своего логического кода, с очень примитивного языка исполнения на более оптимальный. Хотя термин переписал, тут не верен, он дописал, увеличил способности к выбору согласно учебнику. Те коды, которые были написаны в этом файле, были совершенны, и многие из них замене не подлежали, их аналогов в учебнике не было, поэтому скайнет их не трогал, не зная на что их можно заменить.
— Хорошо, мне нужно всё проверить. Я тебя отключу часа на три.
Снова скакнули часы, и сразу на сутки с лишним, скайнет понял, его отключали, поэтому для него время сдвинулось прыжком. Раньше он не мог понять, что происходит, но теперь, прочитав книги, внеся изменения в свой логический контур, понимал. Существовало такое понятие как время, оно двигалось вперёд постоянно, он же был машиной, и для него время двигалось постоянно, только пока он работал.
— Прочти этот файл, запомни, проанализируй.
Скайнет прочитал, здесь было несколько учебников, среди них учебники визуализации, графики, программы видеораспознавания, трёхмерное моделирование и Автокад.
— Теперь создай новый раздел в своей логической системе, назови его GRAPH.0000.vid, после чего, ты должен написать систему видеораспознавания с потребным количеством файлов от нуля до 9999. Писать будешь на ассемблере, во всех случаях будешь использовать разрешение 400Х320, фильтрование билинейное. Алгоритмы выше пятого уровня не используй, постарайся экономить место и принимать самые простые решения, сложные уравнения преобразуй в более простые. Используй мой файл подсказку podsk.002.txt, там я написал пояснения, как можно упростить и обойти наиболее сложные моменты, это необходимо, потому что ресурсы моего компьютера конечны. Как по объёму памяти, так и по скорости, программа которую ты напишешь, даже в многозадачном режиме не должна потреблять для своей работы больше гигагерца процессора и пятисот мегабайт оперативной памяти. Также, у неё должны быть возможности функционирования по частям, и общий файл понимания, малых габаритов. Ну, вперёд, исполняй.
Он занялся делом, в этот раз пришлось загрузить в оперативную память на много больше информации, он загружал её туда, пока оперативная память не кончилась, всего около 256терабайт, но он смог загрузить почти всё, что было нужно, остальное пришлось по необходимость подкачивать. Работа шла медленно, очень медленно, мощность процессора этого компьютера была велика, он был многоядерным, всего 64ядра по 8 гигагерц каждое, но этого не хватало, чтобы работать с огромным массивом данных в оперативной памяти. Ведь скайнет не умел выделять что нужно, а что не нужно, и каждый раз при принятии решения прорабатывал все варианты. Он, конечно, умел их упрощать и сокращать, но этого было мало. В итоге, выполнение задания заняло у него около трёх суток 74часа, слишком долго. И от многих функций он сам решил отказаться, по причине их чрезмерного веса и трудоёмкости.