March 5th, 2006

My

О компутинге поговорим

Число - основа всей нашей цивилизации. За время ее существования понятие числа менялось неоднократно. В истории человечества можно выделить несколько числовых эпох:
1. Первая числовая эпоха - это эпоха натурального числа. Числа изображались на пальцах, камушках и т.д. Соответственно и происходили и вычисления. От той эпохи нам осталось в наследство русские счеты
и четки.
2. Следующая числовая эпоха уже связана с понятием дробного числа. Появляются запись чисел, например, римская. Появляется наука о числах - арифметика.
3. Следующая эпоха связана уже с позиционной системой счисления. Понятие числа раздваивается. В теоретической математике главным стало понятие действительного числа. Именно с этим числом связан расцвет классической математики, естественных наук и т.д. А для практических вычислений было разработано понятие приближенного числа
и чрезвычайно простые правила работы с ними - "Правила приближенных вычислений" (ППВ), которые можно найти в любом справочнике математических функций, впрочем, наверное можно поискать и в сети, например, у приснопамятного "Брадиса".
Именно вычислительная технология приближенного числа и приближенных вычислений позволила при весьма скромных вычислительных ресурсах ручного счета решить громадное количество задач - создать таблицы логарифмов, вычислить орбиты планет и т.д.
4. Но вот появилась четвертая вычислительная эпоха, эпоха компьютерных вычислений. И снова потребовалось изменить понятие числа. Приближенные числа были отброшены, и место их в компьютеринге заняли числа, которые так и не знают, как толком назвать. Некоторые называют их действительными, хотя, конечно, это неверно, так как позиционная запись действительного числа бесконечна. Есть и другие названия. Но, думается, правильное их название рациональные числа. Числа с ограниченной и заранее заданной разрядностью.
Старая вычислительная технология, основанная на "Правилах приближенных вычислений" была отброшена. Современный вычислитель как правило, даже не знает о ее существовании. Новая вычислительная технология как ее назвать - назовем флоп-технология.
Чтобы показать разницу между вычислительной технологией приближенного числа и флоп-технологией приведем вычисление по двум этим технологиям. Флоп-технологию будем осуществлять на калькуляторе WINDOWS.
Итак, простенькая задачка:
3.67 / 1.35.
Решаем на калькуляторе. Получаем:
2,7185185185185185185185185185185

Решаем по ППВ. Получаем 2.7
Как видим, результаты разительно отличаются. Кто не понял, почему именно так, просим познакомиться с "ППВ"
Какой же из них верен, сразу встает вопрос.
Спросим сначала, откуда взялись исходные числа? Все нецелые числа имеют своим истоником ИЗМЕРЕНИЕ. Есть несколько чисто математических чисел, например, е, пи, и обчелся. А все остальные получены из измерения или из каких-то чисто математических таблиц с определенной разрядности, но их тоже можно назвать приближенными.
Итак, если, к примеру, начальные числа означают реально измеренные напряжение и ток, то результат дает сопротивление.
Существуют ли измерения, с точностью 30 разрядов? Нет. Можем ли мы создать такой резистор? Нет. Можем ли мы использовать рациональное число из калькулятора в практической деятельности? Нет. Нужно ли оно нам вообще? Нет. Тогда что и зачем мы получили? Что мы вычислили?
Полученное число на основе ППВ нам понятно, ясно, мы можем его использовать на практике сразу.
В системе рациональных чисел числа 2.5 и 2.5000000 ОДИНАКОВЫ.
Но физики и инженеры знают, что это совершенно разные числа. Для получения первого числа может потребоваться какой-нибудь самый дешевенький прибор, а чтобы получить второе число могут потребоваться годы, а порой и десятилетия работ, и получение его может стоить миллионы, а то и миллиарды каких-то денег. Для получения лишнего разряда физики тратят иногда всю жизнь. А наш компьютер запросто раз и приписал двадцать разрядов.
Таким образом, компьютер решил НЕ НАШУ задачу. Он решил какую-то свою. А потом предлагает нам - разбирайтесь сами, что я тут вам насчитал.
Конечно, не сам компьютер, он запрограммирован людьми,но запрограммирован в рамках существующего понятия числа и действий над ними.
Что же получается? Что компьютер работает неверно, точнее, вычислительная идеология, используемая в компьютере, неверна? Увы, да.
Конечно, найдутся защитники, что мол лишняя точность не может повредить. Очень ошибочное мнение. Повредит и еще как. Пример, нам на основе этого вычисления нужно выбрать резистор в микросхеме. А где такой резистор мы возьмем? Не существует их. Давайте возьмем более "грубое". А какое? 2.7, 2.72, 2.718 или 2.7158 Ом. Понятно, что это ре6зисторы разных классов по точности, разница в стоимости может составить сотни и тысячи раз. А если мы неверно выбрали, то может отказать прибор.
Итак, что же делать?
Конечно, человек существо умное. Он даже из неверных данных может, используя интуицию и опыт, найти верное решение. Может? Но не всегда. А может и не найти. Тогда что? Ракета на взлете упадет. Или врежется в пассажирский самолет. Или рухнет крыша какого-нибудь аквапарка? Но мы ведь на самом совершенном компьютере считали, который триллионы операций в секунду совершает, больше, чем за всю свою жизнь совершил вычислений Непер или Лаплас. Но их вычисления до сих пор живы. А что с компьютерными? Главное, проверить их невозможно, Мы им доверяем полностьь, а они считают черт те что. И если что случится, то наверняка спишут на человеческий фактор, кто посмеет обвинить компьютер?
Или решим еще задачку.
10^10.
Компьтер бодро выдаст 1000000000.00000000000
Первая десятка пусть есть число с очень-очень большой точностью. А второе получено из измерений (а откуда еще). И значит на самом деле это интервал 10+-5, т.е. (9.5-10.5). И на самом деле результат есть число в интервале (3-30)*10^9. И если мы на основе нашего компьютерного вычисления что-то сделали,
например, реактор, то взрыва его нам не избежать.
Существующая компьютерная вычислительная технология, нынешнее понимание самого числа неверно, от предшествующей числовой эпохи ручных вычислений мы перешди в ДИКОСТЬ, от которой в ужас пришел бы Непер и Лаплас. И сколько на "совести" компьютеров (точнее, вычислительной безграмотности нынешней
вычислительной идеологии рационального компутинга) аварий, жертв и катастроф - никто не знает, но они есть и их наверняка много.
А завтра будет еще больше. Ведь при сравнительно небольшом количестве вычислений наша интуиция еще позволяет нам принимать верные решения. Но при резком усложнении вычислительных задач, при резком росте объема вычислений интуиция отказывает и будет отказывать все чаще. И все больше будет аварий и катастроф и просто неполадок, сбоев и черт те чего.
Такова наша "компьютерная цивилизация".
Продолжение следует.
Выскажите свое мнение.