Шрифт:
Любой компьютер – это реализация (более или менее близкая) идеи «машины Тьюринга». Понятия «машина Тьюринга» и «алгоритм», «вычислимость» неразрывно связаны, определяются одно через другое. Само существование абстрактного «исполнителя», такого как машина Тьюринга, вселяет уверенность во всемогуществе человека. Действительно, любая (точнее, рекурсивная, что и есть практически любая) задача может быть решена, если достаточно ресурсов (памяти и времени). Возможно, завораживающая простота формулировок и спровоцировала разработку универсальных вычислительных машин (УМ; средств вычислительной техники, СВТ; персональных ЭВМ, ПЭВМ), которые частично (с конечной памятью) моделируют машину Тьюринга, давая нам «псевдонеограниченные» возможности и толкая на экстенсивный путь развития. Не хватает памяти? Не проблема – добавим. Не хватает времени? Увеличим тактовую частоту, количество ядер, виртуализируем ресурсы, наконец.
Эта позиция многие годы «паровозом» тащила за собой развитие информационных технологий. Емкость обычных локальных дисков, например, за два десятилетия выросла от десятков килобайт до сотен гигабайт, и сейчас уже измеряется терабайтами, а памяти так и не хватает. Тактовые частоты от килогерц достигли гигагерц, а производительности не хватает. Зато индустрия ИТ стала едва ли не определяющей современный уровень экономического развития. Гигантские суммы инвестиций – плата за технический прогресс и универсальность решений.
Универсальность (в смысле «вычислимости», без учета семантики) опасна и снижением защищенности. Действительно, если УМ выполняет любые программы, то, очевидно, она выполнит и вредоносную программу. Несмотря (!) на любой набор антивирусных программ. Действуя в рамках пусть универсальной, но одной формальной модели, мы неизбежно натолкнемся на ее неполноту – в полном соответствии с теоремой Геделя о неполноте.
В результате работы с функциями был сформулирован тезис Черча – Тьюринга, утверждавший, что любая функция, которая может быть вычислена физическим устройством, может быть вычислена машиной Тьюринга. Вычислена. И только. А не осмыслена. А надо бы осмыслить.
Говоря о вычислимости, классики «забыли» о семантике. Они думали именно о вычислимости, и здесь в их рассуждениях ошибок нет. Но если нас интересует не только «вычислимость», но и содержание процессов, данные о которых обрабатываются компьютерами, то оказывается, что расширенные трактовки становятся опасными. Не понимая сути, легко получить «два землекопа и две трети». Забыв о семантике, мы добились «сна разума».
Вот, например, принципы организации вычислительного процесса фон Неймана:
П1. Применение в ЭВМ двоичной системы счисления.
П2. Управление функционированием ЭВМ посредством последовательности команд (программ).
П3. Использование памяти компьютера для хранения и данных и программ. При этом данные и программы хранятся в единой памяти в одинаковом виде, и над командами можно выполнять те же действия, что и над данными.
П4. Последовательная нумерация (адресация) всех ячеек памяти ЭВМ и возможность произвольного доступа к любой ячейке памяти по ее адресу.
П5. Обеспечение условного перехода к любому участку кода в процессе выполнения программы, несмотря на то, что команды выполняются последовательно.
Где же здесь семантика?
Интерпретация (то есть привязка содержания к форме) полученных компьютерами чисел сегодня осуществляется программами. Или, как в случае технической задачи, которую решал непосредственно Тьюринг, – внешним экспертом. Задача «не потерять физический смысл» – основная задача программиста, создающего приложение. Но всегда существует предел сложности, выше которого проконтролировать семантику преобразований не в силах человека. В результате – складываем лампочки и апельсины, получаем лампольсины. Целое распадается на несвязанные числа, глядя на которые нельзя понять, где же форма, а где содержание.
Наука давно обратила внимание на эти проблемы. Конечно, в первую очередь это М. Мински, отец современных подходов к искусственному интеллекту, придумавший «фреймы для представления знаний» как нечто, объединяющее процедуры и данные для них, и Л. Заде, посвятивший свои усилия созданию нечетких множеств, где количественная оценка (функция принадлежности) объединяется с семантикой (континуум) в единую конструкцию – синглетон. К сожалению, эти работы пока не интегрированы в практику проектирования информационных систем, вычисления и их интерпретация остаются разорванными.
Я оцениваю монографию, научным редактором которой мне предложили выступить, как одну из первых попыток объединить форму и содержание в практическом аспекте, в реальных информационных системах.
Любая проблема может быть решена различными методами. Авторы предложили «сервисный» подход: семантическая интероперабельность как совокупность сервисов, сохраняющих семантику операций. Есть и другой подход: создать компьютер, позволяющий работать «с целым». Как с фреймами, или как с нечеткими множествами, или, вполне вероятно, как с нечеткими фреймами. Давно хочу этим заняться, – может, и получится. Может быть, прочитав эту книгу, и еще кто-то захочет подумать над семантическим компьютингом, – в свою очередь, буду рад объединить усилия.