Сегодняшняя статья будет короткой. И она не столько о науке или технике, сколько о ведении дискуссий. На примере подтасовки фактов и подмены понятий некоторыми "оппонентами" в комментариях к статьям.
Не думал, что тема о представлении чисел в ЭВМ, точнее, в ЭЦВМ (Электронная Цифровая Вычислительная Машина) будет всплывать снова и снова, хоть и рассмотрена уже подробно с разных сторон. Но увы... Недавно опубликованная статья
вызвала у одного из читателей немного странную реакцию. Я понимаю, что тонкости работы ЭВМ на самых глубоких уровнях не всем понятна и далеко не всех интересует. Но в статье говорилось, что все особенности представления чисел с ограниченным количеством разрядов верны и для самых обычных вычислений "на бумажке". Я не буду повторять уже описанное в той статье, но покажу ту самую "подмену понятий". Причем "оппонент", с его собственных слов, математик. А значит должен понимать суть вопроса.
Итак, любое число, что в ЭВМ, что на бумаге, записывается с конечным число разрядов, цифр. Это означает, что мы, в общем случае, не можем записать произвольное число абсолютно точно. Просто не все значащие цифры (разряды) числа поместятся в отведенное место. Иррациональные числа можно записать точно только с использованием бесконечного количества разрядов. Но даже рациональные числа могут быть бесконечными, например, результат деления 1 на 3. Обратите внимание, что это верно для любой системы счисления!
Здесь есть одна тонкость, которая связана с преобразованиями систем счисления. В ручных вычислениях и повседневной жизни мы пользуемся десятичной системой счисления, а в ЭВМ используется двоичная. И да, восьмеричная и шестнадцатиричная системы счисления это по сути та же самая двоичная, где несколько двоичных разрядов сгруппированы в одну 8- или 16-ричную цифру. Действительное число имеющее дробную часть может быть записано точно в одной системе счисления, но в другой системе счисления оказаться непредставимым точно.
Мы говорим именно о числах, числовом представлении произвольных значений, числовых значениях переменных. Именно с ними работает ЭВМ выполняя численные вычисления. Но ЭВМ может обрабатывать не только числа, она может обрабатывать любую информацию, если ее представить в числовом коде. Именно так машина работает с текстовой или графической информацией. В процессоре и памяти ЭВМ это все равно числа, только правила работы с ними другие. Семантика операций другая.
И мы можем рассматривать символьную строку как математическое выражение, причем записанное в самом общем виде. И мы можем работать с такими математическими выражениями именно как с символьными строками. Точно так же, как математик работает с этими выражениями в символической форме. Это все верно, но все таки математическое выражение это не число! Это именно символьное выражение (символическая запись). Числом это выражение станет в результате выполнения вычислений.
И вот такую подмену понятий, замену числа на математическое выражение, и предпринял "оппонент". Видимо будучи уверенным, что это останется незаметным. Он заявил, что можно записать число π (Пи), абсолютно точно использовав не просто конечное, но и малое количество разрядов. Вот так
4*arctg(1)
Вы меня извините, но это не запись числа! Это математическое выражение, символьная строка. И чтобы получить число надо вычислить значение этого выражения!
Вы еще не видите подмены понятий? Число 4 является целым и может быть представлено и в ЭВМ, и на бумаге, абсолютно точно, даже если его записать в виде действительного числа (с дробной частью). Таким же является число 1, в данном случае это величина угла в радианах. А вот arctg это функция, причем значение этой функции для угла 1 радиан будет действительным числом. Причем для его точной записи потребуется бесконечное количество разрядов в дробной части! И в ЭВМ вычисленное значение будет приближенным, как минимум, из-за ограниченной разрядности мантиссы в машинном представлении. И при ручных вычисления значение будет иметь конечное число разрядов, так как мы воспользуемся таблицей значений арктангенса, где количество цифр дробной части ограниченно.
Подмена понятий и подтасовка фактов обычно свидетельствуют о недостатке или отсутствии аргументов у оппонентов. Или о непонимании сути вопроса. Даже если "оппонент" никогда не занимался инженерными расчетами и не знает как устроена и работает ЭВМ, он все таки изучал математику в школе и выполнял численные вычисления "на бумаге", в тетради.
И существование программ вроде MathCad не отменяет ничего. Да, в MathCad можно записать выражения в символьном виде и выполнить преобразования и вычисления с ними. Вот только процессор все равно будет работать с числами, в которые эти выражения будет преобразованы для выполнения вычислений. Обратите внимание, не для выполнения символьных математических преобразований, а для выполнения вычислений! Может ли "математик" быть настолько далеким от реальности... Если честно, я очень сильно сомневаюсь. Тогда что это было? И зачем?
И еще один вопрос... А зачем все "оппоненту" нужно было начинать с хамства и далее хамство же приправлять? Все это больше напоминает толстый троллинг, чем мало-мальски серьезную дискуссию. Когда мои аргументы и объяснения полностью игнорируются, а аргументы "оппонента" или отсутствуют, или подменяют понятия. Причем таких подмен было несколько, просто я подробно разобрал лишь один случай. Отсюда и упоминания имен великих математиков былых времен, которые к сути обсуждаемого вопроса отношения не имеют. И другие постоянные попытки увести разговор в сторону.
Немного о дискуссиях и их ведении. И о Дзен и его авторах
- На Дзен пишут далеко не только "зеленые неофиты" и школьники "ничего не знающие и жаждущие лишь славы". И далеко не только авторы ищущие "легких денег". Здесь есть и серьезные авторы обладающие большими знаниями и опытом.
- Простота стиля изложения, наглядность, упрощенное рассмотрение вопросов, отнюдь не свидетельствуют о недостатке знаний у автора. Чаще всего это объясняется целевой аудиторией статьи и общей направленностью Дзен. Так в средней школе на уроках физики рассматривают соударения двух тел полностью игнорируя многие аспекты, например, неупругий характер взаимодействия (деформация) и возможные отклонения движения от линейного (вращение шара, как пример). Но это ведь не означает, что учитель физики обладает недостаточными знаниями.
- Невозможность объяснить сложное простым языком и наглядными аналогиями, чаще всего, но безусловно не всегда, свидетельствует о недостаточном понимании сути вопроса говорящим/пишущим. Это не касается учебников и научных книг. Попытка спрятаться за "заумной терминологией" и словами "это слишком сложно для ваших примитивных мозгов" просто свидетельствует о том, что человек знает, но не понимает. Часто, но всегда.
- Дискуссия от ругани отличается взаимным уважением и аргументированностью. Отказ от аргументации низводит дискуссию на уровень ругани. А переход на личности и отсутствие уважения низводит дискуссию на уровень базарной склоки. Дискуссия может быть очень жаркой, но оставаться дискуссией. И не обязательно стороны достигнут консенсуса, не так редко каждый остается при своем мнении. Дискуссия это поиск истины, а не перебранка.
Давайте все таки это учитывать. Давайте вести дискуссии. И, это необходимо, давайте не будем заниматься подтасовками и передергиваниями, не будем уводить разговор в сторону! Дискуссии и вопросы в комментариях могут не относиться к теме статьи, я не считаю это нарушением. А вот что абсолютно необходимо - уважительное отношение и отсутствие хамства!
Извините, но за пять с половиной лет существования канала немного накипело...