Назад в библиотеку

Такой компьютер нам не нужен

Автор: В. М. Юровицкий
Источник: http://www.yur.ru/science/computer/TakoiKomputer.htm

Компьютер вошел в нашу жизнь столь глубоко, что его уже не выковырнешь.

И тем ни менее, до сих пор нет ясности по вопросу: а что собственно считает компьютер?

Компьютер считает числа. Но какие числа?

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

Но любой современный компьютер имеет еще так называемый флоат-процессор, процессор обработки чисел с плавающей запятой (ЧПЗ).

Математика не знает «чисел с плавающей запятой». Нет в  математике арифметики и алгебры «чисел с плавающей запятой». И для того, чтобы мы могли использовать математику с достаточной уверенностью, нам необходимо отождествить эти ЧПЗ с классическими числами, для которых математика разработала правила действий.

Кроме целых чисел математика знает следующие типы чисел, которые, как и целые, можно назвать фундаментальными числами математики. Это числа рациональные и числа действительные. Остальные типы чисел - комплексные, векторные и т.д. являются уже производными.

Иногда утверждается, что ЧПЗ есть действительные числа.

Это очень большая ошибка.

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

Но можно возразить, что, например, число 1.5 является действительным числом. На самом деле это не так. Истинно действительным числом было бы число 1.50000000000000… или сокращенно 1.5(0). (нуль в периоде). Число же 1.5 есть на самом деле рациональное число 15/10.

Таким образом, мы приходим к выводу, что так называемое ЧПЗ есть на самом деле дробно или смешанно-рациональные числа по основанию 2 и со знаменателем 2 n ( n - переменно), а процессор с плавающей запятой можно назвать процессором рациональных чисел (ПРЧ).

Итак, компьютер работает либо с целыми числами, либо с дробно-смешанными рациональными числами. Никаких действительных чисел он обрабатывать не может.

Но тут сразу же возникает проблема. Дело в том, что подавляющая часть всех результатов всех математических вычислений дробно-рациональных чисел дает либо действительное число, либо бесконечное (периодическое) рациональное число. Конечных дробно-рациональных чисел да еще с ограниченной разрядностью числителя бесконечно мало. А ведь обрабатывать нужно все функции и все выражения.

Таким образом, компьютер решает на самом деле задачу: найти дробное или смешанное рациональное число с заданным количеством разрядов (целой части плюс числителя), наиболее приближающееся к функции, как правило, действительному или бесконечному рациональному числу.

Вот такова вычислительная задача, поставленная перед компьютером его создателями. К сожалению, они до сих пор не смогли ее четко сформулировать, отсюда и понятие «число с плавающей запятой», которых математика никогда не знала и не видела. На самом деле компьютер работает с рациональными числами, обрабатывает рациональные числа и выдает результат в виде рациональных чисел.

Итак, мы, казалось бы, решили проблему компьютерной обработки и цели этой обработки - найти близкое к функции от рациональных чисел (как правило, действительному числу) рациональное число при определенных ресурсных ограничениях по разрядности. Это близкое к истинной функции рациональное число и называется в компьютеринге «приближенным числом». Другими словами, приближенное число в компьютеринге есть дробно или смешанно-рациональное число, в любом случае именно ЧИСЛО.

Все это было бы очень хорошо, если бы такая задача кому бы то ни было была нужна. Разве что для чистых математиков, которые составляют ничтожную долю пользователей компьютеров.

На самом деле перед вычислительной математикой стоит совершенно иная задача.

А стоит она так. Мы снимаем результаты измерения с помощью некоторых приборов или используем результаты измерения или расчетов, приведенные в таблицах, справочниках и т.д. Приборы имеют точность или погрешность. Поэтому результат измерения можно трактовать двумя путями. Первое - результат измерения есть МЕТРОЛОГИЧЕСКОЕ число, имеющее ДВЕ характеристики: номинал - рациональное число и метрологическая характеристика, определяющая точность, ошибку и т.д. Существует несколько способов описания метрологических характеристик, которые, в принципе, эквивалентны - точность, относительная или абсолютная ошибка, количество значащих разрядов и т.д.

Второй способ описания результата измерения - интервал. Результат измерения может быть описан как интервал, например, 123-127 В.

Отметим отличие метрологического интервала от математического. Интервал 123-127.5 и интервал 123-127 с точки зрения математики - различные интервалы. Но с точки зрения метрологии - это один и тот же интервал. В метрологии точность описания интервалов достаточно низкая, более того, используются ограниченный стандартизированный набор метрологических интервалов. Например, существует ограниченный стандартизированный ряд точностей измерительных приборов, например, 1%, 2%, 5%, 0.2% и т.д. Но нет приборов класса 4.5%, 5.68% и т.д. Для описания абсолютной ошибки зачастую используется вообще одноразрядное число.

Таким образом, метрологический интервал вовсе не есть математический интервал, а есть некоторая более размытая математическая конструкция. Поэтому метрологический интервал будем называть ИНТЕРВАЛОНОМ. Именно непонимание разницы между математическим интервалом и метрологическим интервалоном и привело к краху все попытки создать интервальное исчисление как рабочий вычислительный инструмент.

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

Но, с другой стороны, он не должен и быть слишком узкими. Если в одном случае из десяти реализация параметра выходит за его пределы, такое устройство становится мало надежным, аварийным и т.д. Таким образом, есть некоторая оптимальная ширина интервалона. Недостаток интервального исчисления состоит именно в широте даваемого интервала, так как он рассчитан на любые самые неблагоприятные сочетания параметров, которые могут случиться, к примеру, раз в тысячу лет.

В любой задаче имеется условие на разброс выходных параметров, определяемое из ее содержательного характера. Если вычислительный интервалон окажется больше этого допускаемого разброса, то надо ужесточать входные параметры, чтобы «втиснуть» вычислительный интервалон в эти выходные параметры. Например, нам нужно попасть баллистической ракетой с точностью 10 метров, а по вычислениям получается разброс пятьдесят. Значит, нам надо ставить более точные измерительные приборы и точнее контролировать входные параметры. Бывают и обратные задачи. Интервалонное исчисление создает новые методы анализа - метрологический анализ и новую профессию - математик-метролог, который контролирует и оценивает результаты расчетов.

В любом случае, практика ставит перед компьютерной вычислительной технологией не исчисление рациональных чисел, а исчисление интервалонов.

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

Действительно, в настоящее время в результате вычислений мы получаем какие-то рациональные числа. Но что делать с ними дальше?  Что, к примеру, делать с рациональным числом 123454564474846474/10000000000000, которое выдал нам в результате расчета железной балки компьютер? Строго говоря, непонятно. Правда, пользователи как-то приспособились извлекать из этих рациональных чисел полезную информацию. Но где гарантия, что они ее извлекают верно?  Существуют тысячи и сотни тысяч книг о том, как вычислять на компьютере, но подскажите хоть одну книгу, в которой рассказывалось бы, как пользоваться результатами компьютерных расчетов. А пользуются ими как бог на душу положит, что порою не знаешь - смеяться или злиться. Например, когда годовой бюджет страны представляют с точностью до рубля (компьютер подсчитал). И знаем ли мы, сколько происходит аварий, ошибок, катастроф именно из-за этой полной оторванности компьютерной технологии от запросов практики? Увы, не знаем. Хотя есть отдельные указания на конкретные аварии и катастрофы, вину в которых удалось полностью возложить на существующую технологию компьютерных вычислений. См. напр. http://www.yur.ru/science/computer/appro/monografia.htm, где приведен внушительный список аварий и катастроф с многомиллиардными убытками и человеческими жертвами, связанный именно к компьютерными вычислениями. Увы, в большинстве случаев мы не можем ничего сказать, так как у нас нет средств независимой проверки. Как знать, не был ли сам Чернобыль результатом компьютерной ошибки? А то, что существенная часть всех аварий с космической техникой связана с компьютерной технологией исчисления рациональных чисел - в этом просто нет ни малейших сомнений.

Приведем один из примеров типичной компьютерной ошибки, которую невозможно обнаружить. Для простоты предположим, что у нас трехразрядная десятичная сетка. Пусть в компьютере оказались два числа: 3.00 и 3.01. Понятно, что разница между ними на уровне погрешности измерения или расчета. А по программе они вычитаются, и мы получаем число 0.01, которое характеризует ошибку, является шумом, но никакого реального содержания не несет. А затем это число вовлекается в вычислительный оборот, входит в состав коэффициентов уравнения, в делитель и т.д. Можно представить, какой результат, в конце концов, мы получим, и какое отношение он будет иметь к реальности? И можем ли мы гарантировать, что ситуации, когда компьютер обрабатывает не содержательные параметры, а ошибки, шумы, достаточно редки? Важно отметить, что существующая компьютерная технология не позволяет отслеживать и обнаруживать такие ошибки, так как наше число-шум моментально будет преобразовано в 1.00*10-2 (число с плавающей запятой) и становится неотличимым от любых иных данных.

Компьютер стал в наше время главным источником различных ошибок, аварий и катастроф, он стал опасен для самой цивилизации. Да разве допустил бы правильно работающий компьютер, чтобы украинская ракета сбила пассажирский самолет за 300 километров от места стрельб?

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

На первый взгляд, даже непонятно, как перейти к этой задаче.

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

При этом для вычислений чаще всего использовались математические таблицы - логарифмов, тригонометрических функций и т.д. И стоит открыть такую таблицу, как мы сразу же поймем, что эти табличные данные есть именно интервалоны. Действительно, если в такой таблице имеется некоторое значение, например, 2.788, то его ошибка (интервал) составляет половину последнего значащего разряда, т.е. для данного числа ±0.0005. Но это отнюдь не строгий математический интервал, например, число 2.7885111 входит в этот интервалон, так как при округлении до четырех знаков получим то же самое значение. Эти интервалоны назывались приближенными числами. В результате в современной математике под приближенным числом понимаются два совершенно различных понятия. В компьютерной технике - это рациональное число, близкое к истинному значению некоторого действительного числа, в докомпьютерной математике - это интервалон, включающий в себя действительное число.

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

Вот лишь выдержка из этих «Правил», большинству нынешних пользователей компьютеров неизвестных :

«При сложении и вычитании приближенных чисел (интервалонов) в результате следует сохранять столько десятичных знаков, сколько их в приближенном данном с наименьшим числом десятичных знаков после знака дробности».

Например, если компьютеру дать задачу 1.5 + 0.000001, то он выдаст  в рамках исчисления рациональных чисел ответ 1.500001. Но эта же задача в интервалонном исчислении на основании «Правил приближенных вычислений» имеет совершенно иной ответ - 1.5. Мы видим, две вычислительные технологии дают совершенно различные результаты.

Но если разница в таком простейшем случае, то можно представить, какие различия в вычислениях получатся при большом их объеме.

Как известно, в течение столетий вручную с использованием именно интервалонного исчисления вычислялись расположения звезд и комет, строились водопроводы и мосты, и все работало, и кометы прибывали во время. Так что интервалонное исчисление показало свою высочайшую эффективность и надежность.

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

Но механически перенести существующее интервалонное исчисление («Правила приближенных вычислений») в компьютер невозможно. Ведь классическое интервалонное исчисление было в десятичной системе счисления, а компьютер работает в двоичной. Более того, само классическое интервалонное исчисление было разработано лишь частично, в основном по отношению к четырем арифметическим операциям - сложению, вычитанию, умножению и делению. На иные, даже элементарные функции, например, тригонометрические, логарифмические, возведение в степень и т.п. его не удалось распространить (причина в технических трудностях таких вычислений ручным способом).

Таким образом, стоит задача полной разработки интервалонного исчисления для современного компьютера.

Есть еще одна причина, почему разработка интервалонного исчисления столь неотложна. Дело в том, что все больше и больше используется автоматический ввод данных в компьютер с помощью дигитальных преобразователей. Эти входные бинарные данные уже являются бинарными интервалонами, имеющими точность половину последнего двоичного разряда. И вот эти уже готовые интервалонные данные, несущие и номинал, и точность, современная компьютерная технология портит, превращает в рациональные числа, тем самым полностью теряя всю метрологию. А после обработки в технологии рационального числа прикладываются гигантские усилия для определения точности и значимости результатов вычислений. Разве нелепо, сначала уничтожить имеющуюся информацию, а затем пытаться с гигантскими усилиями ее восстановить.

К решению задачи создания компьютерной интервалонной технологии наиболее близко подошел В.Юровицкий в своей «Аппроксиметике» (см.www.yur.ru/sciencecomputer).

Будущее за интервалонной вычислительной технологией. А компьютерная обработка на основе процессора рациональных чисел войдет в анналы недоразумений. И мы еще ужаснемся, как много было сделано ошибок, как много было аварий и катастроф из-за этого «чуда» - современного компьютера, который использовался неправильно и безграмотно. И это еще один пример того, что технический прогресс вполне может сочетаться с интеллектуальным регрессом, потому что компьютерная вычислительная технология есть безусловный интеллектуальный регресс по сравнению с классической ручной.

Кто первым освоит к интервалонную компьютерную технологию, тот  станет лидером современного мира, так как объем компьютерного бизнеса в мире составляет триллионы долларов.