Афиша

«« Апрель 2019 »»
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
222324
25
262728
2930     

True, false and undefined

Публикации -> Мир -> Наука, Понедельник, 21 февраля 2011 года

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

Что делает человек, когда ему ставят вопрос, требующий однозначного ответа "да" или "нет"? Обычно впадает в большую задумчивость, ибо сразу дать ответ такого порядка достаточно трудно. Он требует обобщения большого количества сведений. И, кстати говоря, человек частенько отвечает "не знаю". Компьютер же загнан в рамки определённой логики, ответить иначе чем "true" или "false" он не может. Тогда происходит ошибка, система "падает". Или, что гораздо хуже, берётся вариант умолчания, тогда получается на выходе ошибочный ответ.

Надо сказать, эти размышления носят чисто абстрактный характер и даже не претендуют на право истины, ответить на данный вопрос должен лишь специалист. Я же столкнулся с проблемой - необходимость при программировании писать вложенные условия на проверку существования переменной. Столкнулся с определёнными проблемами. Возможно моё суждение слишком ненаучно, но на мой взгляд логично информацию анализировать категориями true, false, undefined = 0, 1, 2 = правда, ложь, неопределённо. Женская логика? Конечно нет!

Опять же не берусь залезать в основы теории вычислительных машин, но в языках высокого уровня вполне даже можно использовать такую схему. Дело в том, что всё упирается в устройство микросхем и транзисторов. Двоичность здесь зависит именно от особенностей их работы. Однако же - данный принцип совершенно несправедливо переносится на логику роботов, программ, и, что даже смешно, человека!

Мой пример в самом начале на самом деле весьма показателен. Наиболее простая на первый взгляд альтернатива частенько гораздо более сложна и требует всестороннего обдумывания. А ведь бывает ситуация, когда ответ не может быть известен в принципе! И в этом случае при выполнении операции деления на ноль, гораздо логичнее выкинуть не ошибку, а специальную метку "undefined". Это из той же области, что человека спросят: "есть жизнь на Луне?". Ну не может при всём желании он дать ответ. Тут считаю нужным провести параллель - выполнение такой операции не вызывает обморочное состояние у человека, а значит человек мыслит как минимум этими тремя категориями. Вспомнить стоит и особое значение числа три - с древнейших, ещё дохристианских времён мы встречаем высокую значимость этого числа у народов мира. У русского писателя Сергея Лукьяненко, в одном из романов была описана интересная раса. Если отделить факт - для существа этой расы, деление на ноль вызывало мучительную боль. Это существо оказалось биокомпьютером. Этот пример мне кажется очень подходящим.

В качестве вывода... Задам вопрос. Почему же человек может спокойно давать ответ на вопросы подобные делению на ноль? А просто потому, что на глубоком уровне сознания у человека заложена возможность неопределённого ответа. Компьютер же надо учить в каждом отдельном случае - предусматривать обработчик ошибок.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru blogger.com liveinternet.ru livejournal.ru