Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии
Шрифт:
Так что программирование и программисты существовали и до появления компьютеров. Все, что может быть описано более или менее точно, требует для выполнения только навыков и становится рутиной. Рутинную работу может выполнить «тупой», но следующий инструкциям исполнитель. Таким исполнителем стал компьютер. Естественно, компьютер применяется там, где можно программировать деятельность, то есть практически везде:
– программы выполняют рутинную работу интеллекта человека (вычисления, которые могут быть регламентированы);
– регламент (учет, контроль и др.) управления предприятиями, государством;
– управление робото-техническими системами, начиная с бытовых приборов и кончая беспилотными космическими кораблями;
– развлечения (игры) и т. д. и т. п.
Основная цель глобального
Интеллект человека можно рассматривать как универсальную программу (комплекс программ), которая способна решать любые задачи в рамках своей компетенции. Последняя определяется возрастом, природными способностями, сферой деятельности и др. Интеллект человека работает так, как если бы в его основе лежала логика – на основании некоторых фактов и знаний он может с помощью логического правила выводить другие факты и знания, как это описано в предыдущей главе.
Важным качеством интеллекта является его способность к самопрограммированию. Этот процесс, в тривиальной форме, аналогичен тому, как у высокоорганизованного животного на часто повторяемые ситуации вырабатывается условный рефлекс – фактически, специальная программа.
Рассмотрим пример обыденной работы интеллекта. Предположим, некто, глядя в окно своего дома, видит дождь, но ему необходимо куда-то идти. Человек рассуждает приблизительно так: от дождя могут защитить плащ или зонт; сейчас лето – лучше взять зонт; зонт у меня есть, и он должен быть где-то в прихожей; если я не найду зонт, придется надеть плащ; плащ я оставил на вешалке в прихожей месяц назад; скорее всего, жена за это время убрала его в шкаф; в любом случае надо идти в прихожую и сначала попробовать найти зонт, а затем плащ; если нет ни того, ни другого, придется звонить жене и выслушивать упреки в невнимании к жизни семьи и неприспособленности к жизни вообще и что без нее он пропадет; если не звонить и промокнуть, упреков будет еще больше; но сначала надо хорошо поискать; а куда я вообще собрался – ах, да, надо не забыть книгу; тогда придется взять портфель, а когда я брал его с собой в последний раз; был семинар по программированию, на котором…; собственно, зачем мне туда идти – книга не поможет; дождь усиливается, зонт я наверняка потерял, а звонить жене только затем, чтобы испортить настроение, не стоит; лучше позвоню шефу и извинюсь.
Каждая мысль в этой последовательности, в свою очередь, есть результат вывода на основании более общих знаний. Например, человек должен знать, что такое дождь, что такое промокнуть, почему надо защищаться, и т. д. Все факты и знания, необходимые для поиска ответа, хранятся в памяти интеллекта.
Очевидно, если ситуация повторяется достаточно часто, то полученное несколько раз решение сохраняется в памяти и затем вызывается аналогично условному рефлексу без длинного вывода. У организованного человека «лето – дождь – зонт» срабатывает автоматически, не говоря о том, что портфель с книгой оказывается в руке сам собой. Перед шефом если и придется извиняться, то не за малодушие, а за настырность.
Под искусственным интеллектом будем понимать комплекс программ, моделирующий работу естественного интеллекта человека. По аналогии с естественным интеллектом, будем считать, что в основе искусственного интеллекта должна лежать некоторая логика. Тогда компьютер, используя механизмы вывода, может на основании введенных фактов и знаний выводить другие факты и знания (подобно тому, как это описано в предыдущем разделе).
Для того чтобы компьютер давал правильный ответ в приемлемое время, он должен обладать достаточными объемом памяти (количество хранимых фактов и знаний) и скоростью работы механизма вывода (количество выводов в единицу времени). Недостаток памяти и быстродействия можно компенсировать программированием. Очевидно, искусственный интеллект мог бы самопрограммироваться аналогично естественному, а именно:
Итак, современный компьютер интеллектом не обладает – он не имеет встроенной логики и не может самостоятельно выводить решения. Компьютер программируется человеком-программистом. Это означает, что вывод решений берет на себя программист, а компьютер получает готовые решения в виде программ и выполняет их по запросу.
Рассмотрим задачу поиска пути через лес, в котором пересекается множество дорог. Пусть каждому пересечению соответствует свой номер. Тогда путь через лес можно представить списком номеров, который начинается с номера входа в лес и заканчивается номером выхода из леса, а любые два последовательных номера связаны между собой. Другими словами, для того чтобы пройти через лес необходимо следовать от номера к номеру в соответствии с этим списком.
Например, если связи номеров сети из 99 пересечений представить множеством фактов типа:
связаны (1, 2),
связаны (2, 5),
…
связаны (9, 17),
……
связаны (81, 99),
то путь через лес можно представить списком номеров – (1, 2, 5, …, 9, 17, …, 81, 99).
Если человек не видит леса с высоты, то он будет искать путь, перебирая все варианты. Этот процесс можно описать следующим образом: найти путь из начального узла в конечный узел равносильно тому, что необходимо дойти до ближайшего доступного узла и затем найти путь из этого ближайшего узла до конечного. Естественно, если из этого ближайшего узла пути нет, то необходимо попробовать другой ближайший узел. Таким образом, перебирая все возможные варианты, можно найти путь через лес, если этот путь существует. Описанное знание можно представить логически:
найти_путь (Начало, Конец, Путь), если связаны (Начало,
Конец), Путь = Начало. Конец. найти_путь (Начало, Конец, Путь), если связаны (Начало,
Ближний) и найти_путь (Ближний, Конец, Путь).
Первое предложение фиксирует тот факт, что если Начало и Конец связаны, то их список и есть искомый Путь. В противном случае во втором предложении выбирается Ближний узел и уже от него строится Путь до узла Конец. Имея перечисленные выше факты и знания, можно задать запрос: найти_путь (1, 99, Путь) и получить соответствующий список номеров.
Если человек видит лес сверху, он может сразу построить путь и в готовом виде ввести его в компьютер. Это равносильно тому, что человек решает задачу и вводит решение в компьютер.
Итак, существует два подхода к программированию компьютера, составляющие основное противоречие программирования – составление программ и представление знаний.
В первом случае инженер знаний представляет знания о ситуации или предметной области в виде предложений на языке логики, используя которые, компьютер выводит необходимый результат. Инженер знаний пытается описать лес со всеми его тропинками в виде набора деклараций, а поиск тропинки, ведущей в необходимое место, оставляет компьютеру. Логический способ представляет необходимость. При таком подходе достигается максимальное обобщение, но время получения решения непредсказуемо.
Во втором случае программист решает задачу и составляет программу (последовательностей команд на алгоритмическом языке), выполняя которую, компьютер получает необходимый результат. Программист находит одну тропинку и представляет ее в виде программы – набора императивов. Алгоритмический способ представляет свободу. Конкретные решения легче представляются алгоритмами, а алгоритм всегда можно эффективно запрограммировать.
Противоречие между составлением программ и представлением знаний составляет основное противоречие между свободой и необходимостью в программировании и является основной причиной развития его методологии.