Читать «Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии» онлайн - страница 137

Владимир Александрович Цай

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

Во втором случае программист решает задачу и составляет программу (последовательностей команд на алгоритмическом языке), выполняя которую, компьютер получает необходимый результат. Программист находит одну тропинку и представляет ее в виде программы – набора императивов. Алгоритмический способ представляет свободу. Конкретные решения легче представляются алгоритмами, а алгоритм всегда можно эффективно запрограммировать.

Противоречие между составлением программ и представлением знаний составляет основное противоречие между свободой и необходимостью в программировании и является основной причиной развития его методологии.

В настоящее время преобладает составление программ. Основные причины:

– архитектура компьютера до сих пор ориентирована на выполнение программ;

– программа всегда выдает результат намного быстрее, чем любой логический интерпретатор;

– программистов намного больше, чем инженеров знаний, так как для представления знаний требуется более высокий уровень, чем для составления программ;

– практическое использование логического подхода свелось к логическому программированию, основные особенности которого – рекурсия и управление бэктрекингом (сокращение пространства перебора) – сложны в освоении и, к сожалению, существенно снижают именно логическое содержание.

Тем не менее, будущее за балансом между логическим (представлением) и алгоритмическим (исполнением). Хороший программист старается максимально обобщить конкретный случай. С одной стороны, в алгоритмическом программировании доля декларативного постоянно увеличивается, что способствует ограничению свободы в составлении программ и устранению связанных с ней недостатков. Именно декларативность лежит в основе его эволюции, включающей в себя модульное, структурное, объектно-ориентированное, сервис-ориентированное программирование и т. д. С другой стороны, в логические представления вводятся алгоритмические элементы, сокращающие перебор вариантов во время вывода. Они нарушают логику, но позволяют создавать эффективные программы.

Вряд ли Бог стал бы составлять программы поведения для всех объектов – на Его уровне, наверное, можно описать общие законы существования Вселенной, включающие и правила поведения объектов, и принципы эволюции, и даже правила составления программ поведения конкретных объектов и т. д.

Вопрос: чем Бог отличается от программиста?

Ответ: Бог надеется, что он никогда не станет программистом.

Профессиональный опыт

Непрерывной математики я не понимал, и вся моя учеба была практически бесполезной с точки зрения получения полезных знаний – университет дал последний импринтинг интеллекту, без которого молодые люди, попадающие в армию вместо университета, просто тупеют.