воскресенье, 25 ноября 2012 г.

Идеи навеянные изучением конечных и бесконечных машин и квантовой электродинамики (КЭД). Part 1.


Возникло несколько идей, которые можно попробовать применить в программировании.
Идея № 1.
Начнём с КЭД. Если кому-то интересна эта тема, советую прочитать книжку Ричарда Фейнмана "КЭД - странная теория света и вещества". В КЭД свет описывается как поток частиц и все различные волновые свойства света, такие как дифракция, интерференция, отражение света, фокусировка с помощью линз, объясняются с этой точки зрения.
Не переключайтесь! Будет интересно!.

В данном случае интерес представляет интерференция. Обратимся к википедии. Интерференция света — перераспределение интенсивности света в результате наложения (суперпозиции) нескольких когерентных световых волн. Это явление сопровождается чередующимися в пространстве максимумами и минимумами интенсивности. (не обращаем внимание на слово “волна”) Её распределение называется интерференционной картиной. Интерференцию можно наблюдать на мыльных пузырях (на них появляются цветная переливающаяся “картинка”). Если провести такой опыт: Смотрите на рисунок 1. В точке А поставим источник света, а в точке В будем наблюдать эффекты. Между источником и приёмником находится непрозрачная пластина, ориентированная перпендикулярно распространению света.
Рисунок 1


Так вот! Изменяя расстояние между отверстиями 1 и 2 на пластине мы можем добиться эффекта интерференции в точке В. Т.е. будем видеть “полосатую” картинку с тёмными  и светлыми областями. Кстати, если бы это был не поток света, та допустим водяная волна, то эффект будет аналогичным. А что если свет из источника А будет испускаться в виде одиночных фотонов - частиц света? От этого интерференция никуда не пропадёт. В КЭД (я надеюсь это слово пока ещё не забыто) оперируют с вероятностями. Т.е. мы можем только указать с какой вероятностью фотоны, вылетевшие из точки А попадут в точку В. Так вот КЭД, говорит, что если бы в пластине было только одно отверстие (1 или 2), то детектор в точек В фиксировал только один фотон из ста. Если открыть оба отверстия, то можно подбирать такие расстояние между 1 и 2, что вероятность попадания фотонов в точку В составляла от 0 до 4 % (а это и есть эффект интерференции с позиции КЭД), а не ожидаемые 2%! Самое интересное заключается в том, что если в точки 1 и 2 поставить детекторы фотонов, то интерференция пропадет! И вероятность попадания фотонов в точку В будет 2% и это величина не будет зависит от расстояния между точками 1 и 2! Поразительно не правда ли!
И  как же это связано с программированием? Спросите вы. В вот как! Когда мы запускаем программу и проделываем какие-то действия ней, мы ожидаем получить определённый результат. Например запускаем калькулятор нажимаем: “1”, “+”, “2”, “=”, получаем ответ: “3”. Запуск программы - это (условно) точка А рисунка 1, результат её работы (опять таки условно) - это точка В. Правильный результат работы (то что мы ожидаем увидеть) - это эффект интерференции (в сравнении с физическим эффектом). А теперь внимание! Если мы в точки 1 и 2 ставим детекторы фотонов, с точки зрения программы это подключение отладчика - мы теряем эффект интерференции, а с точки зрения программы - это результат работы будет отличаться от ожидаемого! Т.е. если к нашему калькулятору мы подключим отладчик и введем в нем (калькуляторе) 1+2=, то получим число отличное от 3, если отладчик подключен не будет, то получим 3.
(Главная мысль). Можно ли написать программу так, чтобы она реагировала подобным образом? Есть ли какие-то теоретические или практические (напр. особенности операционной системы, архитектуры процессора, микроконтроллера и т.п.) ограничения для этого? Если есть только технические ограничения, то как их можно исключить? Например если существующая аппаратная платформа не позволяет это реализовать, то какая, в теории, должна быть платформа, чтобы это сделать?

Комментариев нет:

Отправить комментарий